{"version":3,"sources":["shared/Literals.ts","shared/AppInsights.ts","history.ts","layouts/EsvdModal.tsx","layouts/MediaLayout.tsx","api/agent.ts","accessControls/rbac-rules.ts","providers/AuthProvider.tsx","accessControls/Can.tsx","images/esvd-newlogo.webp","components/home/EcosystemLogo.tsx","layouts/NavBar.tsx","layouts/NavBarMobile.tsx","actions/valuationsActions.ts","actions/biomeV2EcosystemV2EcozoneAction.ts","actions/ecosystemServiceActions.ts","actions/countryActions.ts","actions/protectionStatusActions.ts","actions/valuationMethodActions.ts","actions/continentActions.ts","actions/cicesActions.ts","actions/seeaActions.ts","actions/ecosystemConditionActions.ts","actions/others/currencyActions.ts","actions/others/scaleOfStudySiteActions.ts","shared/ExceptionHandling.ts","shared/InputInline.tsx","EsvdFunctions.ts","shared/SelectDropdown.tsx","shared/InputInlineNumber.tsx","shared/CheckboxInline.tsx","components/studies/ValuationEntry.tsx","shared/LoadingOverlay.tsx","providers/ValuationsProvider.tsx","components/studies/ValuationList.tsx","components/studies/Valuations.tsx","components/studies/StudyList.tsx","actions/studyActions.ts","components/studies/StudyEntry.tsx","components/editStudy/StudyFilterPanel.tsx","components/editStudy/EditorReadMe.tsx","components/editStudy/EditorStudyBoard.tsx","components/logins/LoginsContainer.tsx","components/logins/ConfirmEmail.tsx","shared/Input.tsx","components/logins/ForgotPassword.tsx","components/logins/UsernameOrEmail.tsx","components/logins/Logout.tsx","shared/SingleSelect.tsx","components/logins/Signup.tsx","components/home/EcosystemValuationDB.tsx","providers/ReferenceInfoProvider.tsx","components/home/TermsOfUse.tsx","components/home/AboutESVD.tsx","components/home/Contact.tsx","components/home/TechnicalImplementation.tsx","components/home/EcosystemImage.tsx","providers/ActiveMenuProvider.tsx","components/home/Contribute.tsx","images/nunzio-guerrera-LA8kstntJhI-unsplash.jpg","images/robin-canfield-JDlF_d9BDAQ-unsplash.jpg","components/home/HomePage.tsx","providers/FilterQueryProvider.tsx","components/esvdPanel/EsvdPagination.tsx","components/generalDownloads/FilterQueryButton.tsx","components/generalDownloads/FilterQueryList.tsx","components/generalDownloads/FilterQueriesDownloadsBoard.tsx","components/settings/VersionEntry.tsx","components/settings/CitationEntry.tsx","layouts/Modals.tsx","components/settings/DeleteValuation.tsx","components/settings/SettingsMain.tsx","components/logins/ResetPassword.tsx","components/logins/ResetPasswordWrapper.tsx","components/useraccounts/UserAdditionalInfo.tsx","components/useraccounts/AccountDetails.tsx","shared/WelcomeHeader.tsx","components/useraccounts/UserProfileDetails.tsx","components/useraccounts/UserProfile.tsx","tests/data.ts","components/generalDownloads/UserProfilesButton.tsx","components/generalDownloads/UserProfileTable.tsx","components/generalDownloads/UserProfileDownloadsBoard.tsx","components/studies/StudiesReadMe.tsx","components/studies/StudyBoard.tsx","components/studies/StudyBoardWrapper.tsx","shared/DropZone.tsx","components/uploadDatasets/InvalidItems.tsx","providers/UploadInfoProvider.tsx","components/uploadDatasets/ValidateDataset.tsx","providers/VslGridHubProvider.tsx","components/uploadDatasets/EsvdUploadDataset.tsx","components/uploadDatasets/UploadDatasetBoard.tsx","models/columnTemplate.ts","components/esvdPanel/MakePDF.ts","images/esvd_logo_large.jpg","shared/FilterCheck.ts","models/EsvdQueryFilters.ts","layouts/ModalWithContext.tsx","providers/ListsProvider.tsx","components/esvdPanel/EsvdExportEsvd.tsx","shared/NoFilterGrid.tsx","providers/EsvdValuationProvider.tsx","components/esvdStats/SummaryStatsButton.tsx","components/esvdPanel/EsvdActionsPanel.tsx","actions/esvdActions.ts","components/esvdStats/EsvdStatisticsPanel.tsx","components/esvdPanel/EsvdGetStartedPanel.tsx","components/esvdPanel/EsvdTable.tsx","components/esvdPanel/EsvdTablePanel.tsx","hooks/SidebarHook.tsx","components/esvdPanel/EsvdMapMarker.tsx","components/esvdPanel/EsvdMaps.tsx","components/esvdPanel/EsvdMapPanel.tsx","components/esvdPanel/EsvdDataWrapper.tsx","components/esvdPanel/EsvdFilterPanel.tsx","components/esvdStats/processStatsData.ts","components/esvdStats/StatsPopup.tsx","shared/MyPopup.tsx","components/esvdStats/StatisticsBiomePanel.tsx","components/esvdStats/StatisticsEcozonePanel.tsx","components/esvdPanel/EsvdDatabaseHome.tsx","providers/VttBiomeProvider.tsx","providers/VttProvider.tsx","components/vtts/vttbiomes/VttBiomeList.tsx","providers/VttSubBiomeProvider.tsx","providers/VttVariableProvider.tsx","providers/VttVariableDetailMapProvider.tsx","components/vtts/vttbiomes/VttBiomeEntry.tsx","components/vtts/vttsubbiomes/VttSubBiomeEntry.tsx","components/vtts/vttsubbiomes/VttSubBiomeList.tsx","components/vtts/vttvariables/VttVariableEntry.tsx","components/vtts/vttvariables/VttVariableList.tsx","components/vtts/vttbiomesDetails/VttBiomeDetails.tsx","components/vtts/vttbiomesDetails/VttVariableDetailEntry.tsx","components/vtts/VttBase.tsx","components/vtts/VttHome.tsx","components/shared-components/VTTCalculationDropdown.tsx","components/shared-components/VTTCalculationEntryHeader.tsx","components/vtts/vttsCalculations/VttValueCalculationEntry.tsx","components/vtts/vttsCalculations/VttCalculateBase.tsx","components/vtts/vttsCalculations/VttCalculateReadMePanel.tsx","components/vtts/vttsCalculations/VttCalculateHome.tsx","providers/VslProvider.tsx","components/vsls/VslExport.tsx","components/vsls/VslActionsPanel.tsx","components/vsls/VslFilterPanel.tsx","components/vsls/MultiSelectEditor.tsx","components/vsls/SingleSelectEditor.tsx","components/vsls/SingleSelectRenderer.tsx","components/vsls/MultiSelectCodesRenderer.tsx","components/vsls/SingleSelectCodesRenderer.tsx","components/vsls/VslTable.tsx","components/vsls/VslOnlineAdmins.tsx","components/vsls/VslDatabaseHome.tsx","components/vslUploadDatasets/InvalidItems.tsx","components/vslUploadDatasets/ValidateDataset.tsx","components/vslUploadDatasets/VslUploadDataset.tsx","components/vslUploadDatasets/VslUploadDatasetBoard.tsx","shared/InputTextArea.tsx","components/studySuggest/SuggestEntry.tsx","components/studySuggest/SuggestReadMePanel.tsx","components/vsls/MultiSelectRenderer.tsx","components/vslsForPublicView/VslPublicTable.tsx","components/studySuggest/SuggestionBoard.tsx","providers/Esvdv2Provider.tsx","components/esvdStats/BiomeEcozoneStatReady.tsx","components/esvdStats/StatsReadyBoard.tsx","components/apisKeyGenerator/ApiGenerator.tsx","components/apisKeyGenerator/ApiGeneratorBoard.tsx","providers/UserProvider.tsx","components/earlybirds/EarlyBirdSelection.tsx","components/earlybirds/EarlyBirdListing.tsx","components/earlybirds/EarlyBirdBoard.tsx","components/logins/Login.tsx","components/logins/LoginWithCode.tsx","components/logins/LoginWrapper.tsx","components/esvdReadonlyPanel/EsvdGetStartedPanel.tsx","components/esvdReadonlyPanel/EsvdReadonlyMaps.tsx","components/esvdReadonlyPanel/EsvdReadonlyTable.tsx","components/esvdReadonlyPanel/EsvdTableReadonlyPanel.tsx","components/esvdReadonlyPanel/EsvdDataReadonlyWrapper.tsx","components/esvdReadonlyPanel/EsvdDatabaseHomeReadonly.tsx","layouts/Route.tsx","shared/FeedbackData.ts","components/feedbacks/FeedbackForm.tsx","components/feedbacks/FeedbackButton.tsx","layouts/BaseContainersLayout.tsx","layouts/MainPage.tsx","hooks/ModalHook.tsx","layouts/AppInsightsProvider.tsx","layouts/App.tsx","reportWebVitals.ts","actions/esvdStatsActions.ts","reducers/esvds/esvdIsLoadingReducer.ts","reducers/esvds/esvdActivePageReducer.ts","reducers/esvds/esvdAppendedDataReducer.ts","reducers/esvds/esvdReducer.ts","reducers/esvds/esvdBackgroundIsLoadingReducer.ts","reducers/ecosystemServiceReducer.ts","reducers/esvds/esvdAppendedFilteredDataReducer.ts","reducers/accountReducer.ts","actions/biomeEcosystemAction.ts","reducers/biomeEcosystemsReducer.ts","reducers/esvdStats/esvdStatsReducer.ts","reducers/countryReducer.ts","reducers/protectionStatusReducer.ts","reducers/continentsReducer.ts","reducers/studyReducer.ts","reducers/studyValuationReducer.ts","reducers/valuationMethodReducer.ts","actions/others/beneficiaryUnitActions.ts","reducers/others/beneficiaryUnitReducer.ts","reducers/others/currencyReducer.ts","reducers/others/scaleOfStudySiteReducer.ts","actions/others/siteConditionActions.ts","reducers/others/siteConditionReducer.ts","actions/others/studyLocationActions.ts","reducers/others/studyLocationReducer.ts","actions/others/temporalUnitActions.ts","reducers/others/temporalUnitReducer.ts","actions/others/typeOfBeneficiaryActions.ts","reducers/others/typeOfBeneficiaryReducer.ts","actions/others/unitOfMeasureActions.ts","reducers/others/unitOfMeasureReducer.ts","actions/others/valuedChangeActions.ts","reducers/others/valuedChangeReducer.ts","reducers/cicesReducer.ts","reducers/ecosystemConditionsReducer.ts","actions/filterQueryActions.ts","reducers/filterQueryReducer.ts","reducers/biomev2ecosystemv2ecozonesReducer.ts","reducers/seeaReducer.ts","reducers/index.ts","reducers/esvds/esvdCountReducer.ts","store.ts","index.tsx"],"names":["FILTERS","countries","countriesCodes","protectionStatuses","protectionStatusesCodes","continents","continentsCodes","valuationMethods","valuationMethodsCodes","ecosystemServices","ecosystemServicesCodes","seeas","seeasCodes","ciceses","cicesesCodes","biomeV2EcosystemV2Ecozones","biomeV2EcosystemV2EcozonesCodes","freeText","IS_DESCEND_DEFAULT","FETCH_USER","ISREFRESH","SET_USER_TOKEN","RESET_STATE","APP_INSIGHT_INST_KEY","process","APPINSIGHTS_INSTRUMENTATIONKEY","COMPANY_EMAIL","defaultSort","key","LIMIT","EMAIL_REGEX","PASSWORD","resources","home","name","path","userProfile","esvd","study","suggestStudy","manageStudy","studyEditor","studySearch","downloads","filterqueriesdownloads","userprofiledownloads","settings","vtt","label","vttCalculations","uploads","vsl","vsluploads","admin","statsReady","apikeySetup","earlybird","studyValuations","actions","userRole","initStudy","id","studyId","title","authors","reference","isNew","yearOfPublication","isPublished","initReferenceInfo","month","Date","getMonth","year","getFullYear","version","subversion","referenceText","createdOn","initValuation","valueId","initSuggestStudy","description","studyType","attachment","StudyProps","StudySuggestionProps","studyPublishStatus","ValuationProps","ItemLabels","biome","biomeCode","teeb","teebCode","Int_Per_Hectare_Per_Year","InclExcl","sectorsList","value","purposeOfAccessList","EsvdColumnMapping","ExcelHeaders","esvds","columns","biomes","biomesV2","teebs","cices","valuationmethods","protectionstatus","ecosystemcondition","currencies","valueMeasure","valueChange","VslColumnMapping","VslExcelHeaders","vsls","biomesv2","IncludedInEsvdOptions","RepoIncludedOptions","browserHistory","createBrowserHistory","basename","reactPlugin","ReactPlugin","appInsights","ApplicationInsights","config","instrumentationKey","extensions","extensionConfig","identifier","history","TOGGLE_MODAL","initModalData","icon","header","content","isOpen","arguments","length","undefined","EsvdModal","Component","render","this","props","modalData","_jsx","Modal","className","size","centered","open","onClose","openModal","onOpen","children","_jsxs","Content","style","height","Header","onClick","connect","state","modalProp","async","dispatch","type","payload","closeModal","MediaContext","createContext","MediaLayout","createMedia","breakpoints","mobile","tablet","computer","MediaProvider","_ref","screenType","setScreenType","useState","useEffect","window","innerWidth","Provider","Qs","require","CryptoJS","axios","defaults","baseURL","interceptors","request","use","token","sessionStorage","getItem","AES","decrypt","toString","enc","Utf8","headers","Authorization","concat","maxContentLength","Infinity","maxBodyLength","response","error","Promise","reject","status","data","statusText","includes","responseBody","requests","get","url","options","then","post","body","postFile","put","delete","obj","Apikey","getApiKey","Account","current","login","user","verifyuser","usernameOrEmail","params","paramsSerializer","stringify","GenerateOtp","loginwithotp","logout","signup","forgotpassword","email","resendconfirmationlink","username","resetpassword","confirmemail","useredit","userslist","filters","usersCount","earlybirdusers","nonearlybirdusers","addearlybirduser","removeearlybirduser","Esvds","list","esvdCount","esvdTotalCount","EsvdMaps","esvdMapList","markerDetails","valueids","totalMapListCount","mapListCount","Countries","details","create","country","update","ProtectionStatuses","Continents","continent","ValuationMethods","valuationmethod","EcosystemServices","ecosystemservice","SEEAs","BiomeEcosystems","biomeecosystem","BiomeV2EcosystemV2Ecozones","biomev2ecosystemv2ecozone","toggleStatsReady","EsvdStats","summaryStats","Studies","userList","StudyValutations","studyid","studyValuationApi","ScaleOfStudySites","item","StudyLocations","UnitsOfMeasure","SiteConditions","ValuedChanges","Currencies","TemporalUnits","BeneficiaryUnits","TypeOfBeneficiaries","Ciceses","EcosystemConditions","SuggestStudies","FilterQueries","totalCount","query","ReferenceInfos","UploadLists","uploadJson","uploadDatasetFile","uploadFile","uploadComplete","GetLastUploadStatistics","VttBiomes","paging","listExclude","toggleShowForUserCalculations","vttbiomeid","showForUserCalculations","vttbiome","count","VttSubBiomes","vttsubbiome","VttVariables","listUnattachedVariables","biomeid","selectedVariableid","listExclusiveUnattachedVariables","vttvariable","VttVariableDetailMaps","detailid","vttvariabledetailmap","VslUploadLists","Vsls","listCount","vslUpdate","FeedbackMessage","send","ac","AccessControl","grant","execute","on","extend","AuthContext","React","AuthProvider","setUser","userLoginMode","setUserLoginMode","isRefresh","setIsRefresh","buildResourcePermissionsList","resourceAccess","Object","values","permission","access","can","role","sync","push","resource","granted","forced","isTimeout","agent","setToken","setItem","token_enc","encrypt","removeItem","getToken","password","varpass","us","message","loginWithOtp","updateUser","user1","getUsers","userQuery","sort","a","b","registrationDate","getUsersCount","fetchCurrentUser","code","Error","verifyUsername","useAuth","auth","useContext","Can","location","pathname","_user$resourceAccess","yes","no","find","x","Redirect","to","checkResourcePermission","EcosystemLogo","src","esvd_logo","alt","width","backgroundSize","outline","border","paddingTop","NavBar","profileRef","createRef","active","setActive","handleItemClick","Segment","marginBottom","inverted","Menu","fixed","borderless","Container","fluid","Item","as","Link","_Fragment","action","position","Dropdown","ref","text","Icon","paddingLeft","displayName","userName","Divider","NavBarMobile","handleSidebarHide","onSidebarOpened","sidebarOpened","renderNav","Sidebar","animation","onHide","vertical","visible","Fragment","left","VALUATION_CREATE","VALUATION_EDIT","VALUATION_DELETE","VALUATION_FETCH","USER_VALUATIONS_FETCH","BIOMEV2_ECOSYSTEMV2S_FETCH","fetchBiomeV2EcosystemV2Ecozones","ECOSYSTEMSERVICES_FETCH","fetchEcosystemServices","COUNTRIES_FETCH","fetchCountries","PROTECTION_STATUSES_FETCH","fetchProtectionStatuses","VALUATION_METHODS_FETCH","fetchValuationMethods","CONTINENTS_FETCH","fetchContinents","CICESES_FETCH","fetchCiceses","SEEAS_FETCH","fetchSEEAs","ECOSYSTEM_CONDITIONS_FETCH","fetchEcosystemConditions","CURRENCIES_FETCH","fetchCurrencies","SCALEOFSTUDYSITES_FETCH","fetchScaleOfStudySites","ErrorHandler","EsvdInputInline","field","meta","useField","Form","Field","touched","Grid","Row","Column","Input","labelPosition","placeholder","disabled","readOnly","readonly","transparent","Label","paddingRight","lineHeight","basic","color","padding","display","displayBodyRowsObjects","columnsDetails","bodyArray","esvdObject","entries","isMulti","maxLen","maxlen","specs","forEach","spec","baseColumnProperty","baseColumn","propertyValue","len","flatten","flattened","i","cell","dbField","separator","caption","isSimple","toLocaleLowerCase","standardValueFormat","isDate","moment","format","bodyRowsFlattened","isHide","propSplit","split","extractLen","removeBadChar","changeInclExclTo1and0","propValue","replace","setMultiColumnMaxLenFlattened","filter","_ref3","_ref4","maxLenFlattened","setDisplayMultiColumnMaxLens","_ref5","_ref6","evsLens","map","e","Math","max","displayHeaderTransform","sortable","headerArray","headObject","dataKey","resizable","align","formatESForDropdown","ess","mains","isSub","sortOrder","parseInt","masterList","es","subList","subs","startsWith","index","isDisabled","formatCicesForDropdown","sections","section","divisions","division","groups","group","classs","buildTreeTypeQueryList","selected","Set","add","has","Array","from","summaryStatsRowsObjects","setMultiColumnMaxLensSummaryStats","_ref7","_ref8","NumberFormat","number","decimalPlaces","currencySymbol","num","Number","toFixed","handleFileChosen","resolve","fileReader","FileReader","onload","result","onerror","readAsDataURL","file","formatBiomeForDropdown","includeMainInOptions","nums1","nums2","formatSeeasDropdown","items","parentId","hideCode","getMonthNameShort","monthNumber","date","setMonth","toLocaleString","getMonthName","getMonthList","months","stValue","formatShowOnlyBiomeForDropdown","formatEnableOnlyEcosystemForDropdown","formatVttCalculation","results","toExponential","Option","morePadding","components","repeat","colourStyles","valueContainer","base","fontSize","control","option","cursor","multiValue","styles","_ref2","multiValueLabel","multiValueRemove","SelectDropdown","form","setFieldValue","getRef","isClearable","onChange","optionsTransform","Select","closeMenuOnSelect","sel","isArray","defaultValue","f","SelectDrop","input","NumberInputInline","min","CheckboxInline","Checkbox","checked","ValuationEntry","constructor","super","biomeEcosystemsRef","biomeV2EcosystemV2EcozonesRef","ecosystemServiceRef","countriesRef","valuationMethodRef","protectionStatusRef","continentRef","ecosystemConditionRef","scaleOfStudySiteRef","currencyIdRef","cicesRef","seeaRef","isInclExclRef","resetValuation","setSelectedBiomeEcosystems","setState","selectedBiomeEcosystems","setSelectedBiomeV2EcosystemV2Ecozones","selectedBiomeV2EcosystemV2Ecozones","setSelectedEcosystemServices","selectedEcosystemServices","setSelectedCiceses","selectedCiceses","setSelectedSeeas","selectedSeeas","setSelectedCountries","selectedCountries","setSelectedProtectionStatusId","selectedProtectionStatusId","setSelectedScaleOfStudySiteId","selectedScaleOfStudySiteId","setSelectedValuationMethods","selectedValuationMethods","renderContent","selectedValuation","isLoading","isInclExcl","selectedContinentId","selectedEcosystemConditionId","selectedCurrencyId","biomeEcosystems","ecosystemConditions","scaleOfStudySites","Formik","enableReinitialize","validationSchema","initialValues","onSubmit","setErrors","handleFormSubmit","handleChange","handleSubmit","isValid","isSubmitting","dirty","errors","autoComplete","component","ErrorMessage","borderColor","isValidEntry","marginTop","backgroundColor","saveValuation","setLoading","inclExcl","res","catch","loading","protectionStatusId","continentId","scaleOfStudySiteId","currencyId","ecosystemConditionId","selectedScaleOfStudySiteCode","scaleOfStudySiteCode","trim","Yup","nullable","positive","test","val","valuation","LoadingOverlay","Dimmer","Loader","LoadingButton","semanticColor","ValuationsContext","ValuationsProvider","studies","setStudies","setStudyValuations","currentStudy","setCurrentStudy","currentValuation","setCurrentValuation","isEditor","setIsEditor","isLoadingValuations","setIsLoadingValuations","getStudyValuations","deleteValuation","getUserStudies","sorted","resetStudies","useValuations","valuations","ValuationList","selectedStudy","overflowY","List","celled","selection","animated","Description","studyLocation","ecosystemDescription","ecosystemServiceDescription","valuedChange","renderSimpleList","floated","Button","cloned","assign","maxVal","cloneValuation","codedDate","ButtonStates","Valuations","showList","isEntry","buttonState","getSelectedValuation","fetchStudyValuation","resetForm","toggleList","addNew","initVal","setAsCurrentValuation","renderShowListButton","Card","minHeight","borderTop","onSelectionChanged","onClone","clone","componentDidMount","componentDidUpdate","prevProp","prevState","clearValuationUi","onClearValuationUi","fetchStudyValuations","StudyList","headerText","s","STUDY_CREATE","STUDY_EDIT","STUDY_DELETE","STUDY_FETCH","STUDIES_FETCH","IS_EDITOR","IS_LOADING_STUDIES","SuggestEntry","isCompleteRef","isComplete","hasError","showPassword","clearStudy","renderButtons","marginRight","saveStudy","onStudyUpdated","fontWeight","transform","required","StudyFilterPanel","setFreeText","target","clearFilter","fetchAllStudies","resetSearch","EditorReadMe","Media","MediaContextProvider","EditorStudyBoard","setSelectedStudy","at","StudyEntry","greaterThan","stackable","LoginsContainer","ConfirmEmail","setIsLoading","isConfirmed","setIsConfirmed","setError","isError","setIsError","subheadText","setsubheadText","queryString","fromEntries","URLSearchParams","search","textAlign","EsvdInput","autocomplete","autoFocus","matches","ForgotPassword","isSent","setisSent","UsernameOrEmail","um","borderRadius","Logout","ResetState","MySelect","MyDropdown","organization","sector","sectorOther","when","is","toLowerCase","purposeOfAccess","purposeOfAccessOther","confirmpassword","oneOf","Signup","isSigned","setisSigned","selectedSector","setselectedSector","selectedPurpose","setselectedPurpose","sectorOtherShow","setsectorOtherShow","purposeOtherShow","setpurposeOtherShow","setSector","setPurposeOfAccess","EcosystemValuationDB","setEsvdTotalcount","totalesvdCount","href","rel","ReferenceInfoContext","ReferenceInfoProvider","referenceInfos","currentInfo","setCurrentInfo","getCurrentVersionInfo","ver","toUpperCase","err","saveReferenceInfo","referenceInfo","useReferenceInfo","TermsOfUse","AboutESVD","Contact","TechnicalImplementation","EcosystemImage","imageItem","ActiveMenuContext","ActiveMenuProvider","activeItem","setActiveItem","useActiveMenu","activeMenu","Contribute","HomePage","firstHomeImage","stretched","secondHomeImage","FilterQueryContext","FilterQueryProvider","processFilters","fq","arr","filterObject","JSON","parse","filterString","_","mapKeys","getFilterQueries","filterQuery","getFilterQueriesJSON","dat","resultsCount","join","getTotalCount","useFilterQuery","EsvdPagination","currentPage","setActivePage","totalPages","boundaryRange","siblingRange","showFirstAndLastNav","showEllipsis","showPreviousAndNextNav","Pagination","activePage","onPageChange","ellipsisItem","firstItem","lastItem","prevItem","nextItem","FilterQueryButton","csvLinkRef","useRef","csvData","setCsvData","filename","setFilename","link","click","downloadFilterQueries","Progress","CSVLink","FilterQueryList","setCurrentPage","totalFilterQueries","setTotalFilterQueries","filterQueries","setFilterQueries","filtersCnt","paddingBottom","offset","FilterQueriesDownloadsBoard","typeError","VersionEntry","formikRef","monthId","setMonthId","clearReferenceInfo","_formikRef$current","fromCitation","innerRef","CitationEntry","myModalReducer","MyModal","opened","setOpened","setConfirmation","needsAction","useReducer","whiteSpace","Actions","negative","valuationid","DeleteValuation","formiRef","valuationToDelete","isModalConfirmed","setIsModalConfirmed","delItem","setDelItem","isActionNeeded","setisActionNeeded","modalMessage","setModalMessage","clearForm","_formiRef$current","_valuation$valuationi","SettingsMain","ResetPassword","isReset","setIsReset","userid","ResetPasswordWrapper","UserAdditionalInfo","setSectorOtherShow","setPurposeOtherShow","setSelectedSector","setSelectedPurpose","AccountDetails","setIsEdit","WelcomeHeader","titleText","logoText","accentText","showButton","UserProfileDetails","UserProfile","isEdit","margin","userProfileGridHeaderColumns","dataType","UserProfilesButton","sortBy","sortColumn","isDescend","order","numberOfSignIn","lastSignInDate","downloadUserProfiles","UserProfileTable","users","setUsers","setisDescend","setisLoading","setsortBy","setBodyArray","factor","sortReactTableData","onColumnSort","marginLeft","AutoResizer","Table","rowHeight","UserProfileDownloadsBoard","StudiesReadMe","StudyBoard","StudyBoardWrapper","DropZoneField","onSelectionChange","accept","customHeight","files","Dropzone","multiple","maxFiles","minSize","maxSize","onDrop","acceptedFiles","fl","getRootProps","getInputProps","verticalAlign","removeFile","preventDefault","EsvdDropZoneField","InvalidItems","isFatal","withJoin","keys","invalidEntries","delimiter","UploadInfoContext","UploadInfoProvider","uploading","setUploading","setFileName","esvdInserted","uploadedEsvdCount","esvdUpdated","useUploadInfo","uploadInfo","ValidateDataset","setData","setIsValidData","isValidData","duplicateValues","setDuplicateValues","noEsvdMasterSheet","setNoEsvdMasterSheet","invalidCodedDateEntries","setInvalidCodedDateEntries","invalidReviewdDateEntries","setInvalidReviewdDateEntries","noStudyIdEntries","setNoStudyIdEntries","noValueIdEntries","setNoValueIdEntries","invalidLatLngEntries","setInvalidLatLngEntries","dupBiomesCodes","setDupBiomesCodes","dupTEEBsCodes","setDupTEEBsCodes","dupTEEBsubCodes","setDupTEEBsubCodes","dupCICESCodes","setDupCICESCodes","dupEcosystemsCodes","setDupEcosystemsCodes","dupEcozonesCodes","setDupEcozonesCodes","dupSeeasCodes","setDupSeeasCodes","labelColumnErrors","setLabelColumnErrors","resetDups","reader","rABS","readAsBinaryString","bstr","wb","XLSX","cellText","cellDates","esvdSheetName","SheetNames","labelColumnError","excelSheetHeaders","codeSheetHeaders","k","ch","srch","errorColumns","checkColumnHeaders","mapped","sheetName","ws","Sheets","sheet_to_json","blankrows","raw","defval","dateNF","ValueID","StudyID","row","getESVDJson","duplicateValueIds","invalidCodedDate","invalidReviewedDate","noValueId","noStudyId","duplicateBiomesCodes","duplicateEcosystemsCodes","duplicateEcozonesCodes","duplicateTEEBsCodes","duplicateTEEBsubCodes","duplicateCICESCodes","duplicateSeeasCodes","invalidLatLng","rowIndex","valueid","biomecode","ecozonecode","codes","ecosystemcode","checkDuplicateCodes","codeddate","revieweddate","latitude","longitude","jsonDataset","temp","m","studybibliographies","scaleofstudysitecode","scaleofstudysitetext","scaleOfstudysites","ecosystemconditions","getExcelTabJson","biomesecosystems","biomesecozones","uploaddata","readAsArrayBuffer","d","newObj","expectedHeaders","firstObjectKeys","txt","rowItem","keyName","dupCodesHolder","renderDataReport","Meta","Statistic","Value","VslGridHubContext","VslGridHubProvider","vslGridHub","setVslGridHub","createHubConnection","signalR","withUrl","accessTokenFactory","withAutomaticReconnect","build","vh","start","invoke","stop","notifyVslHubClients","useVslGridHub","vslH","UploadStatus","EsvdUploadDataset","esvdCurrentUploadInfo","setEsvdCurrentUploadInfo","esvdLastUploadInfo","setEsvdLastUploadInfo","progress","setProgress","setFile","uploadStatus","setUploadStatus","uploadStats","_esvdCurrentUploadInf","uploadedSuccessfully","pro","floor","evt","stopPropagation","dataTransfer","finally","visibility","uploadFailed","navigator","clipboard","writeText","percent","success","dateUploaded","extra","primary","UploadDatasetBoard","ColumnTemplate","studyCode","esvdFlatBiomeV2s","esvdFlatBiomeV2Codes","esvdFlatEcozones","esvdFlatEcozoneCodes","ecozones","esvdFlatEcosystemV2s","esvdFlatEcosystemV2Codes","ecosystems","esvdFlatEcosystemServiceCodes","esvdFlatEcosystemSubServiceCodes","esvdFlatCICESCodes","esvdFlatSEEAMain","esvdFlatCountries","esvdFlatCountryCodes","countryCodes","scaleOfStudySite","protectionStatus","siteArea","siteAreaUnit","siteAreaInHectares","siteLength","siteLengthUnit","siteLengthKm","siteCondition","ecosystemCondition","esvdFlatValuationMethodCodes","esvdFlatValueMeasureCodes","originalValue","currency","valueYear","spatialUnit","temporalUnit","presentValueYear","presentValueDiscountRate","beneficiaryUnit","numberOfBeneficiaries","typeOfBeneficiary","intPerHectarePerYear","notes","secondaryDataSources","reviewed","inclExclText","SummaryStatsColumnTemplate","DisplayColumnTemplate","esvdFlatEcosystemServices","esvdFlatCICESs","esvdFlatValuationMethods","MakePDF","currentVersion","pdf","jsPDF","currentYPos","startX","endX","internal","pageSize","getWidth","logo","Image","addEventListener","img","logoHeight","addImage","setDrawColor","setLineWidth","line","spaceBetweenHeaderContent","setFontSize","splitText","splitTextToSize","save","close","filterCheck","esvdQueryFilters","isTeeb","defaultEsvdParams","limit","saved","ContextModalReducer","displayType","ModalContext","ModalWithContextProvider","closeOnDimmerClick","basicModal","customActions4BasicModal","actionContent","modalState","modalDispatcher","useModalWithContext","ListsContext","ListsProvider","setList","loadLists","sEEAs","all","lis","getEsvdv2","useLists","lists","downloadPdf","EsvdExportEsvd","ButtonText","esvdQueryParams","isFull","saveQueryParams","setprogress","isDownloadCitation","setisDownloadCitation","setcsvData","checkedState","fetchFilteredEsvds","qryfil","pages","ceil","nextOffset","progres","handleClick","filta","r","cols","enclosingCharacter","NoVslFilterGrid","conetent","NoFilterGrid","EsvdValuationContext","EsvdValuationProvider","setEsvds","esvdsAllCols","studyEsvds","setStudyEsvds","setEsvdCount","setEsvdTotalCount","esvdMapCount","setEsvdMapCount","esvdTotalMapCount","setEsvdTotalMapCount","esvdsSummaryStats","setEsvdsSummaryStats","setEsvdQueryParams","queryParamsForSave","setQueryParamsForSave","showMap","setShowMap","isMapBusy","setIsMapBusy","getEsvds","heads","allCols","clearEsvds","setMapData","mapData","getEsvdMapCount","getEsvdsCount","getEsvdTotalCount","getEsvdMapData","getEsvdTotalMapCount","getEsvdMapMarkerData","valueIds","getPageData","isFreshFilter","page","updateQueryParams","getEsvdsSummaryStats","statsResultData","getStudyEsvds","useEsvdValuation","esvdValuation","SummaryStatsButton","exclusions","setExclusions","modalTitle","msg","startbiomes","included","bio","reduce","uniqueIncluded","exclusionIds","p","excs","n","checkStats","EsvdActionsPanel","ESVDS_FETCH","ESVDS_FETCH_APPEND","RESET_ESVDS","RESET_ESVDS_APPENDED_FILTERED_DATA","ESVDS_IS_LOADING","ESVDS_IS_BACKGROUND_LOADING","ESVDS_ACTIVE_PAGE","ESVDS_FETCH_FILTERED_APPEND","resetEsvds","EsvdStatisticsPanel","EsvdGetStartedPanel","EsvdTable","setIsDescend","setSort","EsvdTablePanel","SidebarContext","SidebarProvider","setVisible","triggerElementId","setTriggerElementId","sidebarContent","setSidebarContent","openSidebar","elementId","closeSidebar","toggleSidebar","changeContent","useSidebar","modal","EsvdMapMarker","markerData","showInfoWindow","setShowInfoWindow","handleMouseClick","esv","MarkerF","onMouseOver","handleMouseOver","onMouseOut","InfoWindowF","locations","lat","lng","memo","containerStyle","center","isLoaded","useJsApiLoader","googleMapsApiKey","mapDats","setMapDats","groupDups","marks","mark","pos","maks","markers","onUnmount","useCallback","mks","GoogleMap","mapContainerStyle","zoom","minZoom","maxZoom","restriction","latLngBounds","north","south","west","east","SidebarPanel","Pushable","Pusher","EsvdMapPanel","EsvdDataWrapper","EsvdFilterPanel","continentsRef","ecosystemServicesRef","biomeV2Ref","seeasRef","queryFilters","setQueryFilters","getActivePageData","setSelectedItem","resetSortColumn","setEsvdQueryFilters","treefyClassFilters","select","clearValue","Group","processStatsData","getRowColumnHeaders","rows","col","headersProp","sortingProp","xx","parseFloat","trimOutliers","quartiles","sortedData","slice","getMedian","mid","Q2","lowerHalf","upperHalf","Q1","Q3","calculateQuartiles","log10","iqrv","calculateStats","measure","stats","mean","median","stdDev","countNum","dataValidForStats","onlyFigures","nums","findMedian","usePopulation","acc","sqrt","findStandardDeviation","StatsPopup","compact","TableBody","TableRow","TableCell","MyPopup","Popup","dangerouslySetInnerHTML","__html","trigger","StatisticsBiomePanel","statsBody","setStatsBody","statsHeader","setStatsHeader","totalValidValuationsUsed","setTotalValidValuationsUsed","biomeStats","validValuationsUsed","buildTableCells","cnt","countValid","Cell","vals","stat","wide","overflow","maxHeight","definition","striped","singleLine","HeaderCell","Body","StatisticsEcozonePanel","ecozoneStats","EsvdDatabaseHome","EsvdDatabaseHomeWrapper","VttBiomeContext","VttBiomeProvider","getVttBiomes","pageParams","excludeFalseShowForUserCalculations","vtts","getVttBiomeCount","createVttBiome","vttBiome","getVttBiome","updateVttBiome","deleteVttBiome","useVttBiome","ViewHandles","VttContext","VttProvider","currentView","setCurrentView","view","useVtt","VttBiomeList","vttBiomesCnt","setVttBiomesCnt","vttBiomes","setVttBiomes","selectable","constantValue","lowerBoundFactor","upperBoundFactor","minWidth","VttSubBiomeContext","VttSubBiomeProvider","getVttSubBiomes","getVttSubBiomeCount","createVttSubBiome","vttSubBiome","getVttSubBiome","updateVttSubBiome","deleteVttSubBiome","useVttSubBiome","VttVariableContext","VttVariableProvider","getVttVariables","getVttVariableCount","createVttVariable","vttVariable","getVttVariable","updateVttVariable","deleteVttVariable","getUnattahcedVttVariables","useVttVariable","VttVariableDetailMapContext","VttVariableDetailMapProvider","getVttVariableDetailMaps","vttBiomeid","createVttVariableDetailMap","getVttVariableDetailMap","updateVttVariableDetailMap","vttVariableDetailMap","deleteVttVariableDetailMap","useVttVariableDetailMap","defaultBiome","VttBiomeEntry","setVttBiome","setChecked","vt","encType","VttSubBiomeEntry","setVttSubBiome","subbiomeid","VttSubBiomeList","vttSubBiomesCnt","setVttSubBiomesCnt","vttSubBiomes","setVttSubBiomes","subbiome","VttVariableEntry","setVttVariable","variableid","VttVariableList","vttVariablesCnt","setVttVariablesCnt","vttVariables","setVttVariables","variable","VttBiomeDetails","vttVariableDetailMaps","setVttVariableDetailMaps","checkstate","toggleShow","vttdetail","vttVariableId","coefficient","sampleMean","isTransformation","remarksText","vttBiomeId","vttSubBiomeId","VttVariableDetailEntry","vttVariableDetail","setVttVariableDetail","selectedVariable","setSelectedVariable","selectedSubbiome","setSelectedSubbiome","setIsTransformation","vttvar","vttsub","VttBase","setHeaderText","tabular","VttBaseWrapper","VttHome","VttHomeWrapper","VTTCalculationDropdown","VTTCalculationFourColumnHeader","col1","col2","col3","col4","VariableInput","checkLabel","remarks","VttValueCalculationEntry","subBiomesForDropdown","setSubBiomesForDropdown","selectedBiomeid","setSelectedBiomeid","selectedBiome","setSelectedBiome","selectedVttVariablesOfSubbiomes","setSelectedVttVariablesOfSubbiomes","freeVariables","setFreeVariables","setInitialValues","validateSchema","setValidateSchema","ecosystemServiceValue","setEcosystemServiceValue","ecosystemServiceValueLb","setEcosystemServiceValueLb","ecosystemServiceValueUb","setEcosystemServiceValueUb","inputCheckedList","setInputCheckedList","defaultFields","setDefaultFields","generateFieldValidations","vttdets","subbiomesIds","subbiomeOptions","it","ob","freeVar","fieldsForValidation","fieldName","vardat","validate","init","selectedSubbiomeVttVariableRemarks","setSelectedSubbiomeVttVariableRemarks","remrks","rks","set","de","biomeVarEntries","ent","vttvarid","varid","subid","varMap","summation","vdMap","log","exp","lowerB","upperB","FieldArray","arrayHelpers","_vvtdetmap","vvtdetmap","VttCalculateBase","VttCalculateBaseWrapper","VttCalculateReadMePanel","VttCalculateHome","VttCalculateHomeWrapper","VslContext","VslProvider","vslsCount","setvslsCount","vslData","setVslData","vslFilter","setVslFilters","gridEditSyncLock","gridEditSycnLockDispatch","vslGridEditSyncLockReducer","gridLockState","gridStateDispatch","vslGridEditStatusReducer","lock","selectedRowState","selectedRowDispatch","vslSelectedRowReducer","rowInfo","hotTableInstance","setHotTableInstance","getVsls","editVsl","resetVslData","addVsl","deleteStudy","useVsl","VslExport","exportPlugin","getPlugin","downloadFile","columnHeaders","VslActionsPanel","rowIsReadonly","setRowIsReadonly","locked","alter","cellEditInfo","actionType","VslFilterPanel","dropdownOptions","biomeRef","includedEsvdRef","vslQFilter","setVslQFilters","includedEsvd","MultiSelectEditor","BaseEditorComponent","mainElementRef","setValue","callback","cellProperties","getValue","args","codeCell","ree","v","hotInstance","setSourceDataAtCell","prepare","prop","td","tdPosition","getBoundingClientRect","pageXOffset","top","pageYOffset","stopMousedownPropagation","formatter","zIndex","onMouseDown","SingleSelectEditor","jso","ids","isSearchable","SingleSelectRenderer","formatValue","MultiSelectCodesRenderer","sp","SingleSelectCodesRenderer","registerAllModules","VslTable","vslFilters","filteredRowsCnt","setFilteredRowsCnt","hotRef","column","dataValue","queryResult","setCellMeta","float","HotTable","colHeaders","rowHeaders","rowHeights","manualRowResize","manualColumnResize","multiColumnSorting","autoColumnSize","allowInsertRow","wordWrap","renderAllRows","dropdownMenu","licenseKey","hiddenColumns","afterChange","changes","source","prevValue","nextValue","physicalRow","toPhysicalRow","rowData","getSourceDataAtRow","colToProp","afterSelection","afterFilter","conditionsStack","countRows","HotColumn","columnSorting","forceNumeric","VslOnlineAdmins","onlineAdminsOnEditCount","setOnlineAdminsOnEditCount","adminCount","VslDatabaseHome","setDropdownOptions","ItemsLoading","isLoad","dropdownLists","isload","VslDatabaseHomeWrapper","duplicateStudyIds","setDuplicateStudyIds","dupBiomesV2Codes","setDupBiomesV2Codes","dupEcosystemsV2Codes","setDupEcosystemsV2Codes","duplicateBiomesV2Codes","duplicateEcosystemsV2Codes","rowindex","biomeV2code","ecosystemV2code","VslUploadDataset","handleFile","fil","VslUploadDatasetBoard","EsvdTextArea","isSending","setisSending","setattachment","suggestedStudy","setsuggestedStudy","resetStudy","resetSuggestStudy","AllFiles","contentType","readAllFiles","showModal","SuggestReadMePanel","overflowWrap","MultiSelectRenderer","VslPublicTable","make_read_only","alignment","undo","redo","SuggestionBoard","SuggestionBoardWrapper","Esvdv2Context","Esvdv2Provider","ItemContent","isCheck","setIsCheck","ItemHeaderContent","BiomeEcozoneStatReady","useEsvdv2","datTree","t","j","StatsReadyReadMe","StatsReadyBoard","wrapper","initEmail","subject","toEmail","ApiGenerator","apiKeys","setApiKeys","readyToSend","setReadyToSend","api","ApiGeneratorBoard","ApiGeneratorBoardWrapper","UserContext","UserProvider","getEarlyBirdUsers","userQueryParams","getNonEarlyBirdUsers","addUserToEarlybird","removeUserToEarlybird","useUsers","EarlyBirdSelection","formDispatcher","ebUsers","setEbUsers","ebUsersCount","setEbUsersCount","totalRecords","searchUsers","divided","console","addUser","EarlyBirdSelectionWrapper","setRefresh","EarlyBirdListing","refresh","toggleModal","removeFromEarlyBird","EarlyBirdBoard","EarlyBirdBoardwrapper","Login","match","setIsSent","handleResendLink","returnUrl","LoginWithCode","regenerateCode","LoginWrapper","userExists","isUsername","EsvdReadonlyMaps","setValuations","setTimeout","EsvdReadonlyMapsPanel","EsvdReadonlyTable","processEsvds","EsvdTableReadonlyPanel","EsvdDataReadonlyWrapper","EsvdDatabaseHomeReadonly","EsvdDatabaseHomeReadonlyWrapper","Routes","Switch","Route","exact","_ref9","_ref10","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","_ref17","feedbackCsvHeaders","feedbackdata","howSatisfied","ideasforEsvd","useforEsvd","issue","issueLoadingTables","issueLoadingMapResult","issueLoadingSumStart","issueDownload","issueLoggin","issueOther","otherChecked","issueOtherText","additionalFeatures","RatingField","helpers","Rating","onRate","rating","TextInputField","CheckboxField","checkState","FeedbackForm","checkStateOther","setCheckStateOther","submitSuccess","setSubmitSuccess","objToCSV","messageBody","frmData","processIssueOptions","isIssue","attachmentString","marginBlockStart","maxRating","FeedbackFormWrapper","transitions","FeedbackButton","fontsize","setFontsize","numOfTimes","duration","setvisible","shake","setShake","shakeCount","setShakeCount","reintervalIds","setreintervalIds","subfrequecncy","mainFrequecncy","triggerShake","startTrigger","intervalId","setInterval","clearInterval","Transition","circular","MobileContainer","handleToggle","dimmed","pointing","secondary","CookieConsent","buttonText","buttonClasses","cookieName","background","buttonStyle","expires","debug","DesktopContainer","hideFixedMenu","showFixedMenu","Visibility","once","onBottomPassed","onBottomPassedReverse","ResponsiveContainer","BaseContainersLayout","MainPage","isTimedOut","setIsTimedOut","idleTimerRef","IdleTimer","element","document","onActive","onIdle","reset","onAction","debounce","timeout","ModalProvider","isShowing","setIsShowing","setContent","ModalDialog","main","AppInsightsContext","AppInsightsProvider","loadAppInsights","ReactGA","initialize","listen","pageview","withAITracking","App","useModal","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ESVDS_FETCH_COUNT","ESVDS_FETCH_FULL_COUNT","RESET_FILTERED_ESVDS","ESVDS_FETCH_FILTERED_COUNT","ESVD_SUMMARY_STATS","esvdIsLoadingReducer","esvdActivePageReducer","esvdAppendedDataReducer","esvdReducer","esvdBackgroundIsLoadingReducer","ecosystemServiceReducer","esvdAppendedFilteredDataReducer","accountReducer","BIOME_ECOSYSTEMS_FETCH","biomeEcosystemsReducer","esvdSummaryStatsReducer","countryReducer","protectionStatusReducer","continentsReducer","studiesReducer","omit","studyValuationReducer","valuationMethodReducer","BENEFICIARYUNITS_FETCH","beneficiaryUnitReducer","currencyReducer","scaleOfStudySiteReducer","SITECONDITIONS_FETCH","siteConditionReducer","STUDYLOCATIONS_FETCH","studyLocationReducer","TEMPORALUNITS_FETCH","temporalUnitReducer","TYPEOFBENEFICIARIES_FETCH","typeOfBeneficiaryReducer","UNITSOFMEASURE_FETCH","unitOfMeasureReducer","VALUEDCHANGES_FETCH","valuedChangeReducer","cicesReducer","ecosystemConditionsReducer","FILTER_QUERY_CREATE","FILTER_QUERY_DELETE","FILTER_QUERY_FETCH","FILTER_QUERIES_FETCH","filterQueryReducer","biomev2ecosystemv2ecozonesReducer","seeaReducer","appReducer","combineReducers","esvdFullCount","esvdIsLoading","esvdActivePage","esvdAppendedData","esvdBackgroundIsLoading","esvdAppendedFilteredData","esvdSummaryStats","beneficiaryUnits","siteConditions","studyLocations","temporalUnits","typeOfBeneficiaries","unitsOfMeasure","valuedChanges","esvdFilteredCount","isLoadingStudies","rootReducer","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","reducers","applyMiddleware","reduxThunk","ReactDOM","StrictMode","Router","getElementById"],"mappings":"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","file":"static/js/main.3b2fabf4.chunk.js","sourcesContent":["import { DropdownItemProps } from \"semantic-ui-react\";\r\nimport { ReferenceInfo } from \"../models/ReferenceInfo\";\r\nimport { Study } from \"../models/Study\";\r\nimport { SuggestStudy } from \"../models/SuggestStudy\";\r\nimport { User } from \"../models/user\";\r\nexport const screenBreakpoints = {\r\n mobile: 0,\r\n tablet: 800,\r\n computer: 1024,\r\n};\r\n\r\nexport const FILTERS = {\r\n countries: \"countries\",\r\n countriesCodes:\"countriesCodes\",\r\n protectionStatuses: \"protectionStatuses\",\r\n protectionStatusesCodes: \"protectionStatusesCodes\",\r\n continents: \"continents\",\r\n continentsCodes: \"continentsCodes\",\r\n valuationMethods: \"valuationMethods\",\r\n valuationMethodsCodes: \"valuationMethodsCodes\",\r\n ecosystemServices: \"ecosystemServices\",\r\n ecosystemServicesCodes: \"ecosystemServicesCodes\",\r\n seeas: \"seeas\",\r\n seeasCodes: \"seeasCodes\",\r\n ciceses: \"ciceses\",\r\n cicesesCodes: \"cicesesCodes\",\r\n biomeV2EcosystemV2Ecozones: \"biomeV2EcosystemV2Ecozones\",\r\n biomeV2EcosystemV2EcozonesCodes: \"biomeV2EcosystemV2EcozonesCodes\",\r\n freeText: \"freeText\",\r\n}\r\n\r\nexport const IS_DESCEND_DEFAULT = true;\r\nexport const FETCH_USER = \"FETCH_USER\";\r\nexport const ISREFRESH = \"ISREFRESH\";\r\nexport const SET_USER_TOKEN = \"SET_USER_TOKEN\";\r\nexport const SET_APP_LOADED = \"SET_APP_LOADED\";\r\nexport const RESET_LINK_SENT = \"RESET_LINK_SENT\";\r\nexport const RESET_STATE = \"RESET_STATE\";\r\n\r\nexport const GA_NO: string = process.env.REACT_APP_GA_TRACKING_NO || \"\";\r\nexport const APP_INSIGHT_INST_KEY: string =\r\n process.env.APPINSIGHTS_INSTRUMENTATIONKEY || \"\";\r\nexport const COMPANY_EMAIL = \"esvd@fsd.nl\";\r\nexport const defaultSort = { key: \"studyId\" };\r\nexport const LIMIT = 100;\r\nexport const LOGIN_COOKIE_NAME = \"esvdlogged\";\r\n// export const LOGIN_IDLE_TIMEOUT = 1000 * 5 * 1; //5 seconds timeout for testing;\r\nexport const LOGIN_IDLE_TIMEOUT = 1000 * 30 * 60; //30 mins timeout;\r\nexport const EMAIL_REGEX = {\r\n exp: /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/gm,\r\n msg: \"Invalid email format!\",\r\n};\r\nexport const PASSWORD = {\r\n min_len: 5,\r\n msg: \"Password must be minimun of 5 characters.\",\r\n};\r\nexport const PASSWORD_REGEX = {\r\n exp: /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,30}/gm,\r\n msg: \"Password must be minimum of 8 and max of 30 characters. It should contain a number, an uppercase letter, a lowercase letter and $!@\",\r\n};\r\nexport const YEAR_REGEX = {\r\n exp: /(?=.*\\d).{4}/gm,\r\n msg: \"Year is incorrect\",\r\n};\r\nexport const resources = {\r\n home: { name: \"Home\", path: \"/\" },\r\n userProfile: { name: \"UserProfile\", path: \"/userprofile\" },\r\n esvd: { name: \"Database\", path: \"/esvd\" },\r\n study: { name: \"Add Data\", path: \"/entries\" },\r\n suggestStudy: { name: \"Suggest a Study\", path: \"/suggest\" },\r\n manageStudy: { name: \"Manage all Studies\", path: \"/manage\" },\r\n studyEditor: { name: \"Edit Data\", path: \"/editor\" },\r\n studySearch: { name: \"Search\" },\r\n downloads: { name: \"Downloads\", path: \"/downloads\" },\r\n filterqueriesdownloads: { name: \"Download Filter Queries\", path: \"/filterqueries\" },\r\n userprofiledownloads: { name: \"Download User Profiles\", path: \"/userprofiles\" },\r\n settings: { name: \"Various Settings\", path: \"/settings\" },\r\n vtt: { name: \"vtt\", path: \"/vtt\", label:\"Value Transfer Tool Setup\" },\r\n vttCalculations: { name: \"vttcalculations\", path: \"/vtt/calculations\", label:\"Value Transfer Tool\" },\r\n uploads: { name: \"Uploads\", path: \"/esvduploads\",label:\"Esvd Uploads\" },\r\n vsl: { name: \"vsl\", path: \"/vsl\", label: \"Valuation Studies List\" },\r\n vsluploads: { name: \"vslUploads\", path: \"/vsluploads\", label:\"Vsl Upload\" },\r\n admin: { name: \"Admin\", path: \"/admin\" },\r\n statsReady: { name: \"statsready\", path: \"/statsready\", label: \"Summary Stats Admin\" },\r\n apikeySetup: { name: \"apikeySetup\", path: \"/apikeySetup\", label: \"Api key Setup\" },\r\n earlybird: { name: \"earlybird\", path: \"/earlybirdSetup\", label: \"Early Bird Setup\" },\r\n studyValuations: { name: \"studyvaluations\", path: \"/studyvaluations\", label: \"Study Valuations\" },\r\n};\r\n\r\nexport const actions = { read: \"read\", create: \"create\", delete: \"delete\" };\r\nexport const userRole = {\r\n basic: \"basic\", //non existent in db for now. Holds permissions common to all other roles\r\n user: \"user\",\r\n dataAnalyst: \"data analyst\",\r\n editorInChief: \"editor in chief\",\r\n admin: \"admin\",\r\n cocapacity: \"co-capacity\",\r\n earlyBird: \"early bird\",\r\n};\r\n\r\nexport const initStudy: Study = {\r\n id: null,\r\n studyId: \"\",\r\n title: \"\",\r\n authors: \"\",\r\n reference: \"\",\r\n isNew: true,\r\n yearOfPublication: \"\",\r\n isPublished: false,\r\n};\r\n\r\nexport const initReferenceInfo: ReferenceInfo = {\r\n id: null,\r\n month: new Date().getMonth(),\r\n year: new Date().getFullYear(),\r\n version:null,\r\n subversion: null,\r\n referenceText: \"\",\r\n createdOn:\"\"\r\n \r\n};\r\n\r\nexport const initValuation = { id: null, valueId: 0, studyId: 0 };\r\n\r\nexport const initSuggestStudy: SuggestStudy = {\r\n title: \"\",\r\n description: \"\",\r\n studyType: \"\",\r\n attachment: [],\r\n};\r\n\r\nexport const StudyProps = {\r\n id: { name: \"id\" },\r\n studyId: { name: \"studyId\", label: \"Study Id\" },\r\n title: { name: \"title\", label: \"Title\" },\r\n authors: { name: \"authors\", label: \"Authors\" },\r\n reference: { name: \"reference\", label: \"Full Bib. Reference\" },\r\n isNew: { name: \"isNew\", label: \"Is New\" },\r\n yearOfPublication: {\r\n name: \"yearOfPublication\",\r\n label: \"Year of Publication\",\r\n },\r\n isPublished: { name: \"isPublished\", label: \"Is Published\" },\r\n};\r\n\r\nexport const StudySuggestionProps = {\r\n title: { name: \"title\", label: \"Study Title\" },\r\n description: {\r\n name: \"description\",\r\n label:\r\n \"Brief description of why you think the Study should be included in the ESVD\",\r\n },\r\n studyType: {\r\n name: \"studyType\",\r\n label:\r\n \"Type of Study (thesis, report, journal article, conference paper, book (section))\",\r\n },\r\n attachment: { name: \"attachment\", label: \"Attach your Study documents\" },\r\n};\r\nexport const studyPublishStatus = {\r\n published: \"Publish\",\r\n unpublish: \"Unpublish\",\r\n republish: \"Republish\",\r\n};\r\n\r\nexport const ValuationProps = {\r\n id: {\r\n name: \"id\",\r\n label: \"id\",\r\n },\r\n valueId: {\r\n name: \"valueId\",\r\n label: \"ValueId\",\r\n },\r\n studyId: {\r\n name: \"studyId\",\r\n label: \"Study Id\",\r\n },\r\n biomeEcosystems: {\r\n name: \"biomeEcosystems\",\r\n label: \"Biomes/Ecosystems\",\r\n },\r\n biomeV2EcosystemV2Ecozones: {\r\n name: \"biomeV2EcosystemV2Ecozones\",\r\n label: \"Biomes/Ecozones\",\r\n },\r\n ecosystemDescription: {\r\n name: \"ecosystemDescription\",\r\n label: \"Ecosystem Description\",\r\n },\r\n ecosystemServices: {\r\n name: \"ecosystemServices\",\r\n label: \"Ecosystem Services\",\r\n },\r\n ecosystemServiceDescription: {\r\n name: \"ecosystemServiceDescription\",\r\n label: \"Ecosystem Service Description\",\r\n },\r\n countries: {\r\n name: \"countries\",\r\n label: \"Countries\",\r\n },\r\n continentId: {\r\n name: \"continentId\",\r\n label: \"Continent\",\r\n },\r\n scaleOfStudySiteId: {\r\n name: \"scaleOfStudySiteId\",\r\n label: \"Scale Of Study Id\",\r\n },\r\n scaleOfStudySiteCode: {\r\n name: \"scaleOfStudySiteCode\",\r\n label: \"Scale Of Study Code\",\r\n },\r\n scaleOfStudySite: {\r\n name: \"scaleOfStudySite\",\r\n label: \"Scale Of Study Site\",\r\n },\r\n studyLocation: {\r\n name: \"studyLocation\",\r\n label: \"Study Location Name\",\r\n },\r\n protectionStatusId: {\r\n name: \"protectionStatusId\",\r\n label: \"Protection Status\",\r\n },\r\n siteArea: {\r\n name: \"siteArea\",\r\n label: \"Site Area\",\r\n },\r\n siteAreaUnit: {\r\n name: \"siteAreaUnit\",\r\n label: \"Site Area Unit\",\r\n },\r\n siteAreaInHectares: {\r\n name: \"siteAreaInHectares\",\r\n label: \"Site Area In Hectares\",\r\n },\r\n siteLength: {\r\n name: \"siteLength\",\r\n label: \"Site Length\",\r\n },\r\n siteLengthUnit: {\r\n name: \"siteLengthUnit\",\r\n label: \"Site Length Unit\",\r\n },\r\n siteLengthKm: {\r\n name: \"siteLengthKm\",\r\n label: \"Site Length Km\",\r\n },\r\n siteCondition: {\r\n name: \"siteCondition\",\r\n label: \"Site Condition Description\",\r\n },\r\n ecosystemConditionId: {\r\n name: \"ecosystemConditionId\",\r\n label: \"Ecosystem Condition\",\r\n },\r\n latitude: {\r\n name: \"latitude\",\r\n label: \"Latitude\",\r\n },\r\n longitude: {\r\n name: \"longitude\",\r\n label: \"Longitude\",\r\n },\r\n valuationMethods: {\r\n name: \"valuationMethods\",\r\n label: \"Valuation Method\",\r\n },\r\n valuedChange: {\r\n name: \"valuedChange\",\r\n label: \"Valued Change\",\r\n },\r\n originalValue: {\r\n name: \"originalValue\",\r\n label: \"Original value\",\r\n },\r\n currencyId: {\r\n name: \"currencyId\",\r\n label: \"Currency\",\r\n },\r\n valueYear: {\r\n name: \"valueYear\",\r\n label: \"Value Year\",\r\n },\r\n spatialUnit: {\r\n name: \"SpatialUnit\",\r\n label: \"Spatial Unit\",\r\n },\r\n temporalUnit: {\r\n name: \"temporalUnit\",\r\n label: \"Temporal Unit\",\r\n },\r\n presentValueYear: {\r\n name: \"presentValueYear\",\r\n label: \"Present Value Year\",\r\n },\r\n presentValueDiscountRate: {\r\n name: \"presentValueDiscountRate\",\r\n label: \"Present Value Discount Rate\",\r\n },\r\n beneficiaryUnit: {\r\n name: \"beneficiaryUnit\",\r\n label: \"Beneficiary Unit\",\r\n },\r\n numberOfBeneficiaries: {\r\n name: \"numberOfBeneficiaries\",\r\n label: \"Number Of Beneficiaries\",\r\n },\r\n typeOfBeneficiary: {\r\n name: \"typeOfBeneficiary\",\r\n label: \"Type Of Beneficiary\",\r\n },\r\n intPerHectarePerYear: {\r\n name: \"intPerHectarePerYear\",\r\n label: \"Int_$_Ha_Yr\",\r\n },\r\n notes: {\r\n name: \"notes\",\r\n label: \"Notes\",\r\n },\r\n secondaryDataSources: {\r\n name: \"secondaryDataSources\",\r\n label: \"Secondary Data Sources\",\r\n },\r\n coders: {\r\n name: \"coders\",\r\n label: \"Coders\",\r\n },\r\n codedDate: {\r\n name: \"codedDate\",\r\n label: \"Coded Date\",\r\n },\r\n reviewers: {\r\n name: \"reviewers\",\r\n label: \"Reviewers\",\r\n },\r\n reviewed: {\r\n name: \"reviewed\",\r\n label: \"Reviewed\",\r\n },\r\n reviewStatusId: {\r\n name: \"reviewStatusId\",\r\n label: \"Review Status\",\r\n },\r\n ciceses: {\r\n name: \"ciceses\",\r\n label: \"CICES\",\r\n },\r\n seeas: {\r\n name: \"seeas\",\r\n label: \"SEEA\",\r\n },\r\n inclExcl: {\r\n name: \"inclExcl\",\r\n label: \"InclExcl\",\r\n },\r\n inclExclComments: {\r\n name: \"inclExclComments\",\r\n label: \"InclExclComments\",\r\n },\r\n};\r\n\r\nexport const ItemLabels = {\r\n biome: \"Biome\",\r\n biomeCode: \"Biome_Code\",\r\n teeb: \"TEEB ES services\",\r\n teebCode: \"TEEB_Code\",\r\n Int_Per_Hectare_Per_Year: \"Int_Per_Hectare_Per_Year\",\r\n InclExcl: \"InclExcl\",\r\n};\r\n\r\n\r\nexport const sectorsList: DropdownItemProps[] = [\r\n { label: \"Academia\", value: \"Academia\" },\r\n { label: \"Business\", value: \"Business\" },\r\n\t{ label: \"Financial institutions\", value: \"Financial institutions\" },\r\n\t{ label: \"Government\", value: \"Government\" },\t\r\n\t{ label: \"NGO\", value: \"NGO\" },\r\n\t{ label: \"Other\", value: \"Other\" },\r\n];\r\n\r\nexport const purposeOfAccessList: DropdownItemProps[] = [\r\n { label: \"Accounting\", value: \"Accounting\" },\r\n { label: \"Benefit transfer\", value: \"Benefit transfer\" },\r\n { label: \"Cost-benefit\", value: \"Cost-benefit\" },\r\n { label: \"Education\", value: \"Education\" },\r\n\t{ label: \"Policy appraisal\", value: \"Policy appraisal\" },\r\n\t{ label: \"Research\", value: \"Research\" },\r\n\t{ label: \"Other\", value: \"Other\" },\r\n];\r\n\r\nexport interface IUserProps {\r\n\tuser: User;\r\n}\r\n\r\n\r\nexport const EsvdColumnMapping = {\r\n \"ValueID\": \"ValueId\",\r\n \"StudyID\": \"StudyId\",\r\n \"ESVD2.0_Biome_Code\": \"BiomeCode\",\r\n \"ESVD2.0_Ecozone_Code\": \"EcozoneCode\",\r\n \"ESVD2.0_Ecosystem_Code\": \"EcosystemCode\",\r\n \"Ecosystem_Text\": \"EcosystemDescription\",\r\n \"ES_Text\": \"EcosystemServiceDescription\",\r\n \"TEEB_ES\": \"EcosystemServiceCode\",\r\n \"TEEB_SubES\": \"EcosystemSubServiceCode\",\r\n \"CICES\": \"CicesCode\",\r\n \"SEEA_Code\": \"SeeaCode\",\r\n \"Country_Code\": \"CountryCode\",\r\n \"Continent_Code\": \"ContinentCode\",\r\n \"Scale_Code\": \"ScaleOfStudySiteCode\",\r\n \"Location_Name\": \"StudyLocation\",\r\n \"Protected_Status\": \"ProtectionStatusCode\",\r\n \"Site_Area\": \"SiteArea\",\r\n \"Area_Unit\": \"SiteAreaUnit\",\r\n \"Area_ha\": \"SiteAreaInHectares\",\r\n \"Site_Length\": \"SiteLength\",\r\n \"Length_Unit\": \"SiteLengthUnit\",\r\n \"Length_km\": \"SiteLengthKm\",\r\n \"Condition_Text\": \"SiteCondition\",\r\n \"Condition_Code\": \"EcosystemConditionCode\",\r\n \"Latitude\": \"Latitude\",\r\n \"Longitude\": \"Longitude\",\r\n \"Valuation_Method\": \"ValuationCode\",\r\n \"Valued_Change_Text\": \"ValuedChange\",\r\n \"Value_Original\": \"OriginalValue\",\r\n \"Currency_Code\": \"CurrencyCode\",\r\n \"Value_year\": \"ValueYear\",\r\n \"Spatial_Unit\": \"SpatialUnit\",\r\n \"Temporal_Unit\": \"TemporalUnit\",\r\n \"PV_Years\": \"PresentValueYear\",\r\n \"PV_Rate\": \"PresentValueDiscountRate\",\r\n \"Beneficiary_Unit\": \"BeneficiaryUnit\",\r\n \"Beneficiary_Number\": \"NumberOfBeneficiaries\",\r\n \"Beneficiary_Type\": \"TypeOfBeneficiary\",\r\n \"INT$_2020_ha_yr_all\": \"IntPerHectarePerYear\",\r\n \"Notes\": \"Notes\",\r\n \"Authors\": \"Authors\",\r\n \"Year_Pub\":\"Year\",\r\n \"Reference\":\"Reference\",\r\n \"Title\":\"Title\",\r\n \"Secondary_sources\": \"SecondaryDataSources\",\r\n \"Coded_By\": \"CodedBy\", \r\n \"Coded_Date\": \"CodedDate\",\r\n \"Reviewer\": \"Reviewer\",\r\n \"Review_Date\": \"ReviewedDate\",\r\n \"Incl_Excl\": \"InclExcl\",\r\n \"Comments_Incl_Excl\": \"InclExclComments\",\r\n \"Scale_Text\": \"ScaleOfStudySiteText\",\r\n \"Valuation_Display\": \"ValuationDisplay\", //this determines if the valuation is reserved for Earlybird users only.\r\n \"Value_Measure\":\"ValueMeasure\",\r\n \"Value_Change\":\"ValueChange\",\r\n}\r\n\r\nexport const ExcelHeaders: any = {\r\n esvds: {\r\n label: \"ESVD MASTER\",\r\n columns: [\"ValueID\",\r\n \"StudyID\",\r\n \"Biome_Code\",\r\n \"Ecosystem_Code\",\r\n \"ESVD2.0_Biome_Code\",\r\n \"ESVD2.0_Ecozone_Code\",\r\n \"ESVD2.0_Ecosystem_Code\",\r\n \"Ecosystem_Text\",\r\n \"ES_Text\",\r\n \"TEEB_ES\",\r\n \"TEEB_SubES\",\r\n \"CICES\",\r\n \"SEEA_Code\",\r\n \"Country_Code\",\r\n \"Continent_Code\",\r\n \"Scale_Code\",\r\n \"Location_Name\",\r\n \"Protected_Status\",\r\n \"Site_Area\",\r\n \"Area_Unit\",\r\n \"Area_ha\",\r\n \"Site_Length\",\r\n \"Length_Unit\",\r\n \"Length_km\",\r\n \"Condition_Text\",\r\n \"Condition_Code\",\r\n \"Latitude\",\r\n \"Longitude\",\r\n \"Valuation_Method\",\r\n \"Valued_Change_Text\",\r\n \"Value_Original\",\r\n \"Currency_Code\",\r\n \"Value_year\",\r\n \"Spatial_Unit\",\r\n \"Temporal_Unit\",\r\n \"PV_Years\",\r\n \"PV_Rate\",\r\n \"Beneficiary_Unit\",\r\n \"Beneficiary_Number\",\r\n \"Beneficiary_Type\",\r\n \"INT$_2020_ha_yr_all\",\r\n \"Notes\",\r\n \"Authors\",\r\n \"Year_Pub\",\r\n \"Reference\",\r\n \"Title\",\r\n \"Secondary_sources\",\r\n \"Coded_By\",\r\n \"Coded_Date\",\r\n \"Reviewer\",\r\n \"Review_Date\",\r\n \"Incl_Excl\",\r\n \"Comments_Incl_Excl\",\r\n \"Scale_Text\",\r\n \"Valuation_Display\",\r\n \"Value_Measure\",\r\n \"Value_Change\"]\r\n },\r\n biomes: { label: \"Biomes and Ecosystems\", columns: [\"Code\", \"Biomes and Ecosystems\"] },\r\n biomesV2: { label: \"ESVD2.0 Biome and Ecosystems cl\", columns: [\"Code\", \"Esvd\"] },\r\n teebs: { label: \"TEEB Services\", columns: [\"Section\", \"Ecosystem Service\", \"ES Code\", \"Ecosystem Sub-Service\", \"ESS Code\"] },\r\n cices: { label: \"CICES V5.1\", columns: [\"Section\", \"Division\", \"Group\", \"Class\", \"Code\"] },\r\n seeas: { label: \"SEEA Services\", columns: [\"Code\", \"main\", \"types\", \"subtypes\", \"description\"] },\r\n valuationmethods: { label: \"Valuation Methods\", columns: [\"Valuation method\", \"Acronym\", \"Approach\", \"Application to ecosystem services\", \"Example ecosystem service\"] },\r\n protectionstatus: { label: \"Protection Status\", columns: [\"Code\", \"Category\"] },\r\n ecosystemcondition: { label: \"Condition\", columns: [\"Code\", \"Condition\"] },\r\n countries: { label: \"Country ISO\", columns: [\"Code\", \"Name\"] },\r\n continents: { label: \"Continent\", columns: [\"Code\", \"Name\"] },\r\n currencies: { label: \"Currency ISO\", columns: [\"Code\", \"Name\"] },\r\n valueMeasure: { label: \"Value_Measure\", columns: [\"Acronym\", \"Value Measure Options\",\"Approach\"] },\r\n valueChange: { label: \"Value_Change\", columns: [\"Value_Change\",\"Description\"] }\r\n}\r\n\r\nexport const VslColumnMapping = {\r\n \"Authors\": \"Authors\",\r\n \"Year_Pub\": \"Year\",\r\n \"Title\": \"Title\",\r\n \"Reference\": \"Reference\",\r\n \"Biome_Code\": \"BiomeCode\",\r\n \"Ecosystem_Code\": \"EcosystemCode\",\r\n \"ESVD2.0_Biome_Code\": \"BiomeV2Code\",\r\n \"ESVD2.0_Ecozone_Code\": \"EcozoneCode\",\r\n \"ESVD2.0_Ecosystem_Code\": \"EcosystemV2Code\",\r\n \"TEEB_ES\": \"EcosystemServiceCode\",\r\n \"Country_Code\": \"CountryCode\",\r\n \"Protected_Status\": \"ProtectionStatusCode\", \r\n // \"Condition_Code\": \"EcosystemConditionCode\",\r\n \"StudyID\": \"StudyId\",\r\n \"Included in ESVD\": \"IncludedinESVD\",\r\n \"Included Repository\": \"IncludedRepository\",\r\n \"Repository folder\":\"Repositoryfolder\",\r\n \"Checked by\":\"Checkedby\",\r\n \"Language\": \"Language\",\r\n \"Notes\": \"Notes\",\r\n\r\n}\r\n\r\nexport const VslExcelHeaders: any = {\r\n vsls: {\r\n label: \"VSL MASTER\", columns: [\r\n \"Authors\",\r\n \"Year_Pub\",\r\n \"Title\",\r\n \"Reference\",\r\n \"Biome_Code\",\r\n \"Ecosystem_Code\",\r\n \"ESVD2.0_Biome_Code\",\r\n \"ESVD2.0_Ecozone_Code\",\r\n \"ESVD2.0_Ecosystem_Code\",\r\n \"TEEB_ES\",\r\n \"Country_Code\",\r\n \"Protected_Status\",\r\n // \"Condition_Code\",\r\n \"StudyID\",\r\n \"Included in ESVD\",\r\n \"Included Repository\",\r\n \"Repository folder\",\r\n \"Checked by\",\r\n \"Language\",\r\n \"Notes\"]\r\n },\r\n biomes: { label: \"Biomes and Ecosystems\", columns: [\"Code\", \"Biomes and Ecosystems\"] },\r\n biomesv2: { label: \"ESVD2.0 Biome and Ecosystems cl\", columns: [\"Code\", \"Esvd\"] },\r\n teebs: { label: \"TEEB Services\", columns: [\"Section\", \"Ecosystem Service\", \"ES Code\", \"Ecosystem Sub-Service\", \"ESS Code\"] },\r\n protectionstatus: { label: \"Protection Status\", columns: [\"Code\", \"Category\"] },\r\n countries: { label: \"Country ISO\", columns: [\"Code\", \"Name\"] },\r\n}\r\n\r\n\r\n\r\nexport const IncludedInEsvdOptions = [\r\n\t{ value: null, label: \"\" },\r\n\t{ value: \"Included\", label: \"Included\" },\r\n\t{ value: \"Excluded\", label: \"Excluded\" },\r\n\t{ value: \"Unread\", label: \"Unread\" },\r\n];\r\n\r\n\r\nexport const RepoIncludedOptions = [\r\n\t{ value: null, label: \"\" },\r\n\t{ value: false, label: \"No\" },\r\n\t{ value: true, label: \"Yes\" },\r\n];","import { ApplicationInsights } from \"@microsoft/applicationinsights-web\";\r\nimport { ReactPlugin } from \"@microsoft/applicationinsights-react-js\";\r\nimport { createBrowserHistory } from \"history\";\r\nimport { APP_INSIGHT_INST_KEY } from \"./Literals\";\r\n\r\nconst browserHistory = createBrowserHistory({ basename: \"\" });\r\nconst reactPlugin = new ReactPlugin();\r\nconst appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: APP_INSIGHT_INST_KEY,\r\n extensions: [reactPlugin],\r\n extensionConfig: {\r\n [reactPlugin.identifier]: { history: browserHistory },\r\n },\r\n },\r\n});\r\n\r\nexport { reactPlugin, appInsights };\r\n","import { createBrowserHistory } from \"history\";\r\nexport default createBrowserHistory();\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n// import { Fragment, useContext } from \"react\";\r\nimport { Header, Modal } from \"semantic-ui-react\";\r\n\r\nexport const TOGGLE_MODAL = \"TOGGLE_MODAL\";\r\n\r\nexport const initModalData = (open: boolean = false) => ({\r\n\ticon: \"\",\r\n\theader: null,\r\n\tcontent: null,\r\n\tisOpen: open,\r\n\tactions: () => null,\r\n});\r\n\r\nexport const openModal = (modalProp: modalDataDef) => async (dispatch: any) => {\r\n\tdispatch({ type: TOGGLE_MODAL, payload: modalProp });\r\n};\r\n\r\nexport const OpenModal2 = (props: any) => {\r\n\tconst [isOpen, setIsOpen] = React.useState(false);\r\n\treturn (\r\n\t\t {\r\n\t\t\t\t// props.openModal(initModalData(false));\r\n\t\t\t\tsetIsOpen(false);\r\n\t\t\t}}\r\n\t\t\t// onOpen={() => props.openModal(initModalData(true))}\r\n\t\t>\r\n\t\t\t\r\n\t\t\t\t
{props.header}
\r\n\t\t\t\t{props.content}\r\n\r\n\t\t\t\t{/* */}\r\n\t\t\t\t
\r\n\t\t\t\t\t{(props.actions && props.actions()) || (\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetIsOpen(false);\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tClose\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t\t{/*
*/}\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport const closeModal =\r\n\t(modalProp: modalDataDef = initModalData(false)) =>\r\n\tasync (dispatch: any) => {\r\n\t\tdispatch({ type: TOGGLE_MODAL, payload: modalProp });\r\n\t};\r\n\r\nexport const modalReducer = (\r\n\tstate: modalDataDef = initModalData(),\r\n\taction: any\r\n) => {\r\n\tswitch (action.type) {\r\n\t\tcase TOGGLE_MODAL:\r\n\t\t\treturn action.payload;\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n};\r\n\r\nexport interface modalDataDef {\r\n\ticon?: string;\r\n\theader?: any;\r\n\tcontent?: any;\r\n\tisOpen?: boolean;\r\n\tactions?: Function;\r\n\t// close?: Function;\r\n}\r\n\r\nexport type ModalProps = {\r\n\tmodalData: modalDataDef;\r\n\topenModal: Function;\r\n};\r\n\r\nexport const EsvdModalFunc = (props: ModalProps) => {\r\n\tconst { header, content, isOpen, actions } = props.modalData;\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tprops.openModal(initModalData(false));\r\n\t\t\t}}\r\n\t\t\tonOpen={() => props.openModal(initModalData(true))}>\r\n\t\t\t\r\n\t\t\t\t
{header}
\r\n\t\t\t\t{content}\r\n\r\n\t\t\t\t{/* */}\r\n\t\t\t\t
\r\n\t\t\t\t\t{(actions && actions()) || (\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tprops.openModal(initModalData(false));\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tClose\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t\t{/*
*/}\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nclass EsvdModal extends Component {\r\n\trender() {\r\n\t\tconst { header, content, isOpen, actions } = this.props.modalData;\r\n\r\n\t\treturn (\r\n\t\t\tShow Modal}\r\n\t\t\t\tonClose={() => {\r\n\t\t\t\t\tthis.props.openModal(initModalData(false));\r\n\t\t\t\t}}\r\n\t\t\t\tonOpen={() => this.props.openModal(initModalData(true))}>\r\n\t\t\t\t{/*
*/}\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t
{header}
\r\n\t\t\t\t\t{content}\r\n\r\n\t\t\t\t\t{/* */}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{(actions && actions()) || (\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.props.openModal(initModalData(false));\r\n\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\tClose\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{/*
*/}\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nconst mapStateToProps = (state: any) => {\r\n\treturn { modalData: state.modalData };\r\n};\r\nexport default connect(mapStateToProps, { openModal, closeModal })(EsvdModal);\r\n","import { createMedia } from \"@artsy/fresnel\";\r\n\r\nimport { screenBreakpoints } from \"../shared/Literals\";\r\nimport { createContext, useContext, useEffect, useState } from \"react\";\r\nimport { set } from \"js-cookie\";\r\n\r\nconst MediaContext = createContext(null);\r\n\r\nconst MediaLayout = createMedia({\r\n\tbreakpoints: screenBreakpoints,\r\n});\r\n\r\nconst MediaProvider = ({ children }: { children: any }) => {\r\n\tconst [screenType, setScreenType] = useState<\"mobile\" | \"large\">(\"large\");\r\n\r\n\tuseEffect(() => {\r\n\t\tsetScreenType(window.innerWidth <= 760 ? \"mobile\" : \"large\");\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\nconst useMedia = () => {\r\n\tconst vslH = useContext(MediaContext);\r\n\tif (vslH == null) {\r\n\t\tthrow new Error(\"useMedia() called outside of its hook.\");\r\n\t}\r\n\treturn vslH;\r\n};\r\nexport { MediaProvider, useMedia };\r\n\r\nexport default MediaLayout;\r\n","import axios, { AxiosResponse } from \"axios\";\r\nimport { Country } from \"../models/country\";\r\nimport { Esvd } from \"../models/esvd\";\r\nimport { ProtectionStatus } from \"../models/protectionStatus\";\r\nimport { ValuationMethod } from \"../models/valuationMethods\";\r\nimport {\r\n EsvdQueryParams,\r\n FilterQueryParams,\r\n FreeTextQueryParams,\r\n UserQueryParams,\r\n} from \"../models/EsvdQueryFilters\";\r\nimport { TreeType } from \"../models/ecosystemService\";\r\nimport {\r\n ForgotPassword,\r\n ResendConfirmation,\r\n ResetPassword,\r\n User,\r\n UserFormValues,\r\n UserLoginMode,\r\n UserQueryResult,\r\n} from \"../models/user\";\r\nimport { Study } from \"../models/Study\";\r\nimport { Valuation } from \"../models/Valuation\";\r\nimport { DropdownType } from \"../models/dropdownType\";\r\nimport { Feedback, SuggestStudy } from \"../models/SuggestStudy\";\r\nimport { FilterQuery } from \"../models/FilterQuery\";\r\nimport { ReferenceInfo } from \"../models/ReferenceInfo\";\r\nimport { UploadDto } from \"../models/UploadDto\";\r\nimport { EsvdMap } from \"../models/esvdMap\";\r\nimport { EsvdDataStatistics } from \"../models/EsvdDataStatistics\";\r\nimport { VttBiome, VttSubBiome, VttVariable, VttVariableDetailMap } from \"../models/vtt-models/VttBiome\";\r\nimport { PagingParams } from \"../models/PaginationParams\";\r\nimport { ValuationStudy } from \"../models/ValuationStudy\";\r\n// import { VslUpdate } from \"../models/vsl-models/VslGridItem\";\r\nimport { VslValuationStudy } from \"../models/vsl-models/VslValuationStudy\";\r\nimport { StatsResultData } from \"../providers/EsvdValuationProvider\";\r\n\r\n\r\nconst Qs = require(\"qs\");\r\nconst CryptoJS = require(\"crypto-js\");\r\n\r\naxios.defaults.baseURL = process.env.REACT_APP_API_URL;\r\n\r\n// let token = \"\";\r\naxios.interceptors.request.use((config) => {\r\n // grab current state\r\n // const state = store.getState();\r\n // get the JWT token out of it\r\n // const token = token;\r\n let token = sessionStorage.getItem(\"jwt\");\r\n if (token) {\r\n const key = process.env.REACT_APP_CRYPTO_KEY || \"\";\r\n //decrypt token\r\n const tokenBytes = CryptoJS.AES.decrypt(token, key);\r\n token = tokenBytes.toString(CryptoJS.enc.Utf8);\r\n }\r\n\r\n if (token) config.headers.Authorization = `Bearer ${token}`;\r\n config.maxContentLength = Infinity;\r\n config.maxBodyLength = Infinity;\r\n\r\n return config;\r\n});\r\n\r\n// let token = \"\";\r\naxios.interceptors.response.use(\r\n response => response,\r\n error => {\r\n if (!error.response) {\r\n return Promise.reject(error);\r\n }\r\n\r\n const {\r\n response: { status, data },\r\n } = error;\r\n\r\n if (status >= 400 && status < 500) {\r\n switch (status) {\r\n case 401:\r\n error.response.statusText = \"Check username and password.\";\r\n break;\r\n case 403:\r\n error.response.statusText = \"Not enough permissions.\";\r\n break;\r\n default:\r\n error.response.statusText = error.response.data;\r\n break;\r\n }\r\n if (typeof error.response.data === \"string\" && error.response.data.includes(\"Email not confirmed\")) {\r\n error.response.statusText = `${error.response.data}. Please go to the email address you used to signup and click on the link sent from ESVD when you signed up.`;\r\n }\r\n } else if (status >= 500) {\r\n if (error.response.data.includes(\"SqlException\")) {\r\n error.response.data = \"Database connectivity issue. Consult the admin.\";\r\n }\r\n }\r\n // if (401 === error.response.status) {\r\n // return Promise.reject(error);\r\n // } else {\r\n // return error;\r\n return Promise.reject(error);\r\n // }\r\n }\r\n);\r\n\r\nconst responseBody = (response: AxiosResponse) =>\r\n response ? response.data : response;\r\n\r\nconst requests = {\r\n get: (url: string, options?: any) =>\r\n axios.get(url, options).then(responseBody),\r\n post: (url: string, body: {}) =>\r\n axios.post(url, body).then(responseBody),\r\n postFile: (url: string, body: any, config: any) =>\r\n axios.post(url, body, config).then(responseBody),\r\n put: (url: string, body: {}) => axios.put(url, body).then(responseBody),\r\n del: (url: string) => axios.delete(url).then(responseBody),\r\n};\r\n\r\nconst Account = {\r\n current: (): Promise => requests.get(\"/account/currentuser\"),\r\n login: (user: UserFormValues) => requests.post(\"/account/login\", user),\r\n verifyuser: (usernameOrEmail: string) => requests.get(\"/account/verifyuser\", {\r\n params: { usernameOrEmail },\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n }),\r\n GenerateOtp: (usernameOrEmail: string) => requests.get(\"/account/generateotp\", {\r\n params: { usernameOrEmail },\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n }),\r\n loginwithotp: (user: UserFormValues) => requests.post(\"/account/loginwithotp\", user),\r\n logout: (): Promise => requests.get(\"/account/signout\"),\r\n signup: (user: UserFormValues) =>\r\n requests.post(\"/account/signup\", user),\r\n forgotpassword: (email: ForgotPassword) =>\r\n requests.post(\"/account/forgotpassword\", email),\r\n resendconfirmationlink: (username: ResendConfirmation) =>\r\n requests.post(\"/account/resendconfirmationlink\", username),\r\n resetpassword: (user: ResetPassword) =>\r\n requests.post(\"/account/resetpassword\", user),\r\n confirmemail: (user: ResetPassword) =>\r\n requests.post(\"/account/confirmemail\", user),\r\n useredit: (user: UserFormValues) =>\r\n requests.post(\"/account/useredit\", user),\r\n userslist: (filters?: UserQueryParams): Promise => {\r\n return requests.get(\"account/allusers\", {\r\n params: filters?.params,\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n });\r\n },\r\n usersCount: (): Promise => requests.get(\"account/userscount\"),\r\n earlybirdusers: (filters: UserQueryParams): Promise => requests.post(\"users/earlybirds\", filters.params),\r\n nonearlybirdusers: (filters: UserQueryParams): Promise => requests.post(\"users/nonearlybirds\", filters.params),\r\n addearlybirduser: (id:string) => requests.put(`users/addearlybirds/${id}`,{}),\r\n removeearlybirduser: (id:string) => requests.put(`users/removeearlybirds/${id}`,{})\r\n};\r\n\r\nconst Esvds = {\r\n list: (filters: EsvdQueryParams): Promise => {\r\n return requests.get(\"/esvds/\", {\r\n params: filters.params,\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n });\r\n },\r\n esvdCount: (filters: EsvdQueryParams): Promise => {\r\n try {\r\n return requests.get(\"/esvds/count\", {\r\n params: filters.params,\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n });\r\n } catch (error) {\r\n // console.log(error);\r\n throw error;\r\n }\r\n },\r\n esvdTotalCount: (): Promise => {\r\n try {\r\n return requests.get(\"/esvds/totalcount\");\r\n } catch (error) {\r\n // console.log(error);\r\n throw error;\r\n }\r\n }, delete: (id: number) => requests.del(`/esvds/${id}`),\r\n};\r\n\r\nconst EsvdMaps = {\r\n esvdMapList: (filters: EsvdQueryParams): Promise => {\r\n return requests.get(\"/esvds/mapdata/\", {\r\n params: filters.params,\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n });\r\n },\r\n // details: (valueids: number[] | null): Promise => requests.get(`/esvds/mapmarkerdata/${valueids}`),\r\n markerDetails: (valueids: number[] | null): Promise => {\r\n return requests.get(\"/esvds/mapmarkerdata/\", {\r\n params: {valueids},\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n });\r\n },\r\n totalMapListCount: (): Promise => { \r\n return requests.get(\"/esvds/totalmaplistcount\");\r\n },\r\n mapListCount: (filters: EsvdQueryParams): Promise => {\r\n try {\r\n return requests.get(\"/esvds/maplistcount\", {\r\n params: filters.params,\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n });\r\n } catch (error) {\r\n // console.log(error);\r\n throw error;\r\n }\r\n },\r\n};\r\n\r\nconst EsvdStats = {\r\n\r\n\r\n summaryStats: (filters: EsvdQueryParams): Promise => {\r\n return requests.get(\"/esvds/summarystats\", {\r\n params: filters.params,\r\n\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n });\r\n },\r\n};\r\n\r\nconst Countries = {\r\n list: (): Promise => requests.get(\"/countries/\"),\r\n details: (id: string) => requests.get(`/countries/${id}`),\r\n create: (country: Country) => requests.post(\"/countries\", country),\r\n update: (country: Country) =>\r\n requests.put(`/countries/${country.id}`, country),\r\n delete: (id: string) => requests.del(`/countries/${id}`),\r\n};\r\n\r\nconst Continents = {\r\n list: (): Promise => requests.get(\"/continents/\"),\r\n details: (id: string) => requests.get(`/continents/${id}`),\r\n create: (continent: DropdownType) => requests.post(\"/continents\", continent),\r\n update: (continent: DropdownType) =>\r\n requests.put(`/continents/${continent.id}`, continent),\r\n delete: (id: string) => requests.del(`/continents/${id}`),\r\n};\r\n\r\nconst ProtectionStatuses = {\r\n list: (): Promise => requests.get(\"/protectionstatuses/\"),\r\n details: (id: string) => requests.get(`/protectionstatuses/${id}`),\r\n create: (protectionstatus: ProtectionStatus) =>\r\n requests.post(\"/protectionstatuses\", protectionstatus),\r\n update: (protectionstatus: ProtectionStatus) =>\r\n requests.put(\r\n `/protectionstatuses/${protectionstatus.id}`,\r\n protectionstatus\r\n ),\r\n delete: (id: string) => requests.del(`/protectionstatuses/${id}`),\r\n};\r\n\r\nconst ValuationMethods = {\r\n list: (): Promise => requests.get(\"/valuationmethods/\"),\r\n details: (id: string) => requests.get(`/valuationmethods/${id}`),\r\n create: (valuationmethod: ValuationMethod) =>\r\n requests.post(\"/valuationmethods\", valuationmethod),\r\n update: (valuationmethod: ValuationMethod) =>\r\n requests.put(`/valuationmethods/${valuationmethod.id}`, valuationmethod),\r\n delete: (id: string) => requests.del(`/valuationmethods/${id}`),\r\n};\r\n\r\nconst EcosystemServices = {\r\n list: (): Promise => requests.get(\"/ecosystemservices/\"),\r\n details: (id: string) => requests.get(`/ecosystemservices/${id}`),\r\n create: (ecosystemservice: TreeType) =>\r\n requests.post(\"/ecosystemservices\", ecosystemservice),\r\n update: (ecosystemservice: TreeType) =>\r\n requests.put(`/ecosystemservices/${ecosystemservice.id}`, ecosystemservice),\r\n delete: (id: string) => requests.del(`/ecosystemservices/${id}`),\r\n};\r\n\r\nconst BiomeEcosystems = {\r\n list: (): Promise => requests.get(\"/biomeecosystems/\"),\r\n details: (id: string) => requests.get(`/biomeecosystems/${id}`),\r\n create: (biomeecosystem: TreeType) =>\r\n requests.post(\"/biomeecosystems\", biomeecosystem),\r\n update: (biomeecosystem: TreeType) =>\r\n requests.put(`/biomeecosystems/${biomeecosystem.id}`, biomeecosystem),\r\n delete: (id: string) => requests.del(`/biomeecosystems/${id}`),\r\n};\r\n\r\nconst Studies = {\r\n list: (filters: FreeTextQueryParams): Promise => {\r\n return requests.get(\"/studies/\", {\r\n params: filters,\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n });\r\n },\r\n userList: (): Promise => requests.get(\"/studies/userstudies/\"),\r\n details: (id: number) => requests.get(`/studies/${id}`),\r\n create: (study: Study) => requests.post(\"/studies\", study),\r\n update: (study: Study) => requests.put(`/studies/${study.id}`, study),\r\n delete: (id: number) => requests.del(`/studies/${id}`),\r\n};\r\n\r\nconst StudyValutations = {\r\n list: (filters: EsvdQueryParams): Promise => {\r\n return requests.get(\"/esvds/\", {\r\n params: filters.params,\r\n\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n });\r\n },\r\n\r\n studyValuations: (studyid: number): Promise => {\r\n return requests.get(`/esvds/studyvaluations/${studyid}`);\r\n },\r\n studyValuationApi: (studyId: string): Promise => {\r\n return requests.get(`/externalApi/study/valuations/${studyId}`);\r\n },\r\n details: (id: number): Promise => requests.get(`/esvds/${id}`),\r\n create: (esvd: Valuation) => requests.post(\"/esvds\", esvd),\r\n update: (esvd: Valuation) => requests.put(`/esvds/${esvd.id}`, esvd),\r\n delete: (id: number) => requests.del(`/esvds/${id}`),\r\n};\r\n\r\nconst ScaleOfStudySites = {\r\n list: (): Promise => requests.get(\"/scaleofstudysites/\"),\r\n details: (id: number) => requests.get(`/scaleofstudysites/${id}`),\r\n create: (item: DropdownType) => requests.post(\"/scaleofstudysites\", item),\r\n update: (item: DropdownType) =>\r\n requests.put(`/scaleofstudysites/${item.id}`, item),\r\n delete: (id: string) => requests.del(`/scaleofstudysites/${id}`),\r\n};\r\n\r\nconst StudyLocations = {\r\n list: (): Promise => requests.get(\"/studylocations/\"),\r\n details: (id: number) => requests.get(`/studylocations/${id}`),\r\n create: (item: DropdownType) => requests.post(\"/studylocations\", item),\r\n update: (item: DropdownType) =>\r\n requests.put(`/studylocations/${item.id}`, item),\r\n delete: (id: string) => requests.del(`/studylocations/${id}`),\r\n};\r\n\r\nconst UnitsOfMeasure = {\r\n list: (): Promise => requests.get(\"/unitofmeasures/\"),\r\n details: (id: number) => requests.get(`/unitofmeasures/${id}`),\r\n create: (item: DropdownType) => requests.post(\"/unitofmeasures\", item),\r\n update: (item: DropdownType) =>\r\n requests.put(`/unitofmeasures/${item.id}`, item),\r\n delete: (id: string) => requests.del(`/unitofmeasures/${id}`),\r\n};\r\n\r\nconst SiteConditions = {\r\n list: (): Promise => requests.get(\"/siteconditions/\"),\r\n details: (id: number) => requests.get(`/siteconditions/${id}`),\r\n create: (item: DropdownType) => requests.post(\"/siteconditions\", item),\r\n update: (item: DropdownType) =>\r\n requests.put(`/siteconditions/${item.id}`, item),\r\n delete: (id: string) => requests.del(`/siteconditions/${id}`),\r\n};\r\n\r\nconst ValuedChanges = {\r\n list: (): Promise => requests.get(\"/valuedchanges/\"),\r\n details: (id: number) => requests.get(`/valuedchanges/${id}`),\r\n create: (item: DropdownType) => requests.post(\"/valuedchanges\", item),\r\n update: (item: DropdownType) =>\r\n requests.put(`/valuedchanges/${item.id}`, item),\r\n delete: (id: string) => requests.del(`/valuedchanges/${id}`),\r\n};\r\n\r\nconst Currencies = {\r\n list: (): Promise => requests.get(\"/currencies/\"),\r\n details: (id: number) => requests.get(`/currencies/${id}`),\r\n create: (item: DropdownType) => requests.post(\"/currencies\", item),\r\n update: (item: DropdownType) => requests.put(`/currencies/${item.id}`, item),\r\n delete: (id: string) => requests.del(`/currencies/${id}`),\r\n};\r\n\r\nconst TemporalUnits = {\r\n list: (): Promise => requests.get(\"/temporalunits/\"),\r\n details: (id: number) => requests.get(`/temporalunits/${id}`),\r\n create: (item: DropdownType) => requests.post(\"/temporalunits\", item),\r\n update: (item: DropdownType) =>\r\n requests.put(`/temporalunits/${item.id}`, item),\r\n delete: (id: string) => requests.del(`/temporalunits/${id}`),\r\n};\r\n\r\nconst BeneficiaryUnits = {\r\n list: (): Promise => requests.get(\"/beneficiaryunits/\"),\r\n details: (id: number) => requests.get(`/beneficiaryunits/${id}`),\r\n create: (item: DropdownType) => requests.post(\"/beneficiaryunits\", item),\r\n update: (item: DropdownType) =>\r\n requests.put(`/beneficiaryunits/${item.id}`, item),\r\n delete: (id: string) => requests.del(`/beneficiaryunits/${id}`),\r\n};\r\n\r\nconst TypeOfBeneficiaries = {\r\n list: (): Promise => requests.get(\"/typeofbeneficiaries/\"),\r\n details: (id: number) => requests.get(`/typeofbeneficiaries/${id}`),\r\n create: (item: DropdownType) => requests.post(\"/typeofbeneficiaries\", item),\r\n update: (item: DropdownType) =>\r\n requests.put(`/typeofbeneficiaries/${item.id}`, item),\r\n delete: (id: string) => requests.del(`/typeofbeneficiaries/${id}`),\r\n};\r\n\r\nconst EcosystemConditions = {\r\n list: (): Promise => requests.get(\"/ecosystemconditions/\"),\r\n details: (id: number) => requests.get(`/ecosystemconditions/${id}`),\r\n create: (item: DropdownType) => requests.post(\"/ecosystemconditions\", item),\r\n update: (item: DropdownType) =>\r\n requests.put(`/ecosystemconditions/${item.id}`, item),\r\n delete: (id: number) => requests.del(`/ecosystemconditions/${id}`),\r\n};\r\n\r\nconst Ciceses = {\r\n list: (): Promise => requests.get(\"/cicesclasses/\"),\r\n details: (id: string) => requests.get(`/cicesclasses/${id}`),\r\n create: (cices: TreeType) => requests.post(\"/cicesclasses\", cices),\r\n update: (cices: TreeType) => requests.put(`/cicesclasses/${cices.id}`, cices),\r\n delete: (id: string) => requests.del(`/cicesclasses/${id}`),\r\n};\r\n\r\nconst SuggestStudies = {\r\n // list: (): Promise => requests.get(\"/suggeststudies/\"),\r\n // details: (id: number) => requests.get(`/suggeststudies/${id}`),\r\n create: (item: SuggestStudy) => requests.post(\"/suggeststudies\", item),\r\n // update: (item: DropdownType) =>\r\n // requests.put(`/suggeststudies/${item.id}`, item),\r\n // delete: (id: number) => requests.del(`/suggeststudies/${id}`),\r\n};\r\n\r\nconst FilterQueries = {\r\n list: (filters?: FilterQueryParams): Promise => {\r\n return requests.get(\"/filterqueries/\", {\r\n params: filters?.params,\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n });\r\n },\r\n totalCount: (): Promise => requests.get(\"/filterqueries/totalcount/\"),\r\n create: (query: FilterQuery) => requests.post(\"/filterqueries\", query),\r\n delete: (id: number) => requests.del(`/filterqueries/${id}`),\r\n};\r\n\r\nconst BiomeV2EcosystemV2Ecozones = {\r\n list: (): Promise => requests.get(\"/biomev2ecosystemv2ecozones/\"),\r\n details: (id: string) => requests.get(`/biomev2ecosystemv2ecozones/${id}`),\r\n create: (biomev2ecosystemv2ecozone: TreeType) =>\r\n requests.post(\"/biomev2ecosystemv2ecozones\", biomev2ecosystemv2ecozone),\r\n update: (biomev2ecosystemv2ecozone: TreeType) =>\r\n requests.put(`/biomev2ecosystemv2ecozones/${biomev2ecosystemv2ecozone.id}`, biomev2ecosystemv2ecozone),\r\n toggleStatsReady: (id: number, statsReady: boolean) =>\r\n requests.put(`/biomev2ecosystemv2ecozones/togglestatsready/${id}/${statsReady}`, {}),\r\n delete: (id: string) => requests.del(`/biomev2ecosystemv2ecozones/${id}`),\r\n};\r\n\r\n\r\nconst SEEAs = {\r\n list: (): Promise => requests.get(\"/seeas/\"),\r\n details: (id: string) => requests.get(`/seeas/${id}`),\r\n create: (seeas: TreeType) =>\r\n requests.post(\"/seeas\", seeas),\r\n update: (seeas: TreeType) =>\r\n requests.put(`/seeas/${seeas.id}`, seeas),\r\n delete: (id: string) => requests.del(`/seeas/${id}`),\r\n};\r\n\r\n\r\nconst ReferenceInfos = {\r\n list: (filters?: ReferenceInfo): Promise => {\r\n return requests.get(\"/referenceinfos/\", {\r\n params: filters,\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n });\r\n },\r\n details: (): Promise => requests.get(`/referenceinfos/currentversion`),\r\n create: (query: ReferenceInfo) => requests.post(\"/referenceinfos\", query),\r\n delete: (id: number) => requests.del(`/referenceinfos/${id}`),\r\n};\r\n\r\nconst UploadLists = {\r\n uploadJson: (data: UploadDto) => requests.post(\"/dataupload/uploadjsondataset\", data),\r\n uploadDatasetFile: (data: UploadDto) => requests.post(\"/dataupload/uploadfiledataset\", data),\r\n uploadFile: (data: any, options: any): any => requests.postFile(\"/dataupload/uploadfile\", data, options),\r\n uploadComplete: (): any => requests.get(\"/dataupload/UploadComplete\"),\r\n GetLastUploadStatistics: (): Promise => requests.get(\"/dataupload\"),\r\n};\r\n\r\n\r\n//VTT\r\n\r\nconst VttBiomes = {\r\n list: (paging:PagingParams,): Promise => requests.get(\"/vttbiomes/\", paging),\r\n listExclude: (): Promise =>\r\n requests.get(`/vttbiomes/exclude`),\r\n details: (id: number): Promise => requests.get(`/vttbiomes/${id}`),\r\n toggleShowForUserCalculations: (vttbiomeid: number, showForUserCalculations: boolean) =>\r\n requests.put(`/vttbiomes/toggledisplay/${vttbiomeid}/${showForUserCalculations}`,{}),\r\n create: (vttbiome: VttBiome) => requests.post(\"/vttbiomes\", vttbiome),\r\n update: (vttbiome: VttBiome) => requests.put(`/vttbiomes/${vttbiome.id}`, vttbiome),\r\n count: (): Promise => requests.get(\"/VttBiomes/count/\"),\r\n delete: (id: number) => requests.del(`/vttbiomes/${id}`),\r\n};\r\n\r\nconst VttSubBiomes = {\r\n list: (paging:PagingParams): Promise => requests.get(\"/vttsubbiomes/\", paging),\r\n details: (id: number):Promise => requests.get(`/vttsubbiomes/${id}`),\r\n create: (vttsubbiome: VttSubBiome) => requests.post(\"/vttsubbiomes\", vttsubbiome),\r\n update: (vttsubbiome: VttSubBiome) => requests.put(`/vttsubbiomes/${vttsubbiome.id}`, vttsubbiome),\r\n count: (): Promise => requests.get(\"/vttsubbiomes/count/\"),\r\n delete: (id: number) => requests.del(`/vttsubbiomes/${id}`),\r\n};\r\n\r\nconst VttVariables = {\r\n list: (paging: PagingParams): Promise => requests.get(\"/vttvariables/\", paging),\r\n listUnattachedVariables: (biomeid: number,selectedVariableid: number|null): Promise => requests.get(`/vttvariables/unattachedvariables/${biomeid}/${selectedVariableid}`),\r\n listExclusiveUnattachedVariables: (biomeid: number): Promise => requests.get(`/vttvariables/exclusiveunattachedvariables/${biomeid}`),\r\n details: (id: number):Promise => requests.get(`/vttvariables/${id}`),\r\n create: (vttvariable: VttVariable) => requests.post(\"/vttvariables\", vttvariable),\r\n update: (vttvariable: VttVariable) => requests.put(`/vttvariables/${vttvariable.id}`, vttvariable),\r\n count: (): Promise => requests.get(\"/vttvariables/count/\"),\r\n delete: (id: number) => requests.del(`/vttvariables/${id}`),\r\n};\r\n\r\nconst VttVariableDetailMaps = {\r\n list: (vttbiomeid:number): Promise => requests.get(`/vttvariabledetailmaps/${vttbiomeid}`),\r\n // details: (vttbiomeid: number,vttvariableid:number):Promise => requests.get(`/vttvariabledetailmaps/${vttbiomeid}/${vttvariableid}`),\r\n details: (detailid: number):Promise => requests.get(`/vttvariabledetailmaps/details/${detailid}`),\r\n create: (vttvariabledetailmap: VttVariableDetailMap) => requests.post(\"/vttvariabledetailmaps\", vttvariabledetailmap),\r\n update: (vttvariabledetailmap: VttVariableDetailMap) => requests.put(`/vttvariabledetailmaps/${vttvariabledetailmap.id}`, vttvariabledetailmap),\r\n count: (): Promise => requests.get(\"/vttvariabledetailmaps/count/\"),\r\n delete: (id: number) => requests.del(`/vttvariabledetailmaps/${id}`),\r\n};\r\n\r\n\r\n//VSL\r\n\r\n\r\nconst VslUploadLists = {\r\n uploadJson: (data: UploadDto) => requests.post(\"/vsldataupload/uploadjsondataset\", data),\r\n uploadDatasetFile: (data: UploadDto) => requests.post(\"/vsldataupload/uploadfiledataset\", data),\r\n uploadFile: (data: any, options: any): any => requests.postFile(\"/vsldataupload/uploadfile\", data, options),\r\n uploadComplete: (): any => requests.get(\"/vsldataupload/UploadComplete\"),\r\n GetLastUploadStatistics: (): Promise => requests.get(\"/vsldataupload\"),\r\n};\r\n\r\n\r\n\r\nconst Vsls = {\r\n\r\n list: (filters: EsvdQueryParams): Promise => {\r\n return requests.get(\"/valuationstudies/\",\r\n {\r\n params: filters.params,\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n }\r\n );\r\n },\r\n listCount: (filters: EsvdQueryParams): Promise => {\r\n return requests.get(\"/valuationstudies/count\", {\r\n params: filters.params,\r\n paramsSerializer: (params: any) => {\r\n return Qs.stringify(params);\r\n },\r\n });\r\n },\r\n create: (vslUpdate: VslValuationStudy) => requests.post(\"/valuationstudies\", vslUpdate),\r\n update: (vslUpdate: VslValuationStudy) => requests.put(`/valuationstudies/${vslUpdate.id}`, vslUpdate),\r\n delete: (id: number) => requests.del(`/valuationstudies/${id}`),\r\n \r\n};\r\n\r\nconst Apikey = {\r\n getApiKey: (): Promise => {\r\n return requests.get(\"/ExternalApi/generateapi\")\r\n //\r\n// return axios({\r\n// method: 'get',\r\n// url: '/externalapi/generateapi', // Relative URL\r\n// baseURL: process.env.REACT_APP_RAW_URL, // Override the base URL\r\n// }).then(responseBody);\r\n },\r\n};\r\n\r\nconst FeedbackMessage = {\r\n send: (item: Feedback) => requests.post(\"/feedback\", item),\r\n};\r\n\r\nconst obj = {\r\n Apikey,\r\n Account,\r\n Esvds,\r\n EsvdMaps,\r\n Countries,\r\n ProtectionStatuses,\r\n Continents,\r\n ValuationMethods,\r\n EcosystemServices,\r\n SEEAs,\r\n BiomeEcosystems,\r\n BiomeV2EcosystemV2Ecozones,\r\n EsvdStats,\r\n Studies,\r\n StudyValutations,\r\n\r\n ScaleOfStudySites,\r\n StudyLocations,\r\n UnitsOfMeasure,\r\n SiteConditions,\r\n ValuedChanges,\r\n Currencies,\r\n TemporalUnits,\r\n BeneficiaryUnits,\r\n TypeOfBeneficiaries,\r\n Ciceses,\r\n EcosystemConditions,\r\n SuggestStudies,\r\n FilterQueries,\r\n ReferenceInfos,\r\n UploadLists,\r\n\r\n //vtt\r\n VttBiomes,\r\n VttSubBiomes,\r\n VttVariables,\r\n VttVariableDetailMaps,\r\n\r\n //vsl\r\n VslUploadLists,\r\n Vsls,\r\n\r\n FeedbackMessage\r\n};\r\nexport default obj;\r\n","import { AccessControl } from \"role-acl\";\r\nimport { resources, userRole, actions } from \"../shared/Literals\";\r\n\r\n//https://auth0.com/blog/role-based-access-control-rbac-and-react-apps/#:~:text=To%20start%20using%20Role%2DBased,a%20static%20and%20a%20dynamic.\r\n\r\nconst ac = new AccessControl();\r\n\r\nac.grant(userRole.basic)\r\n .execute(actions.read)\r\n .on(resources.home.name)\r\n .execute(actions.read)\r\n .on(resources.esvd.name)\r\n .on(resources.userProfile.name)\r\n .execute(actions.read)\r\n \r\n .grant(userRole.user)\r\n .extend(userRole.basic)\r\n .execute(actions.read)\r\n .on(resources.suggestStudy.name)\r\n \r\nac.grant(userRole.editorInChief)\r\n .extend(userRole.basic)\r\n .execute(actions.read)\r\n .on(resources.studyEditor.name);\r\n\r\nac.grant(userRole.dataAnalyst)\r\n .extend(userRole.basic)\r\n .execute(actions.read)\r\n .on(resources.study.name);\r\n\r\nac.grant(userRole.admin).extend([\r\n userRole.user,\r\n userRole.dataAnalyst,\r\n userRole.editorInChief,\r\n]).execute(actions.read)\r\n .on(resources.admin.name);;\r\n\r\nac.grant(userRole.admin)\r\n .execute(actions.read)\r\n .on(resources.downloads.name);\r\n\r\nac.grant(userRole.admin)\r\n .execute(actions.read)\r\n .on(resources.settings.name);\r\n\r\nac.grant(userRole.admin)\r\n .execute(actions.read)\r\n .on(resources.vtt.name);\r\n\r\nac.grant(userRole.admin)\r\n .execute(actions.read)\r\n .on(resources.vttCalculations.name);\r\n\r\nac.grant(userRole.admin)\r\n .execute(actions.read)\r\n .on(resources.uploads.name);\r\n\r\n// ac.grant(userRole.cocapacity)\r\n// .extend(userRole.admin)\r\n// .execute(actions.read)\r\n// .on(resources.admin.name);\r\n\r\nac.grant(userRole.cocapacity)\r\n .extend(userRole.admin)\r\n .execute(actions.read)\r\n .on(resources.vsluploads.name);\r\n\r\nac.grant(userRole.cocapacity)\r\n .extend(userRole.admin)\r\n .execute(actions.read)\r\n .on(resources.apikeySetup.name);\r\n\r\nexport default ac;\r\n","import React, { useContext } from \"react\";\r\nimport history from \"../history\";\r\n\r\nimport agent from \"../api/agent\";\r\nimport { User, UserLoginMode } from \"../models/user\";\r\nimport { UserQueryParams } from \"../models/EsvdQueryFilters\";\r\nimport { resources } from \"../shared/Literals\";\r\nimport access from \"../accessControls/rbac-rules\";\r\n\r\nconst CryptoJS = require(\"crypto-js\");\r\n\r\ninterface IValue {\r\n\tisRefresh: boolean;\r\n\tuser?: User | null;\r\n\tlogin: Function;\r\n\tloginWithOtp: Function;\r\n\tsignup: Function;\r\n\tlogout: Function;\r\n\tupdateUser: Function;\r\n\tgetUsers: Function;\r\n\tgetUsersCount: Function;\r\n\tfetchCurrentUser: Function;\r\n\tforgotpassword: Function;\r\n\tresendconfirmationlink: Function;\r\n\tconfirmemail: Function;\r\n\tresetpassword: Function;\r\n\tsetToken: Function;\r\n\tgetToken: Function;\r\n\tsetUserLoginMode: Function;\r\n\tuserLoginMode?: UserLoginMode | null;\r\n\tverifyUsername: Function;\r\n\tGenerateOtp: Function;\r\n\t// setAppLoaded: boolean;\r\n}\r\n\r\nconst AuthContext = React.createContext(null);\r\n\r\n// The AuthProvider is responsible for Auth management\r\nconst AuthProvider = ({ children }: { children: any }) => {\r\n\tconst [user, setUser] = React.useState();\r\n\tconst [userLoginMode, setUserLoginMode] =\r\n\t\tReact.useState();\r\n\tconst [isRefresh, setIsRefresh] = React.useState(false);\r\n\t// const [setAppLoaded] = React.useState(true);\r\n\r\n\tconst fetchCurrentUser = async () => {\r\n\t\ttry {\r\n\t\t\t// dispatch({ type: CURRENT_USER_CHECKED, payload: true });\r\n\t\t\tconst token = getToken();\r\n\t\t\tif (!token) {\r\n\t\t\t\tsetUser(null);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst isRefresh = sessionStorage.getItem(\"refreshToken\");\r\n\t\t\tif (!isRefresh) {\r\n\t\t\t\tsessionStorage.removeItem(\"jwt\");\r\n\t\t\t\tlogout();\r\n\t\t\t\tsetUser(null);\r\n\t\t\t\treturn;\r\n\t\t\t} else {\r\n\t\t\t\tsetIsRefresh(true);\r\n\t\t\t}\r\n\r\n\t\t\tconst us = await agent.Account.current();\r\n\t\t\tif (!us) {\r\n\t\t\t\tsetUser(null);\r\n\t\t\t\t// dispatch({ type: FETCH_USER, payload: null });\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tsessionStorage.setItem(\"refreshToken\", \"true\");\r\n\r\n\t\t\tawait buildResourcePermissionsList(us);\r\n\t\t\tsetToken(us.token);\r\n\t\t\tsetUser(us);\r\n\t\t\t// dispatch({ type: FETCH_USER, payload: user });\r\n\t\t} catch (error: any) {\r\n\t\t\t// console.log(error);\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * build an array of resource permissions for the user. This will be used in the \"Can\" component to determine which resources\r\n\t * the user can access and those not accessible\r\n\t * @param user user for whom this list is being built\r\n\t */\r\n\tconst buildResourcePermissionsList = async (user: User) => {\r\n\t\tuser.resourceAccess = [];\r\n\t\tfor (const value of Object.values(resources)) {\r\n\t\t\tconst permission = await access\r\n\t\t\t\t.can(user.role)\r\n\t\t\t\t.sync()\r\n\t\t\t\t.execute(\"read\")\r\n\t\t\t\t.sync()\r\n\t\t\t\t.on(value.name);\r\n\r\n\t\t\tuser.resourceAccess.push({\r\n\t\t\t\tresource: value.name,\r\n\t\t\t\tgranted: permission.granted,\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\t// useEffect(() => {\r\n\t// \t// fetchCurrentUser();\r\n\t// \treturn () => {};\r\n\t// }, []);\r\n\r\n\tconst login = async (values: any) => {\r\n\t\ttry {\r\n\t\t\tconst key = process.env.REACT_APP_CRYPTO_KEY || \"\";\r\n\r\n\t\t\t//encrypt token\r\n\t\t\tvalues.password = CryptoJS.AES.encrypt(values.password, key).toString();\r\n\t\t\tvalues.varpass = key;\r\n\t\t\tconst us = await agent.Account.login(values);\r\n\t\t\tsetToken(us.token);\r\n\t\t\tawait buildResourcePermissionsList(us);\r\n\t\t\tsessionStorage.setItem(\"refreshToken\", \"true\");\r\n\t\t\tsetUser(us);\r\n\t\t\t// dispatch({ type: FETCH_USER, payload: user });\r\n\t\t} catch (error: any) {\r\n\t\t\tsetUser(null);\r\n\t\t\tthrow error.response ? error.response.data : error.message;\r\n\t\t}\r\n\t};\r\n\tconst loginWithOtp = async (values: any) => {\r\n\t\ttry {\r\n\t\t\tconst us = await agent.Account.loginwithotp(values);\r\n\t\t\tsetToken(us.token);\r\n\t\t\tawait buildResourcePermissionsList(us);\r\n\t\t\tsessionStorage.setItem(\"refreshToken\", \"true\");\r\n\t\t\tsetUser(us);\r\n\t\t\t// dispatch({ type: FETCH_USER, payload: user });\r\n\t\t} catch (error: any) {\r\n\t\t\tsetUser(null);\r\n\t\t\tthrow error.response ? error.response.data : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst verifyUsername = async (usernameOrEmail: any) => {\r\n\t\ttry {\r\n\t\t\treturn await agent.Account.verifyuser(usernameOrEmail);\r\n\t\t\t// setUserLoginMode(us);\r\n\t\t\t// dispatch({ type: FETCH_USER, payload: user });\r\n\t\t} catch (error: any) {\r\n\t\t\tsetUserLoginMode(null);\r\n\t\t\tthrow error.response ? error.response.data : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst GenerateOtp = async (usernameOrEmail: any) => {\r\n\t\ttry {\r\n\t\t\tawait agent.Account.GenerateOtp(usernameOrEmail);\r\n\t\t\treturn;\r\n\t\t} catch (error: any) {\r\n\t\t\tsetUserLoginMode(null);\r\n\t\t\tthrow error.response ? error.response.data : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst signup = async (values: any) => {\r\n\t\ttry {\r\n\t\t\tconst key = process.env.REACT_APP_CRYPTO_KEY || \"\";\r\n\t\t\t//encrypt token\r\n\t\t\tvalues.password = CryptoJS.AES.encrypt(values.password, key).toString();\r\n\t\t\tvalues.varpass = key;\r\n\t\t\tconst us = await agent.Account.signup(values);\r\n\t\t\t// setToken(us.token);\r\n\t\t\t// await buildResourcePermissionsList(us);\r\n\t\t\t// sessionStorage.setItem(\"refreshToken\", \"true\");\r\n\t\t\t// setUser(us);\r\n\t\t\t// dispatch({ type: FETCH_USER, payload: user });\r\n\t\t} catch (error: any) {\r\n\t\t\tsetUser(null);\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst logout = async (\r\n\t\tforced: boolean = false,\r\n\t\tisTimeout: boolean = false\r\n\t) => {\r\n\t\t//\r\n\t\tawait agent.Account.logout();\r\n\t\tsetToken();\r\n\t\tsessionStorage.setItem(\"refreshToken\", \"false\");\r\n\t\tsetIsRefresh(false);\r\n\t\tsetUser(null);\r\n\t\tif (!forced) {\r\n\t\t\tisTimeout ? history.push(\"/login\") : history.push(\"/\");\r\n\t\t} else {\r\n\t\t\thistory.push(\"/login\");\r\n\t\t}\r\n\t};\r\n\r\n\tconst updateUser = async (values: any) => {\r\n\t\ttry {\r\n\t\t\tconst user1 = await agent.Account.useredit(values);\r\n\t\t\t// setToken(user.token);\r\n\t\t\tuser1 && (await buildResourcePermissionsList(user1));\r\n\t\t\tsetUser(user1);\r\n\t\t} catch (error: any) {\r\n\t\t\t// setUser(null);\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getUsers = async (userQuery?: UserQueryParams) => {\r\n\t\ttry {\r\n\t\t\tconst items = await agent.Account.userslist(userQuery);\r\n\t\t\treturn items.sort((a, b) => {\r\n\t\t\t\treturn !!a.registrationDate > !!b.registrationDate ? 1 : -1; //sort by study in descending order\r\n\t\t\t});\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getUsersCount = async () => {\r\n\t\ttry {\r\n\t\t\treturn await agent.Account.usersCount();\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst forgotpassword = async (values: any) => {\r\n\t\ttry {\r\n\t\t\tawait agent.Account.forgotpassword(values);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst resendconfirmationlink = async (values: any) => {\r\n\t\ttry {\r\n\t\t\tawait agent.Account.resendconfirmationlink(values);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.data : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst confirmemail = async (values: any) => {\r\n\t\ttry {\r\n\t\t\tif (!values.username || !values.code) {\r\n\t\t\t\tthrow new Error(\"Invalid operation.\");\r\n\t\t\t}\r\n\t\t\tawait agent.Account.confirmemail(values);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.data : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst resetpassword = async (values: any) => {\r\n\t\ttry {\r\n\t\t\tconst key = process.env.REACT_APP_CRYPTO_KEY || \"\";\r\n\t\t\t//encrypt token\r\n\t\t\tvalues.password = CryptoJS.AES.encrypt(values.password, key).toString();\r\n\t\t\tvalues.varpass = key;\r\n\t\t\tawait agent.Account.resetpassword(values);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst setToken = (token?: string) => {\r\n\t\tif (token) {\r\n\t\t\ttry {\r\n\t\t\t\tconst key = process.env.REACT_APP_CRYPTO_KEY || \"\";\r\n\t\t\t\t//encrypt token\r\n\t\t\t\tconst token_enc = CryptoJS.AES.encrypt(token, key).toString();\r\n\t\t\t\t// const token_enc = CryptoJS.AES.encrypt(JSON.stringify({ token }), key).toString();\r\n\t\t\t\t// window.localStorage.setItem(\"jwt\", token_enc);\r\n\t\t\t\tsessionStorage.setItem(\"jwt\", token_enc);\r\n\t\t\t} catch (error) {}\r\n\t\t} else {\r\n\t\t\tsessionStorage.removeItem(\"jwt\");\r\n\t\t\t// window.localStorage.removeItem(\"jwt\");\r\n\t\t}\r\n\t};\r\n\r\n\tconst getToken = () => {\r\n\t\tlet token = sessionStorage.getItem(\"jwt\");\r\n\t\tif (token) {\r\n\t\t\ttry {\r\n\t\t\t\tconst key = process.env.REACT_APP_CRYPTO_KEY || \"\";\r\n\t\t\t\t//decrypt token\r\n\t\t\t\tconst tokenBytes = CryptoJS.AES.decrypt(token, key);\r\n\t\t\t\ttoken = tokenBytes.toString(CryptoJS.enc.Utf8);\r\n\t\t\t\t// dispatch({ type: SET_USER_TOKEN, payload: token });\r\n\t\t\t} catch (error) {}\r\n\t\t}\r\n\r\n\t\treturn token;\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useAuth = () => {\r\n\tconst auth = useContext(AuthContext);\r\n\tif (auth == null) {\r\n\t\tthrow new Error(\"useAuth() called outside of a auth hook?\");\r\n\t}\r\n\treturn auth;\r\n};\r\n\r\nexport { AuthProvider, useAuth };\r\n","import React, { useEffect } from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { User } from \"../models/user\";\r\n// import { connect } from \"react-redux\";\r\nimport { useAuth } from \"../providers/AuthProvider\";\r\n\r\ninterface IProps {\r\n\t// user: User;\r\n\tyes: Function;\r\n\tno?: Function;\r\n\tresource: any;\r\n\taction: any;\r\n\tlocation?: string;\r\n\t// currentUserChecked: boolean;\r\n\t// isRefresh: boolean;\r\n}\r\n\r\nconst Can = (props: IProps) => {\r\n\tconst { user, isRefresh, fetchCurrentUser } = useAuth();\r\n\tconst checkResourcePermission = (user: User) => {\r\n\t\tconst { yes, no, resource } = props;\r\n\r\n\t\tconst permission = user.resourceAccess?.find(\r\n\t\t\t(x) => x.resource === resource\r\n\t\t);\r\n\t\treturn !permission || !permission.granted\r\n\t\t\t? no\r\n\t\t\t\t? no()\r\n\t\t\t\t: () => \r\n\t\t\t: yes();\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tfetchCurrentUser();\r\n\t}, []);\r\n\r\n\tif (\r\n\t\t// !currentUserChecked &&\r\n\t\t!user &&\r\n\t\twindow.location.pathname !== \"/\" &&\r\n\t\t!isRefresh //for refresh, we skip showing the login screen\r\n\t) {\r\n\t\tif (user === undefined) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn (\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tif (!user) {\r\n\t\tif (isRefresh) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn ;\r\n\t}\r\n\r\n\treturn checkResourcePermission(user);\r\n\t// return (\r\n\t// \t<>\r\n\t// \t\t{!user ? (\r\n\t// \t\t\t\r\n\t// \t\t) : (\r\n\t// \t\t\tcheckResourcePermission(user)\r\n\t// \t\t)}\r\n\t// \t\r\n\t// );\r\n};\r\n// }\r\n\r\nexport default Can; // connect(mapStateToProps, {})(Can);\r\n","export default __webpack_public_path__ + \"static/media/esvd-newlogo.e684550e.webp\";","import { Component } from \"react\";\r\n// import esvd_logo from \"../../images/esvd_logo.jpg\";\r\n// import esvd_logo2 from \"../../images/esvd_logo_3.png\";\r\n// import esvd_logo from \"../../images/esvd_newlogosmall.jpg\";\r\nimport esvd_logo from \"../../images/esvd-newlogo.webp\";\r\n//set the image size to half its zise\r\n\r\nconst EcosystemLogo = () => {\r\n\t// render() {\r\n\treturn (\r\n\t\t\r\n\t);\r\n\t// }\r\n};\r\n\r\nexport default EcosystemLogo;\r\n","// import { filter } from \"lodash\";\r\nimport React, { createRef, Fragment, useEffect } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport {\r\n\tButton,\r\n\tContainer,\r\n\tDropdown,\r\n\tIcon,\r\n\tMenu,\r\n\tSegment,\r\n} from \"semantic-ui-react\";\r\nimport Can from \"../accessControls/Can\";\r\nimport EcosystemLogo from \"../components/home/EcosystemLogo\";\r\nimport { useAuth } from \"../providers/AuthProvider\";\r\nimport { actions, resources } from \"../shared/Literals\";\r\n\r\nconst NavBar = () => {\r\n\tconst { user, fetchCurrentUser } = useAuth();\r\n\tconst profileRef = createRef();\r\n\tconst [active, setActive] = React.useState(resources.home.name);\r\n\r\n\tuseEffect(() => {\r\n\t\t//get the current window path\r\n\t\tconst pathname = window.location && window.location.pathname;\r\n\t\t//get the name of the resource with this pathname\r\n\t\tconst resource = Object.values(resources).find(\r\n\t\t\t(value: any) => value.path === pathname\r\n\t\t);\r\n\r\n\t\tif (\r\n\t\t\tresource?.name === resources.userprofiledownloads.name ||\r\n\t\t\tresource?.name === resources.filterqueriesdownloads.name\r\n\t\t) {\r\n\t\t\tsetActive(resources.downloads.name);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tresource && setActive(resource.name);\r\n\t\tfetchCurrentUser();\r\n\t}, []);\r\n\r\n\tconst handleItemClick = (name: string) => {\r\n\t\tsetActive(name);\r\n\t};\r\n\r\n\tconst renderLeftMenu = () => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t {\r\n\t\t\t\t\t\thandleItemClick(resources.esvd.name);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tas={Link}\r\n\t\t\t\t\tto={`${resources.esvd.path}`}\r\n\t\t\t\t/>\r\n\t\t\t\t{user && (\r\n\t\t\t\t\t (\r\n\t\t\t\t\t\t\t handleItemClick(resources.vttCalculations.name)}\r\n\t\t\t\t\t\t\t\tas={Link}\r\n\t\t\t\t\t\t\t\tto={`${resources.vttCalculations.path}`}>\r\n\t\t\t\t\t\t\t\t{resources.vttCalculations.label}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{user && (\r\n\t\t\t\t\t (\r\n\t\t\t\t\t\t\t handleItemClick(resources.suggestStudy.name)}\r\n\t\t\t\t\t\t\t\tas={Link}\r\n\t\t\t\t\t\t\t\tto={`${resources.suggestStudy.path}`}>\r\n\t\t\t\t\t\t\t\t{resources.suggestStudy.name}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{user && (\r\n\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\thandleItemClick(resources.admin.name);\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t handleItemClick(resources.admin.name)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{resources.vtt.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t handleItemClick(resources.admin.name)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{resources.earlybird.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t handleItemClick(resources.admin.name)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{resources.statsReady.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t handleItemClick(resources.admin.name)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{resources.vsl.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t{user && (\r\n\t\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleItemClick(resources.admin.name)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{resources.settings.name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t\t\t{user && (\r\n\t\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleItemClick(resources.admin.name)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{resources.apikeySetup.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t handleItemClick(resources.admin.name)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{resources.userprofiledownloads.name}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t handleItemClick(resources.admin.name)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{resources.filterqueriesdownloads.name}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t handleItemClick(resources.admin.name)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{resources.uploads.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t{user && (\r\n\t\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleItemClick(resources.vsluploads.name)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{resources.vsluploads.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t);\r\n\t\t// }\r\n\t};\r\n\r\n\tconst renderNav = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t handleItemClick(resources.home.name)}\r\n\t\t\t\t\t\t\tas={Link}\r\n\t\t\t\t\t\t\tto={\"/\"}>\r\n\t\t\t\t\t\t\t{resources.home.name}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{renderLeftMenu()}\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{!user ? (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tLogin/Sign Up\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleItemClick(resources.userProfile.name)\r\n\t\t\t\t\t\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tMy Profile\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tLogout\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t};\r\n\treturn renderNav();\r\n};\r\n\r\nexport default NavBar;\r\n","import React, { Fragment, useEffect } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Dropdown, Icon, Menu, Sidebar } from \"semantic-ui-react\";\r\nimport Can from \"../accessControls/Can\";\r\nimport EcosystemLogo from \"../components/home/EcosystemLogo\";\r\nimport { useAuth } from \"../providers/AuthProvider\";\r\nimport { actions, resources } from \"../shared/Literals\";\r\n\r\ninterface IProps {\r\n\tonSidebarOpened: Function;\r\n\tsidebarOpened: boolean;\r\n}\r\n\r\nconst NavBarMobile = (props: IProps) => {\r\n\tconst { user, fetchCurrentUser } = useAuth();\r\n\tconst [active, setActive] = React.useState(resources.home.name);\r\n\r\n\tuseEffect(() => {\r\n\t\t//get the current window path\r\n\t\tconst pathname = window.location && window.location.pathname;\r\n\t\t//get the name of the resource with this pathname\r\n\t\tconst resource = Object.values(resources).find(\r\n\t\t\t(value: any) => value.path === pathname\r\n\t\t);\r\n\r\n\t\tif (\r\n\t\t\tresource?.name === resources.userprofiledownloads.name ||\r\n\t\t\tresource?.name === resources.filterqueriesdownloads.name\r\n\t\t) {\r\n\t\t\tsetActive(resources.downloads.name);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tresource && setActive(resource.name);\r\n\t\tfetchCurrentUser();\r\n\t}, []);\r\n\r\n\tconst handleSidebarHide = () => {\r\n\t\tconst { onSidebarOpened } = props;\r\n\t\tonSidebarOpened && onSidebarOpened();\r\n\t};\r\n\r\n\tconst handleItemClick = (name: string) => {\r\n\t\tconst { sidebarOpened } = props;\r\n\t\tif (sidebarOpened) {\r\n\t\t\thandleSidebarHide();\r\n\t\t} else {\r\n\t\t\tsetActive(name);\r\n\t\t}\r\n\t};\r\n\r\n\tconst renderLeftMenu = () => {\r\n\t\t// const { activeItem } = this.state;\r\n\t\t// const { user } = this.props;\r\n\r\n\t\t// if (user) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t handleItemClick(resources.esvd.name)}\r\n\t\t\t\t\tas={Link}\r\n\t\t\t\t\tto={`${resources.esvd.path}`}\r\n\t\t\t\t/>\r\n\t\t\t\t{user && (\r\n\t\t\t\t\t (\r\n\t\t\t\t\t\t\t handleItemClick(resources.vttCalculations.name)}\r\n\t\t\t\t\t\t\t\tas={Link}\r\n\t\t\t\t\t\t\t\tto={`${resources.vttCalculations.path}`}>\r\n\t\t\t\t\t\t\t\t{resources.vttCalculations.label}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t\t{user && (\r\n\t\t\t\t\t (\r\n\t\t\t\t\t\t\t handleItemClick(resources.admin.name)}\r\n\t\t\t\t\t\t\t\tas={Link}\r\n\t\t\t\t\t\t\t\tto={`${resources.earlybird.path}`}>\r\n\t\t\t\t\t\t\t\t{resources.earlybird.label}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t\t{\r\n\t\t\t\t\tuser && (\r\n\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t handleItemClick(resources.suggestStudy.name)}\r\n\t\t\t\t\t\t\t\t\tas={Link}\r\n\t\t\t\t\t\t\t\t\tto={`${resources.suggestStudy.path}`}>\r\n\t\t\t\t\t\t\t\t\t{resources.suggestStudy.name}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)\r\n\t\t\t\t\t// : (\r\n\t\t\t\t\t// \t handleItemClick(resources.suggestStudy.name)}\r\n\t\t\t\t\t// \t\tas={Link}\r\n\t\t\t\t\t// \t\tto={`${resources.suggestStudy.path}`}>\r\n\t\t\t\t\t// \t\t{resources.suggestStudy.name}\r\n\t\t\t\t\t// \t\r\n\t\t\t\t\t// )\r\n\t\t\t\t}\r\n\r\n\t\t\t\t{/* {user && (\r\n\t\t\t\t\t (\r\n\t\t\t\t\t\t\t handleItemClick(resources.studyEditor.name)}\r\n\t\t\t\t\t\t\t\tas={Link}\r\n\t\t\t\t\t\t\t\tto={`${resources.studyEditor.path}`}>\r\n\t\t\t\t\t\t\t\t{resources.studyEditor.name}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)} */}\r\n\r\n\t\t\t\t{user && (\r\n\t\t\t\t\t (\r\n\t\t\t\t\t\t\t// \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{resources.vtt.label}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{resources.statsReady.label}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{resources.vsl.label}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{/* \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{resources.study.name}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{resources.studyEditor.name}\r\n\t\t\t\t\t\t\t\t\t\t */}\r\n\r\n\t\t\t\t\t\t\t\t\t\t{user && (\r\n\t\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{resources.settings.name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t{user && (\r\n\t\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{resources.apikeySetup.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{resources.userprofiledownloads.name}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{resources.filterqueriesdownloads.name}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{resources.uploads.label}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t{user && (\r\n\t\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{resources.vsluploads.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t// \r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\tno={() => null}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t);\r\n\t\t// }\r\n\t};\r\n\r\n\tconst renderNav = () => {\r\n\t\tconst { sidebarOpened } = props;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t handleItemClick(resources.home.name)}\r\n\t\t\t\t\tas={Link}\r\n\t\t\t\t\tto={\"/\"}\r\n\t\t\t\t/>\r\n\t\t\t\t{renderLeftMenu()}\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t{!user ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tLogin/Sign Up\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tMy Profile\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{/* \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tAccount Settings\r\n\t\t\t\t\t\t\t\t\t */}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tLogout\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\treturn renderNav();\r\n};\r\n\r\nexport default NavBarMobile;\r\n","import agent from \"../api/agent\";\r\nimport { Valuation } from \"../models/Valuation\";\r\nimport { initValuation } from \"../shared/Literals\";\r\nexport const VALUATION_CREATE = \"VALUATION_CREATE\";\r\nexport const VALUATION_EDIT = \"VALUATION_EDIT\";\r\nexport const VALUATION_DELETE = \"VALUATION_DELETE\";\r\nexport const VALUATION_FETCH = \"VALUATION_FETCH\";\r\nexport const VALUATIONS_FETCH = \"VALUATIONS_FETCH\";\r\nexport const USER_VALUATIONS_FETCH = \"USER_VALUATIONS_FETCH\";\r\n\r\nexport const fetchStudyValuations =\r\n (studyid: number | null) => async (dispatch: any) => {\r\n try {\r\n //reset the valuation list\r\n dispatch({\r\n type: USER_VALUATIONS_FETCH,\r\n payload: [],\r\n });\r\n const response = !studyid\r\n ? []\r\n : await agent.StudyValutations.studyValuations(studyid);\r\n\r\n dispatch({\r\n type: USER_VALUATIONS_FETCH,\r\n payload: response,\r\n });\r\n } catch (error: any) {\r\n throw error.response ? error.response.statusText : error.message;\r\n }\r\n };\r\n\r\nexport const fetchStudyValuation =\r\n (valuation: Valuation) => async (dispatch: any) => {\r\n try {\r\n const response =\r\n !valuation.id || valuation.id === 0\r\n ? initValuation\r\n : await agent.StudyValutations.details(valuation.id);\r\n\r\n dispatch({\r\n type: VALUATION_FETCH,\r\n payload: response,\r\n });\r\n } catch (error: any) {\r\n throw error.response ? error.response.statusText : error.message;\r\n }\r\n };\r\n\r\nexport const setAsCurrentValuation =\r\n (valuation: Valuation) => async (dispatch: any) => {\r\n dispatch({\r\n type: VALUATION_FETCH,\r\n payload: valuation,\r\n });\r\n };\r\n\r\nexport const saveValuation =\r\n (valuation: Valuation) => async (dispatch: any) => {\r\n try {\r\n if (valuation.id === null) {\r\n valuation.id = 0;\r\n }\r\n const response =\r\n !valuation.id || valuation.id === 0\r\n ? await agent.StudyValutations.create(valuation)\r\n : await agent.StudyValutations.update(valuation);\r\n\r\n dispatch({\r\n type:\r\n !valuation.id || valuation.id === 0\r\n ? VALUATION_CREATE\r\n : VALUATION_EDIT,\r\n payload: response,\r\n });\r\n } catch (error: any) {\r\n throw error.response ? error.response.statusText : error.message;\r\n }\r\n };\r\n\r\nexport const deleteValuation = (id: number) => async (dispatch: any) => {\r\n try {\r\n await agent.StudyValutations.delete(id);\r\n dispatch({\r\n type: VALUATION_DELETE,\r\n payload: id,\r\n });\r\n } catch (error: any) {\r\n throw error.response ? error.response.statusText : error.message;\r\n }\r\n};\r\n","import agent from \"../api/agent\";\r\nexport const BIOMEV2_ECOSYSTEMV2_CREATE = \"BIOMEV2_ECOSYSTEMV2_CREATE\";\r\nexport const BIOMEV2_ECOSYSTEMV2_EDIT = \"BIOMEV2_ECOSYSTEMV2_EDIT\";\r\nexport const BIOMEV2_ECOSYSTEMV2_DELETE = \"BIOMEV2_ECOSYSTEMV2_DELETE\";\r\nexport const BIOMEV2_ECOSYSTEMV2_FETCH = \"BIOMEV2_ECOSYSTEMV2_FETCH\";\r\nexport const BIOMEV2_ECOSYSTEMV2S_FETCH = \"BIOMEV2_ECOSYSTEMV2S_FETCH\";\r\n\r\nexport const fetchBiomeV2EcosystemV2Ecozones = () => async (dispatch: any) => {\r\n const response = await agent.BiomeV2EcosystemV2Ecozones.list();\r\n\r\n dispatch({\r\n type: BIOMEV2_ECOSYSTEMV2S_FETCH,\r\n payload: response,\r\n });\r\n};\r\n","import agent from \"../api/agent\";\r\nexport const ECOSYSTEMSERVICE_CREATE = \"ECOSYSTEMSERVICE_CREATE\";\r\nexport const ECOSYSTEMSERVICE_EDIT = \"ECOSYSTEMSERVICE_EDIT\";\r\nexport const ECOSYSTEMSERVICE_DELETE = \"ECOSYSTEMSERVICE_DELETE\";\r\nexport const ECOSYSTEMSERVICE_FETCH = \"ECOSYSTEMSERVICE_FETCH\";\r\nexport const ECOSYSTEMSERVICES_FETCH = \"ECOSYSTEMSERVICES_FETCH\";\r\n\r\nexport const fetchEcosystemServices = () => async (dispatch: any) => {\r\n const response = await agent.EcosystemServices.list();\r\n\r\n dispatch({\r\n type: ECOSYSTEMSERVICES_FETCH,\r\n payload: response,\r\n });\r\n};\r\n","import agent from \"../api/agent\";\r\nexport const COUNTRY_CREATE = \"COUNTRY_CREATE\";\r\nexport const COUNTRY_EDIT = \"COUNTRY_EDIT\";\r\nexport const COUNTRY_DELETE = \"COUNTRY_DELETE\";\r\nexport const COUNTRY_FETCH = \"COUNTRY_FETCH\";\r\nexport const COUNTRIES_FETCH = \"COUNTRIES_FETCH\";\r\n\r\nexport const fetchCountries = () => async (dispatch: any) => {\r\n const response = await agent.Countries.list();\r\n\r\n dispatch({\r\n type: COUNTRIES_FETCH,\r\n payload: response,\r\n });\r\n};\r\n","import agent from \"../api/agent\";\r\nexport const PROTECTION_STATUS_CREATE = \"PROTECTION_STATUS_CREATE\";\r\nexport const PROTECTION_STATUS_EDIT = \"PROTECTION_STATUS_EDIT\";\r\nexport const PROTECTION_STATUS_DELETE = \"PROTECTION_STATUS_DELETE\";\r\nexport const PROTECTION_STATUS_FETCH = \"PROTECTION_STATUS_FETCH\";\r\nexport const PROTECTION_STATUSES_FETCH = \"PROTECTION_STATUSES_FETCH\";\r\n\r\nexport const fetchProtectionStatuses = () => async (dispatch: any) => {\r\n const response = await agent.ProtectionStatuses.list();\r\n\r\n dispatch({\r\n type: PROTECTION_STATUSES_FETCH,\r\n payload: response,\r\n });\r\n};\r\n","import agent from \"../api/agent\";\r\nexport const VALUATION_METHOD_CREATE = \"VALUATION_METHOD_CREATE\";\r\nexport const VALUATION_METHOD_EDIT = \"VALUATION_METHOD_EDIT\";\r\nexport const VALUATION_METHOD_DELETE = \"VALUATION_METHOD_DELETE\";\r\nexport const VALUATION_METHOD_FETCH = \"VALUATION_METHOD_FETCH\";\r\nexport const VALUATION_METHODS_FETCH = \"VALUATION_METHODS_FETCH\";\r\n\r\nexport const fetchValuationMethods = () => async (dispatch: any) => {\r\n const response = await agent.ValuationMethods.list();\r\n\r\n dispatch({\r\n type: VALUATION_METHODS_FETCH,\r\n payload: response,\r\n });\r\n};\r\n","import agent from \"../api/agent\";\r\nexport const CONTINENT_CREATE = \"CONTINENT_CREATE\";\r\nexport const CONTINENT_EDIT = \"CONTINENT_EDIT\";\r\nexport const CONTINENT_DELETE = \"CONTINENT_DELETE\";\r\nexport const CONTINENT_FETCH = \"CONTINENT_FETCH\";\r\nexport const CONTINENTS_FETCH = \"CONTINENTS_FETCH\";\r\n\r\nexport const fetchContinents = () => async (dispatch: any) => {\r\n const response = await agent.Continents.list();\r\n\r\n dispatch({\r\n type: CONTINENTS_FETCH,\r\n payload: response,\r\n });\r\n};\r\n","import agent from \"../api/agent\";\r\nexport const CICES_CREATE = \"CICES_CREATE\";\r\nexport const CICES_EDIT = \"CICES_EDIT\";\r\nexport const CICES_DELETE = \"CICES_DELETE\";\r\nexport const CICES_FETCH = \"CICES_FETCH\";\r\nexport const CICESES_FETCH = \"CICESES_FETCH\";\r\n\r\nexport const fetchCiceses = () => async (dispatch: any) => {\r\n const response = await agent.Ciceses.list();\r\n\r\n dispatch({\r\n type: CICESES_FETCH,\r\n payload: response,\r\n });\r\n};\r\n","import agent from \"../api/agent\";\r\nexport const SEEA_CREATE = \"SEEA_CREATE\";\r\nexport const SEEA_EDIT = \"SEEA_EDIT\";\r\nexport const SEEA_DELETE = \"SEEA_DELETE\";\r\nexport const SEEA_FETCH = \"SEEA_FETCH\";\r\nexport const SEEAS_FETCH = \"SEEAS_FETCH\";\r\n\r\nexport const fetchSEEAs = () => async (dispatch: any) => {\r\n const response = await agent.SEEAs.list();\r\n\r\n dispatch({\r\n type: SEEAS_FETCH,\r\n payload: response,\r\n });\r\n};\r\n","import agent from \"../api/agent\";\r\nexport const ECOSYSTEM_CONDITION_CREATE = \"ECOSYSTEM_CONDITION_CREATE\";\r\nexport const ECOSYSTEM_CONDITION_EDIT = \"ECOSYSTEM_CONDITION_EDIT\";\r\nexport const ECOSYSTEM_CONDITION_DELETE = \"ECOSYSTEM_CONDITION_DELETE\";\r\nexport const ECOSYSTEM_CONDITION_FETCH = \"ECOSYSTEM_CONDITION_FETCH\";\r\nexport const ECOSYSTEM_CONDITIONS_FETCH = \"ECOSYSTEM_CONDITIONS_FETCH\";\r\n\r\nexport const fetchEcosystemConditions = () => async (dispatch: any) => {\r\n const response = await agent.EcosystemConditions.list();\r\n\r\n dispatch({\r\n type: ECOSYSTEM_CONDITIONS_FETCH,\r\n payload: response,\r\n });\r\n};\r\n","import agent from \"../../api/agent\";\r\nexport const CURRENCY_CREATE = \"CURRENCY_CREATE\";\r\nexport const CURRENCY_EDIT = \"CURRENCY_EDIT\";\r\nexport const CURRENCY_DELETE = \"CURRENCY_DELETE\";\r\nexport const CURRENCY_FETCH = \"CURRENCY_FETCH\";\r\nexport const CURRENCIES_FETCH = \"CURRENCIES_FETCH\";\r\n\r\nexport const fetchCurrencies = () => async (dispatch: any) => {\r\n const response = await agent.Currencies.list();\r\n\r\n dispatch({\r\n type: CURRENCIES_FETCH,\r\n payload: response,\r\n });\r\n};\r\n","import agent from \"../../api/agent\";\r\nexport const SCALEOFSTUDYSITE_CREATE = \"SCALEOFSTUDYSITE_CREATE\";\r\nexport const SCALEOFSTUDYSITE_EDIT = \"SCALEOFSTUDYSITE_EDIT\";\r\nexport const SCALEOFSTUDYSITE_DELETE = \"SCALEOFSTUDYSITE_DELETE\";\r\nexport const SCALEOFSTUDYSITE_FETCH = \"SCALEOFSTUDYSITE_FETCH\";\r\nexport const SCALEOFSTUDYSITES_FETCH = \"SCALEOFSTUDYSITES_FETCH\";\r\n\r\nexport const fetchScaleOfStudySites = () => async (dispatch: any) => {\r\n const response = await agent.ScaleOfStudySites.list();\r\n\r\n dispatch({\r\n type: SCALEOFSTUDYSITES_FETCH,\r\n payload: response,\r\n });\r\n};\r\n","export function ErrorHandler(error: any): string {\r\n if (typeof error === \"string\") return error;\r\n if (typeof error === \"object\") {\r\n const status = error.status;\r\n switch (status) {\r\n case 400:\r\n return error.title.toString();\r\n case 401:\r\n return \"Your password is not correct or the combination of username and password is not found. Please check and try again.\";\r\n default:\r\n return error.title\r\n ? error.title\r\n : \"Something unexpected has happened. Please try again or consult the admin for this site.\";\r\n }\r\n }\r\n return \"Something unexpected has happened. Please try again or consult the admin for this site.\";\r\n}\r\n","import { useField } from \"formik\";\r\nimport React from \"react\";\r\nimport {\r\n\tForm,\r\n\tGrid,\r\n\tIcon,\r\n\tInput,\r\n\tLabel,\r\n\tSemanticICONS,\r\n} from \"semantic-ui-react\";\r\n\r\ninterface Props {\r\n\tname: string;\r\n\tplaceholder?: string;\r\n\ticon?: SemanticICONS;\r\n\tlabel?: string;\r\n\trightIcon?: any;\r\n\ttype?: string;\r\n\tfluid?: boolean;\r\n\tvalue?: string;\r\n\tclassName?: string;\r\n\tdisabled?: boolean;\r\n\tmin?: number;\r\n\treadonly?: boolean;\r\n\ttransparent?: boolean;\r\n}\r\n\r\nconst EsvdInputInline = (props: Props) => {\r\n\tconst [field, meta] = useField(props);\r\n\tconst size = \"mini\";\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{props.icon && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{meta.touched && meta.error ? (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{meta.error}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default EsvdInputInline;\r\n","import moment from \"moment\";\r\nimport {\r\n ColumnSpecs,\r\n ColumnStructure,\r\n DisplayColumnStructure,\r\n Spec,\r\n SummaryStatsColumnStructure,\r\n} from \"./models/columnStructure\";\r\nimport { TreeType } from \"./models/ecosystemService\";\r\nimport { Esvd } from \"./models/esvd\";\r\nimport { HeaderItem } from \"./models/headerStructure\";\r\n\r\nexport const saveCurrentUrl = (url: string | null = null) => {\r\n if (url) {\r\n sessionStorage.setItem(\"returnUrl\", url);\r\n } else {\r\n sessionStorage.removeItem(\"returnUrl\");\r\n }\r\n};\r\n\r\nexport const getCurrentUrl = () => {\r\n return sessionStorage.getItem(\"returnUrl\");\r\n};\r\n \r\nexport const displayBodyRowsObjects = (\r\n esvds: Esvd[],\r\n columnsDetails: DisplayColumnStructure\r\n) => {\r\n //build a list of maxlen for multi column properties\r\n let bodyArray = [];\r\n\r\n for (const esvd of esvds) {\r\n const esvdObject: any = {};\r\n\r\n for (const item of Object.entries(columnsDetails)) {\r\n let key = item[0];\r\n let value = item[1];\r\n if (value.isMulti) {\r\n //since it's multi, the maxLen would have been calculated before this step to be used.\r\n //if max length = 0, then we skip that entry completely\r\n if (value.maxLen === 0) continue;\r\n\r\n //since each multi item consists of an array of specs (each of which adds a column or series of columns), we loop\r\n //IMPORTANT: At this point, check the specialTreat property for ecosystemServices\r\n let maxlen = value.maxLen;\r\n value.specs.forEach((spec: Spec) => {\r\n //get basecolumn\r\n const baseColumnProperty = spec.baseColumn ? spec.baseColumn : key;\r\n const propertyValue = esvd[baseColumnProperty]; //this will be an array\r\n\r\n maxlen = spec.baseColumn\r\n ? columnsDetails[spec.baseColumn].maxLen\r\n : value.maxLen;\r\n //process the array property\r\n if (maxlen > 0) {\r\n const len = propertyValue.length;\r\n if (!spec.flatten) {\r\n //get the len of the array\r\n for (let i = 0; i < maxlen; i++) {\r\n if (i < len) {\r\n let cell = propertyValue[i];\r\n esvdObject[`${spec.caption}${i + 1}`] =\r\n (cell && cell[spec.dbField || \"name\"]) || \"\";\r\n } else {\r\n //Pad up empty columns to avoid displacing the row for this entity\r\n esvdObject[`${spec.caption}${i + 1}`] = \"\";\r\n }\r\n }\r\n } else {\r\n let flattened = \"\";\r\n for (let i = 0; i < len; i++) {\r\n let cell = propertyValue[i];\r\n flattened =\r\n i === 0\r\n ? cell[spec.dbField]\r\n : `${flattened}${\r\n cell\r\n ? `${spec.separator || \";\"}${cell[spec.dbField]}`\r\n : \"\"\r\n }`;\r\n }\r\n esvdObject[spec.caption] = flattened;\r\n }\r\n }\r\n });\r\n\r\n \r\n } else {\r\n if (typeof value === \"object\" && value.isSimple) {\r\n const spec = value.spec;\r\n let propertyValue = esvd[spec.dbField];\r\n if (spec.dbField.toLocaleLowerCase() === \"intPerHectarePerYear\".toLocaleLowerCase())\r\n {\r\n propertyValue = standardValueFormat(propertyValue)\r\n } \r\n esvdObject[spec.caption] =\r\n spec.isDate && propertyValue\r\n ? moment(propertyValue).format(spec.isDate.format)\r\n : propertyValue;\r\n } else {\r\n let propertyValue = esvd[key];\r\n if (key.toLocaleLowerCase() === \"intPerHectarePerYear\".toLocaleLowerCase())\r\n {\r\n propertyValue = standardValueFormat(propertyValue)\r\n } \r\n esvdObject[value] = propertyValue;\r\n }\r\n }\r\n }\r\n esvdObject.id = esvd.id;\r\n\r\n bodyArray.push(esvdObject);\r\n }\r\n\r\n return bodyArray;\r\n};\r\n\r\nexport const bodyRowsFlattened = (\r\n esvds: Esvd[],\r\n columnsDetails: ColumnStructure\r\n) => {\r\n //build a list of maxlen for multi column properties\r\n let bodyArray = [];\r\n\r\n for (const esvd of esvds) {\r\n const esvdObject: any = {};\r\n\r\n for (const item of Object.entries(columnsDetails)) {\r\n let key = item[0];\r\n let value = item[1];\r\n if (!value || value.isHide) continue;\r\n if (value.isMulti) {\r\n //since it's multi, the maxLen would have been calculated before this step to be used.\r\n //if max length = 0, then we skip that entry completely\r\n if (value.maxLen === 0) continue;\r\n\r\n //since each multi item consists of an array of specs (each of which adds a column or series of columns), we loop\r\n //IMPORTANT: At this point, check the specialTreat property for ecosystemServices\r\n let maxlen = value.maxLen;\r\n // value.specs.forEach((spec: Spec) => {\r\n //get basecolumn\r\n const spec = value.specs;\r\n const baseColumnProperty = spec.baseColumn ? spec.baseColumn : key;\r\n const propertyValue = esvd[baseColumnProperty]; //this will be a flattened string\r\n\r\n //process the array property\r\n if (maxlen > 0) {\r\n const propSplit = propertyValue && propertyValue.split(\";\");\r\n const len = propSplit && propSplit.length;\r\n if (!spec.flatten) {\r\n //get the len of the array\r\n for (let i = 0; i < maxlen; i++) {\r\n if (i < len) {\r\n let cell = propSplit[i];\r\n esvdObject[`${spec.caption}${i + 1}`] = cell || \"\";\r\n } else {\r\n //Pad up empty columns to avoid displacing the row for this entity\r\n esvdObject[`${spec.caption}${i + 1}`] = \"\";\r\n }\r\n }\r\n }\r\n }\r\n // });\r\n } else {\r\n if (typeof value === \"object\" && value.isSimple) {\r\n const spec = value.spec;\r\n let propertyValue = esvd[spec.dbField];\r\n // if (spec.dbField.toLocaleLowerCase() === \"intPerHectarePerYear\".toLocaleLowerCase())\r\n // {\r\n // propertyValue = standardValueFormat(propertyValue)\r\n // } \r\n esvdObject[spec.caption] =\r\n spec.isDate && propertyValue ? moment(propertyValue).format(spec.isDate.format) : value.extractLen && propertyValue\r\n ? propertyValue.split(\";\")[value.extractLen - 1]\r\n : removeBadChar(propertyValue);\r\n } else {\r\n let propertyValue = esvd[key];\r\n \r\n esvdObject[value] =removeBadChar(propertyValue)\r\n if (key === \"inclExcl\") {\r\n esvdObject[value] = changeInclExclTo1and0(esvdObject[value])\r\n }\r\n }\r\n }\r\n }\r\n\r\n bodyArray.push(esvdObject);\r\n }\r\n\r\n return bodyArray;\r\n};\r\n\r\n//This is strictly for the InclExcl column. If other columns need such granular processing, then bodyRowsFlattened\r\n//will have to be modified to accept an object which has columns as keys and the appropriate functions to perform on them as values\r\nfunction changeInclExclTo1and0(propValue: boolean | null | undefined) {\r\n //To avoid the confusing Truthy nature of 0, null, undefined and false, convert to string before comparing.\r\n //0, null, undefined and false: all four items evaluate to false in the Truthy table\r\n if (`${propValue}` === \"false\") {\r\n return 0\r\n } else if (`${propValue}` === \"true\") {\r\n return 1\r\n } else\r\n return \"\"\r\n}\r\n\r\nfunction removeBadChar(propertyValue: any) {\r\n let item = \"\";\r\n if (typeof propertyValue === 'string') {\r\n item = propertyValue.replace(/\"/g, '\"\"');;\r\n } else {\r\n item = propertyValue\r\n }\r\n return item\r\n}\r\n\r\n//get the maxlens of all multi column fields in the result set\r\nexport const setMultiColumnMaxLens = (\r\n esvds: Esvd[],\r\n columns: ColumnStructure\r\n) => {\r\n //get columns whose values are arrays\r\n const arrayOfMultis = Object.entries(columns).filter(([key, value]) => {\r\n return typeof value === \"object\" && value !== null && value?.isMulti;\r\n });\r\n\r\n //then for each column, find the max len of sub-columns\r\n arrayOfMultis.forEach(([key, value]) => {\r\n //from the filter above, \"entry\" is an array of key/value pair: [key, value].\r\n //The value in this case are arrays which hold the fixed parts of the captions for the sub-columns\r\n //the key holds the name of the column for which we want to find max len\r\n const maxlen = maxLen(esvds, key);\r\n\r\n columns = { ...columns, [key]: { ...value, maxLen: maxlen } };\r\n });\r\n return columns;\r\n};\r\n\r\n//get the maxlens of all multi column fields in the result set\r\nexport const setMultiColumnMaxLenFlattened = (\r\n esvds: Esvd[],\r\n columns: ColumnStructure\r\n) => {\r\n //get columns whose values are arrays\r\n const arrayOfMultis = Object.entries(columns).filter(([key, value]) => {\r\n return typeof value === \"object\" && value !== null && value?.isMulti;\r\n });\r\n\r\n \r\n //then for each column, find the max len of sub-columns\r\n arrayOfMultis.forEach(([key, value]) => {\r\n //from the filter above, \"entry\" is an array of key/value pair: [key, value].\r\n //The value in this case are arrays which hold the fixed parts of the captions for the sub-columns\r\n //the key holds the name of the column for which we want to find max len\r\n const maxlen = maxLenFlattened(esvds, value.specs.baseColumn);\r\n\r\n columns[key]= { ...value, maxLen: maxlen } ;\r\n });\r\n return columns;\r\n};\r\n\r\n//get the maxlens of all multi column fields in the result set\r\nexport const setDisplayMultiColumnMaxLens = (\r\n esvds: Esvd[],\r\n columns: DisplayColumnStructure\r\n) => {\r\n //get columns whose values are arrays\r\n const arrayOfMultis = Object.entries(columns).filter(([key, value]) => {\r\n return typeof value === \"object\" && value !== null && value?.isMulti;\r\n });\r\n\r\n //then for each column, find the max len of sub-columns\r\n arrayOfMultis.forEach(([key, value]) => {\r\n //from the filter above, \"entry\" is an array of key/value pair: [key, value].\r\n //The value in this case are arrays which hold the fixed parts of the captions for the sub-columns\r\n //the key holds the name of the column for which we want to find max len\r\n const maxlen = maxLen(esvds, key);\r\n\r\n columns = { ...columns, [key]: { ...value, maxLen: maxlen } };\r\n });\r\n return columns;\r\n};\r\n\r\nexport const maxLen = (esvds: Esvd[], key: string) => {\r\n let evsLens: number[] = esvds.map((e) => e[key].length); //Extracts an array of length of lists of only the specified key for all the records\r\n return Math.max(...evsLens, 0);\r\n};\r\n\r\nexport const maxLenFlattened = (esvds: Esvd[], key: string) => {\r\n let evsLens: number[] = esvds.map((e) =>\r\n e[key] ? e[key].split(\";\").length : 0\r\n ); //Extracts an array of length of lists of only the specified key for all the records\r\n return Math.max(...evsLens, 0);\r\n};\r\n//Whether the list associated with this field would be flattened into one column or spread into multiple columns.\r\nexport const isMultiColumn = (item: ColumnSpecs) => {\r\n return item.isMulti;\r\n};\r\n\r\nexport const headerTransform = (\r\n esvds: Esvd[],\r\n columnsDetails: ColumnStructure,\r\n sortable: boolean = true\r\n): any[] => {\r\n //build a list of maxlen for multi column properties\r\n let headerArray: HeaderItem[] = [];\r\n\r\n for (const item of Object.entries(columnsDetails)) {\r\n // const key = item[0];\r\n const value = item[1];\r\n if (value.isMulti) {\r\n //since it's multi, the maxLen would have been calculated before this step to be used.\r\n //if max length = 0, then we skip that entry completely\r\n if (value.maxLen === 0) continue;\r\n\r\n //since each multi item consists of an array of specs (each of which adds a column or series of columns), we loop\r\n //IMPORTANT: At this point, check the specialTreat property for ecosystemServices\r\n let maxlen = value.maxLen;\r\n value.specs.forEach((spec: Spec) => {\r\n maxlen = spec.baseColumn\r\n ? columnsDetails[spec.baseColumn].maxLen\r\n : value.maxLen;\r\n\r\n if (maxlen > 0) {\r\n if (spec.flatten) {\r\n const headObject: HeaderItem = {\r\n key: spec.caption,\r\n title: spec.caption,\r\n dataKey: spec.caption,\r\n width: 100,\r\n resizable: true,\r\n sortable: spec.sortable || false,\r\n };\r\n headerArray.push(headObject);\r\n } else {\r\n for (let i = 0; i < maxlen; i++) {\r\n const headObject: HeaderItem = {\r\n key: `${spec.caption}${i + 1}`,\r\n title: `${spec.caption}${i + 1}`,\r\n dataKey: `${spec.caption}${i + 1}`,\r\n width: 100,\r\n resizable: true,\r\n sortable: spec.sortable || false,\r\n };\r\n headerArray.push(headObject);\r\n }\r\n }\r\n }\r\n });\r\n } else {\r\n if (value.spec && value.isSimple) {\r\n const spec = value.spec;\r\n const headObject: HeaderItem = {\r\n key: spec.caption,\r\n title: spec.caption,\r\n dataKey: spec.caption,\r\n width: 100,\r\n resizable: true,\r\n sortable: spec.sortable || false,\r\n \r\n };\r\n headerArray.push(headObject);\r\n } else {\r\n const headObject: HeaderItem = {\r\n key: value,\r\n title: value,\r\n dataKey: value,\r\n width: 100,\r\n resizable: true,\r\n };\r\n headerArray.push(headObject);\r\n }\r\n }\r\n }\r\n // if (sortable) {\r\n // if (headerArray) {\r\n // for (let i = 0; i < 2; i++) {\r\n // headerArray[i].sortable = true;\r\n // }\r\n // }\r\n // }\r\n\r\n return headerArray;\r\n};\r\n\r\nexport const headerTransformFlattened = (\r\n columnsDetails: ColumnStructure\r\n): any[] => {\r\n //build a list of maxlen for multi column properties\r\n let headerArray: HeaderItem[] = [];\r\n\r\n for (const item of Object.entries(columnsDetails)) {\r\n // const key = item[0];\r\n const value = item[1];\r\n if (value.isHide) continue;\r\n if (value.isMulti) {\r\n //since it's multi, the maxLen would have been calculated before this step to be used.\r\n //if max length = 0, then we skip that entry completely\r\n if (value.maxLen === 0) continue;\r\n\r\n //since each multi item consists of an array of specs (each of which adds a column or series of columns), we loop\r\n //IMPORTANT: At this point, check the specialTreat property for ecosystemServices\r\n let maxlen = value.maxLen;\r\n value.specs.forEach((spec: Spec) => {\r\n if (maxlen > 0) {\r\n for (let i = 0; i < maxlen; i++) {\r\n const headObject: HeaderItem = {\r\n key: `${spec.caption}${i + 1}`,\r\n title: `${spec.caption}${i + 1}`,\r\n dataKey: `${spec.caption}${i + 1}`,\r\n width: 100,\r\n resizable: true,\r\n sortable: spec.sortable || false, \r\n // align:value.Alignment||'left'\r\n };\r\n headerArray.push(headObject);\r\n }\r\n }\r\n });\r\n } else {\r\n if (value.spec && value.isSimple) {\r\n const spec = value.spec;\r\n const headObject: HeaderItem = {\r\n key: spec.caption,\r\n title: spec.caption,\r\n dataKey: spec.caption,\r\n width: 100,\r\n resizable: true,\r\n sortable: spec.sortable || false,\r\n // align:value.Alignment||'left'\r\n };\r\n headerArray.push(headObject);\r\n } else {\r\n const headObject: HeaderItem = {\r\n key: value,\r\n title: value,\r\n dataKey: value,\r\n width: 100,\r\n resizable: true,\r\n // align:value.Alignment||'left'\r\n };\r\n headerArray.push(headObject);\r\n }\r\n }\r\n }\r\n // if (sortable) {\r\n // if (headerArray) {\r\n // for (let i = 0; i < 2; i++) {\r\n // headerArray[i].sortable = true;\r\n // }\r\n // }\r\n // }\r\n\r\n return headerArray;\r\n};\r\n\r\nexport const displayHeaderTransform = (\r\n esvds: Esvd[],\r\n columnsDetails: DisplayColumnStructure,\r\n sortable: boolean = true\r\n): any[] => {\r\n //build a list of maxlen for multi column properties\r\n let headerArray: HeaderItem[] = [];\r\n\r\n for (const item of Object.entries(columnsDetails)) {\r\n // const key = item[0];\r\n const value = item[1];\r\n if (value.isMulti) {\r\n //since it's multi, the maxLen would have been calculated before this step to be used.\r\n //if max length = 0, then we skip that entry completely\r\n if (value.maxLen === 0) continue;\r\n\r\n //since each multi item consists of an array of specs (each of which adds a column or series of columns), we loop\r\n //IMPORTANT: At this point, check the specialTreat property for ecosystemServices\r\n let maxlen = value.maxLen;\r\n value.specs.forEach((spec: Spec) => {\r\n maxlen = spec.baseColumn\r\n ? columnsDetails[spec.baseColumn].maxLen\r\n : value.maxLen;\r\n\r\n if (maxlen > 0) {\r\n if (spec.flatten) {\r\n const headObject: HeaderItem = {\r\n key: spec.dbField,\r\n title: spec.caption,\r\n dataKey: spec.caption,\r\n width: spec.width || 100,\r\n resizable: true,\r\n sortable: (sortable && spec.sortable) || false,\r\n align:spec.align ||'left'\r\n };\r\n headerArray.push(headObject);\r\n } else {\r\n for (let i = 0; i < maxlen; i++) {\r\n const headObject: HeaderItem = {\r\n key: `${spec.dbField}${i + 1}`,\r\n title: `${spec.caption}${i + 1}`,\r\n dataKey: `${spec.caption}${i + 1}`,\r\n width: spec.width || 100,\r\n resizable: true,\r\n sortable: (sortable && spec.sortable) || false,\r\n align:spec.align ||'left'\r\n };\r\n headerArray.push(headObject);\r\n }\r\n }\r\n }\r\n });\r\n } else {\r\n if (value.spec && value.isSimple) {\r\n const spec = value.spec;\r\n const headObject: HeaderItem = {\r\n key: spec.dbField,\r\n title: spec.caption,\r\n dataKey: spec.caption,\r\n width: spec.width || 100,\r\n resizable: true,\r\n sortable: (sortable && spec.sortable) || false,\r\n align:spec.align ||'left'\r\n };\r\n headerArray.push(headObject);\r\n } else {\r\n const headObject: HeaderItem = {\r\n key: value,\r\n title: value,\r\n dataKey: value,\r\n width: 150,\r\n resizable: true,\r\n // align:spec.align ||'left'\r\n };\r\n headerArray.push(headObject);\r\n }\r\n }\r\n }\r\n // if (sortable) {\r\n // if (headerArray) {\r\n // for (let i = 0; i < 2; i++) {\r\n // headerArray[i].sortable = true;\r\n // }\r\n // }\r\n // }\r\n\r\n return headerArray;\r\n};\r\n\r\nexport const vwTOpx = (value: number) => {\r\n //https://jsfiddle.net/Dwaaren/j9zahaLL/\r\n var w = window,\r\n d = document,\r\n e = d.documentElement,\r\n g = d.getElementsByTagName(\"body\")[0],\r\n x = w.innerWidth || e.clientWidth || g.clientWidth;\r\n // y = w.innerHeight || e.clientHeight || g.clientHeight;\r\n\r\n var result = (x * value) / 100;\r\n // document.getElementById(\"result_vw_px\").innerHTML = result; // affichage du r�sultat (facultatif)\r\n return result;\r\n};\r\n\r\n//ecosystemServices items\r\nexport const formatESForDropdown = (ess: TreeType[]) => {\r\n // //get header classifications\r\n // const headers = ess.filter(\r\n // (x) => !x.isSub && x.code === null && x.sortOrder === null\r\n // );\r\n //get main es\r\n if (!ess)\r\n return \r\n const mains = ess\r\n .filter((x) => !x.isSub && x.code !== null && x.sortOrder === 1)\r\n .sort((a, b) => parseInt(a.code) - parseInt(b.code));\r\n // .sort((a, b) => (a.path > b.path ? 1 : -1));\r\n\r\n let masterList = [];\r\n for (const es of mains) {\r\n let subList = [];\r\n //add main to master list\r\n subList.push(es);\r\n\r\n //get subs of the mains\r\n const subs = ess\r\n .filter((x) => x.isSub && x.path.startsWith(`${es.path}/`))\r\n .sort((a, b) => (a.path > b.path ? 1 : -1));\r\n subList.push(...subs);\r\n //disable sublist without code\r\n subList = subList.map((x, index) => {\r\n x.isDisabled = !x.code ? true : false;\r\n return x;\r\n });\r\n\r\n masterList.push({\r\n label: `${es.code} -- ${es.label}`,\r\n options: subList,\r\n });\r\n }\r\n return masterList;\r\n};\r\n\r\n//Cices items\r\nexport const formatCicesForDropdown = (ess: TreeType[]) => {\r\n // //get header classifications\r\n // const headers = ess.filter(\r\n // (x) => !x.isSub && x.code === null && x.sortOrder === null\r\n // );\r\n\r\n let masterList = [];\r\n //get sections es\r\n const sections = (ess||[])\r\n .filter((x) => x.sortOrder === 1)\r\n .sort((a, b) => parseInt(a.code) - parseInt(b.code));\r\n\r\n for (const section of sections) {\r\n //get divisions es\r\n const divisions = ess\r\n .filter((x) => x.sortOrder === 2 && x.path.startsWith(`${section.path}/`))\r\n .sort((a, b) => (a.code > b.code ? 1 : -1));\r\n let subList = [];\r\n section.isDisabled = true;\r\n // section.code = \"--\".repeat(section.sortOrder - 1);\r\n // section.label = \"--\".repeat(section.sortOrder) + section.label;\r\n subList.push(section);\r\n for (const division of divisions) {\r\n //disable this option so it cannot be selected\r\n\r\n //get groups es\r\n const groups = ess\r\n .filter(\r\n (x) => x.sortOrder === 3 && x.path.startsWith(`${division.path}/`)\r\n )\r\n .sort((a, b) => (a.code > b.code ? 1 : -1));\r\n\r\n division.isDisabled = true;\r\n // division.code = \"--\".repeat(division.sortOrder - 1);\r\n // division.label = \"--\".repeat(division.sortOrder) + division.label;\r\n subList.push(division);\r\n\r\n for (const group of groups) {\r\n group.isDisabled = true;\r\n // group.code = \"--\".repeat(group.sortOrder);\r\n subList.push(group);\r\n const classs = ess\r\n .filter(\r\n (x) => x.sortOrder === 4 && x.path.startsWith(`${group.path}/`)\r\n )\r\n .sort((a, b) => (a.code > b.code ? 1 : -1));\r\n subList.push(...classs);\r\n\r\n // for (const es of mains) {\r\n // let subList = [];\r\n // //add main to master list\r\n // subList.push(es);\r\n // //get subs of the mains\r\n // const subs = ess\r\n // .filter((x) => x.isSub && x.path.startsWith(`${es.path}/`))\r\n // .sort((a, b) => (a.path > b.path ? 1 : -1));\r\n // subList.push(...subs);\r\n // masterList.push({\r\n // label: `${es.code} -- ${es.label}`,\r\n // options: subList,\r\n // });\r\n // }\r\n }\r\n }\r\n masterList.push({\r\n label: `${section.code} -- ${section.label}`,\r\n options: subList,\r\n });\r\n }\r\n\r\n return masterList;\r\n};\r\n\r\nexport const buildTreeTypeQueryList = (\r\n selected: number[],\r\n list: TreeType[]\r\n): number[] => {\r\n //\r\n //use sets to keep the list unique\r\n let filter = new Set();\r\n for (const item of selected) {\r\n //\r\n // !filter.has(item) && \r\n filter.add(item);\r\n const es = list.find((x) => x.id === item);\r\n if (es && !es?.isSub) {\r\n //if it's main, get all subdomain under this main and add them\r\n list\r\n .filter((x) => x.path.startsWith(`${es.path}/`) && x.id !== es.id)\r\n .forEach((a) => !filter.has(a.id) && filter.add(a.id));\r\n }\r\n }\r\n return Array.from(filter.values());\r\n};\r\n\r\n// export const buildTreeTypeQueryListCices = (\r\n// selected: number[],\r\n// list: TreeType[]\r\n// ): number[] => {\r\n// //\r\n// //use sets to keep the list unique\r\n// let filter = new Set();\r\n// for (const item of selected) {\r\n// //\r\n// !filter.has(item) && filter.add(item);\r\n// const es = list.find((x) => x.id === item);\r\n// if (es && !es?.isSub) {\r\n// //if it's main, get all subdomain under this main and add them\r\n// list\r\n// .filter((x) => x.path.startsWith(`${es.path}/`) && x.id !== es.id)\r\n// .forEach((a) => !filter.has(a.id) && filter.add(a.id));\r\n// }\r\n// }\r\n// return Array.from(filter.values());\r\n// };\r\n\r\n// /**\r\n// *https://stackoverflow.com/a/14480366/5367889\r\n// * @param string : the string to search from.\r\n// * @param searchString :the string being searched\r\n// * @param nthPositionOfOccurrence :the nth position of occurence being sought: 1=first occurrence of the searchString, 2=second occurrence of the searchString etc\r\n// * @returns\r\n// */\r\n// const getNthPositionOfOccurrence = (\r\n// string: string,\r\n// searchString: string,\r\n// nthPositionOfOccurrence: number\r\n// ) => {\r\n// return string.split(searchString, nthPositionOfOccurrence).join(searchString)\r\n// .length;\r\n// };\r\n\r\nexport const summaryStatsRowsObjects = (\r\n esvds: Esvd[],\r\n columnsDetails: SummaryStatsColumnStructure\r\n) => {\r\n //build a list of maxlen for multi column properties\r\n let bodyArray:SummaryStatsColumnStructure[] = [];\r\n\r\n for (const esvd of esvds) {\r\n const esvdObject: any = {};\r\n\r\n for (const item of Object.entries(columnsDetails)) {\r\n let key = item[0];\r\n let value = item[1];\r\n if (value.isMulti) {\r\n //since it's multi, the maxLen would have been calculated before this step to be used.\r\n //if max length = 0, then we skip that entry completely\r\n if (value.maxLen === 0) continue;\r\n\r\n //since each multi item consists of an array of specs (each of which adds a column or series of columns), we loop\r\n //IMPORTANT: At this point, check the specialTreat property for ecosystemServices\r\n let maxlen = value.maxLen;\r\n value.specs.forEach((spec: Spec) => {\r\n //get basecolumn\r\n const baseColumnProperty = spec.baseColumn ? spec.baseColumn : key;\r\n const propertyValue = esvd[baseColumnProperty]; //this will be an array\r\n\r\n maxlen = spec.baseColumn\r\n ? columnsDetails[spec.baseColumn].maxLen\r\n : value.maxLen;\r\n //process the array property\r\n if (maxlen > 0) {\r\n const len = propertyValue.length;\r\n if (!spec.flatten) {\r\n //get the len of the array\r\n for (let i = 0; i < maxlen; i++) {\r\n if (i < len) {\r\n let cell = propertyValue[i];\r\n esvdObject[`${spec.caption}${i + 1}`] =\r\n (cell && cell[spec.dbField || \"name\"]) || \"\";\r\n } else {\r\n //Pad up empty columns to avoid displacing the row for this entity\r\n esvdObject[`${spec.caption}${i + 1}`] = \"\";\r\n }\r\n }\r\n } else {\r\n let flattened = \"\";\r\n for (let i = 0; i < len; i++) {\r\n let cell = propertyValue[i];\r\n flattened =\r\n i === 0\r\n ? cell[spec.dbField]\r\n : `${flattened}${\r\n cell\r\n ? `${spec.separator || \";\"}${cell[spec.dbField]}`\r\n : \"\"\r\n }`;\r\n }\r\n esvdObject[spec.caption] = flattened;\r\n }\r\n }\r\n });\r\n // } else if (value.specs && !value.isMulti === false) {\r\n // const spec = value.specs.pop();\r\n // const propertyValue = esvd[key];\r\n // esvdObject[lowerCaseFirstLetter(spec.caption)] =\r\n // propertyValue[spec.dbField];\r\n } else {\r\n if (typeof value === \"object\" && value.isSimple) {\r\n const spec = value.spec;\r\n const propertyValue = esvd[spec.dbField];\r\n esvdObject[spec.caption] = propertyValue;\r\n } else {\r\n const propertyValue = esvd[key];\r\n esvdObject[value] = propertyValue;\r\n }\r\n }\r\n }\r\n\r\n bodyArray.push(esvdObject);\r\n }\r\n\r\n return bodyArray;\r\n};\r\n\r\n//get the maxlens of all multi column fields in the result set\r\nexport const setMultiColumnMaxLensSummaryStats = (\r\n esvds: Esvd[],\r\n columns: SummaryStatsColumnStructure\r\n) => {\r\n //get columns whose values are arrays\r\n const arrayOfMultis = Object.entries(columns).filter(([key, value]) => {\r\n return typeof value === \"object\" && value !== null && value?.isMulti;\r\n });\r\n\r\n //then for each column, find the max len of sub-columns\r\n arrayOfMultis.forEach(([key, value]) => {\r\n //from the filter above, \"entry\" is an array of key/value pair: [key, value].\r\n //The value in this case are arrays which hold the fixed parts of the captions for the sub-columns\r\n //the key holds the name of the column for which we want to find max len\r\n const maxlen = maxLen(esvds, key);\r\n\r\n columns = { ...columns, [key]: { ...value, maxLen: maxlen } };\r\n });\r\n return columns;\r\n};\r\n\r\nexport const statsHeaderTransform = (\r\n columns: [],\r\n sortable: boolean = true\r\n): any[] => {\r\n //build a list of maxlen for multi column properties\r\n let headerArray: HeaderItem[] = [];\r\n\r\n for (const item of columns) {\r\n const headObject: HeaderItem = {\r\n key: item,\r\n title: item,\r\n dataKey: item,\r\n width: 100,\r\n resizable: true,\r\n };\r\n headerArray.push(headObject);\r\n }\r\n\r\n // if (sortable) {\r\n // if (headerArray) {\r\n // for (let i = 0; i < 2; i++) {\r\n // headerArray[i].sortable = true;\r\n // }\r\n // }\r\n // }\r\n\r\n return headerArray;\r\n};\r\n\r\nexport const NumberFormat = (\r\n number: number,\r\n decimalPlaces: number = 2,\r\n currencySymbol: string = \"\"\r\n) => {\r\n //ensure 'number' is truly a number\r\n const num = Number(number) || 0;\r\n return `${currencySymbol} ${num\r\n .toFixed(decimalPlaces)\r\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\")}`;\r\n};\r\n\r\nconst handleFileChosen = async (file: File) => {\r\n return new Promise((resolve, reject) => {\r\n let fileReader = new FileReader();\r\n fileReader.onload = () => {\r\n resolve(fileReader.result);\r\n };\r\n fileReader.onerror = reject;\r\n fileReader.readAsDataURL(file);\r\n });\r\n};\r\nexport const readAllFiles = async (AllFiles: File[]) => {\r\n const results = await Promise.all(\r\n AllFiles.map(async (file) => {\r\n return Object.assign(file, {\r\n filename: file.name,\r\n contentType: file.type,\r\n content: await handleFileChosen(file),\r\n });\r\n // const fileContents = await handleFileChosen(file);\r\n // return fileContents;\r\n })\r\n );\r\n return results;\r\n};\r\n\r\nexport const readUploadedFile = async (myfile: File) => {\r\n const content = await handleFileChosen(myfile);\r\n return {...myfile,\r\n filename: myfile.name,\r\n contentType: myfile.type,\r\n content: content,\r\n }\r\n // const results = await Promise.all(\r\n // [myfile].map(async (file) => {\r\n // return Object.assign(file, {\r\n // filename: file.name,\r\n // contentType: file.type,\r\n // content: await handleFileChosen(file),\r\n // });\r\n // })\r\n // );\r\n // return results;\r\n};\r\n\r\n//ecosystemServices items\r\nexport const formatBiomeForDropdown = (ess: TreeType[], includeMainInOptions=true) => {\r\n // //get header classifications\r\n // const headers = ess.filter(\r\n // (x) => !x.isSub && x.code === null && x.sortOrder === null\r\n // );\r\n //get main es\r\n \r\n const mains = (ess || [])\r\n .filter((x) => !x.isSub && x.code !== null && x.sortOrder === 1)\r\n .sort((a, b) => parseInt(a.code) - parseInt(b.code));\r\n // .sort((a, b) => (a.path > b.path ? 1 : -1));\r\n\r\n let masterList = [];\r\n for (const es of mains) {\r\n let subList = [];\r\n //add main to master list\r\n if (includeMainInOptions)\r\n subList.push(es);\r\n\r\n //get subs of the mains\r\n const subs = ess\r\n .filter((x) => x.isSub && x.path.startsWith(`${es.path}/`) && x.sortOrder < 3) //L3 excluded\r\n .sort(function (a, b) {\r\n var nums1 = a.code.split(\".\");\r\n var nums2 = b.code.split(\".\");\r\n\r\n for (var i = 0; i < nums1.length; i++) {\r\n if (nums2[i]) { // assuming 5..2 is invalid\r\n if (nums1[i] !== nums2[i]) {\r\n return parseInt(nums1[i]) - parseInt(nums2[i]);\r\n } // else continue\r\n } else {\r\n return 1; // no second number in b\r\n }\r\n }\r\n return -1; // was missing case b.len > a.len\r\n });\r\n \r\n \r\n subList.push(...subs);\r\n //disable sublist without code\r\n subList = subList.map((x, index) => {\r\n x.isDisabled = !x.code ? true : false;\r\n return x;\r\n });\r\n\r\n masterList.push({\r\n label: `${es.code} -- ${es.label}`,\r\n options: subList,\r\n });\r\n }\r\n return masterList;\r\n};\r\n//ecosystemServices items\r\nexport const formatSeeasDropdown = (items: TreeType[]) => {\r\n //get main es\r\n const mains = (items||[])\r\n .filter((x: any) => x.sortOrder === 1)\r\n .sort((a: any, b: any) => a.parentId > b.parentId ? 1 : a.parentId < b.parentId ? -1 : 0);\r\n // .sort((a, b) => parseInt(a.code) > parseInt(b.code) ? 1 : parseInt(a.code) < parseInt(b.code) ? -1 : 0);\r\n\r\n let masterList = [];\r\n for (const item of mains) {\r\n let subList = [];\r\n //add main to master list\r\n subList.push(item);\r\n //get subitems under mains\r\n const subs = items\r\n .filter((x) => x.sortOrder === item.sortOrder + 1 && x.parentId === item.id)\r\n .sort(function (a, b) {\r\n var nums1 = a.code.split(\".\");\r\n var nums2 = b.code.split(\".\");\r\n\r\n for (var i = 0; i < nums1.length; i++) {\r\n if (nums2[i]) { // assuming 5..2 is invalid\r\n if (nums1[i] !== nums2[i]) {\r\n return parseInt(nums1[i]) - parseInt(nums2[i]);\r\n } // else continue\r\n } else {\r\n return 1; // no second number in b\r\n }\r\n }\r\n return -1; // was missing case b.len > a.len\r\n });\r\n \r\n subList.push(...subs);\r\n //disable sublist without code\r\n subList = subList.map((x, index) => {\r\n x.isDisabled = !x.code ? true : false;\r\n x.hideCode = true;\r\n return x;\r\n });\r\n masterList.push({\r\n label: `${item.label}`,\r\n // label: `${item.code} -- ${item.label}`,\r\n options: subList,\r\n });\r\n }\r\n return masterList;\r\n};\r\n\r\nexport function getMonthNameShort(monthNumber: number) {\r\n\tconst date = new Date();\r\n\tdate.setMonth(monthNumber);\r\n\r\n\treturn date.toLocaleString(\"en-US\", { month: \"short\" });\r\n}\r\n\r\nexport function getMonthName(monthNumber: number) {\r\n\tconst date = new Date();\r\n\tdate.setMonth(monthNumber);\r\n\r\n\treturn date.toLocaleString(\"en-US\", { month: \"long\" });\r\n}\r\n\r\nexport const getMonthList = () => {\r\n\tconst months = [];\r\n\tfor (let i = 0; i < 12; i++) {\r\n\t\tmonths.push({ label: getMonthName(i), value: i });\r\n\t}\r\n\treturn months;\r\n};\r\n\r\nexport function sortReactTableData(isDescend: boolean, items: any[], key: any) {\r\n\tconst factor = isDescend ? -1 : 1;\r\n\tconst sorted = items.sort((a: any, b: any) => {\r\n\t\tif (a[`${key}`] < b[`${key}`]) return 1 * factor;\r\n\t\telse if (a[`${key}`] > b[`${key}`]) return -1 * factor;\r\n\t\telse return 0;\r\n\t});\r\n\treturn sorted;\r\n}\r\n\r\nexport const standardValueFormat = (stValue: number): string => {\r\n if (!stValue)\r\n return \"\"\r\n if (stValue < 0.1) {\r\n return stValue.toFixed(2)\r\n }\r\n \r\n if (stValue >= 0.1 && stValue <= 1000) {\r\n return stValue.toFixed(1)\r\n }\r\n\treturn stValue.toFixed(0);\r\n};\r\n\r\n//ecosystemServices items\r\nexport const formatShowOnlyBiomeForDropdown = (ess: TreeType[]) => {\r\n // //get header classifications\r\n // const headers = ess.filter(\r\n // (x) => !x.isSub && x.code === null && x.sortOrder === null\r\n // );\r\n //get main es\r\n \r\n const mains = (ess || [])\r\n .filter((x) => !x.isSub && x.code !== null && x.sortOrder === 1)\r\n .sort((a, b) => parseInt(a.code) - parseInt(b.code));\r\n\r\n let masterList = [];\r\n for (const es of mains) {\r\n let subList = [];\r\n //add main to master list\r\n subList.push(es);\r\n\r\n // //get subs of the mains\r\n // const subs = ess\r\n // .filter((x) => x.isSub && x.path.startsWith(`${es.path}/`) && x.sortOrder < 3) //L3 excluded\r\n // .sort((a, b) => (a.path > b.path ? 1 : -1));\r\n // subList.push(...subs);\r\n //disable sublist without code\r\n subList = subList.map((x, index) => {\r\n x.isDisabled = !x.code ? true : false;\r\n return x;\r\n });\r\n\r\n masterList.push({\r\n // label: `${es.code} -- ${es.label}`,\r\n options: subList,\r\n });\r\n }\r\n return masterList;\r\n};\r\n\r\n//ecosystemServices items\r\nexport const formatEnableOnlyEcosystemForDropdown = (ess: TreeType[]) => {\r\n // //get header classifications\r\n // const headers = ess.filter(\r\n // (x) => !x.isSub && x.code === null && x.sortOrder === null\r\n // );\r\n //get main es\r\n \r\n const mains = (ess || [])\r\n .filter((x) => !x.isSub && x.code !== null && x.sortOrder === 1)\r\n .sort((a, b) => parseInt(a.code) - parseInt(b.code));\r\n // .sort((a, b) => (a.path > b.path ? 1 : -1));\r\n\r\n let masterList = [];\r\n for (const es of mains) {\r\n let subList = [];\r\n //add main to master list\r\n // subList.push(es);\r\n\r\n //get subs of the mains\r\n const subs = ess\r\n .filter((x) => x.isSub && x.path.startsWith(`${es.path}/`) && x.sortOrder < 3) //L3 excluded\r\n .sort(function (a, b) {\r\n var nums1 = a.code.split(\".\");\r\n var nums2 = b.code.split(\".\");\r\n\r\n for (var i = 0; i < nums1.length; i++) {\r\n if (nums2[i]) { // assuming 5..2 is invalid\r\n if (nums1[i] !== nums2[i]) {\r\n return parseInt(nums1[i]) - parseInt(nums2[i]);\r\n } // else continue\r\n } else {\r\n return 1; // no second number in b\r\n }\r\n }\r\n return -1; // was missing case b.len > a.len\r\n });\r\n \r\n \r\n // .sort((a, b) => (a.path > b.path ? 1 : -1));\r\n subList.push(...subs);\r\n //disable sublist without code\r\n subList = subList.map((x, index) => {\r\n x.isDisabled = !x.code ? true : false;\r\n return x;\r\n });\r\n\r\n masterList.push({\r\n label: `${es.code} -- ${es.label}`,\r\n options: subList,\r\n });\r\n }\r\n return masterList;\r\n};\r\n\r\n\r\n\r\n\r\n/**\r\n * Above $10 (0 decimals, so $13)\r\n1 and above, $1 (1 decimal, so $1.1)\r\nBelow 1 (2 decimals, so $0.66)?\r\n\r\nhas now changed to \r\n\r\n * 1 and above, $1 (0 decimals)\r\n Below 1 (1 decimal)\r\n */\r\nexport const formatVttCalculation = (results:any) => {\r\n\r\n if (`${results}`.includes(\"e\")) {\r\n return ` ${results.toExponential(\r\n 2\r\n )} `\r\n }\r\n\r\n if (results >= 1) {\r\n return `${parseInt(results)}`\r\n }\r\n\r\n if (results < 1) {\r\n return `${results?.toFixed(1)}`\r\n }\r\n \r\n return \"\"\r\n}","import React from \"react\";\r\nimport Select, { components } from \"react-select\";\r\nimport { Form, Grid } from \"semantic-ui-react\";\r\n\r\n//https://codesandbox.io/s/53jomww8yn?file=/src/index.js:650-788\r\nexport const Option = (props: any) => {\r\n\tconst { data, morePadding } = props;\r\n\treturn (\r\n\t\t\r\n\t\t\t{/*

{props.data.label}

\r\n
{props.data.subLabel}
*/}\r\n\t\t\t{data.code && !data.hideCode ? (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t 8 ? 7 : 3}\r\n\t\t\t\t\t\t\tstyle={\r\n\t\t\t\t\t\t\t\tmorePadding\r\n\t\t\t\t\t\t\t\t\t? { paddingLeft: \"1.5rem\", paddingRight: \"1.5rem\" }\r\n\t\t\t\t\t\t\t\t\t: {}\r\n\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t{data.isDisabled ? \"\" : data.code}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t 8 ? 9 : 13}\r\n\t\t\t\t\t\t\tstyle={\r\n\t\t\t\t\t\t\t\tmorePadding\r\n\t\t\t\t\t\t\t\t\t? { paddingLeft: \"1.5rem\", paddingRight: \"1.5rem\" }\r\n\t\t\t\t\t\t\t\t\t: {}\r\n\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t{`${\r\n\t\t\t\t\t\t\t\tdata.isDisabled\r\n\t\t\t\t\t\t\t\t\t? \"--\".repeat(data.sortOrder - 1)\r\n\t\t\t\t\t\t\t\t\t: \" \".repeat(data.sortOrder - 1)\r\n\t\t\t\t\t\t\t}${data.label}`}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t {data.label}\r\n\t\t\t)}\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport const colourStyles = {\r\n\t// ValueContainer\r\n\tvalueContainer: (base: any) => ({\r\n\t\t...base,\r\n\t\tfontSize: \"0.87rem\",\r\n\t}),\r\n\tcontrol: (base: any) => ({\r\n\t\t...base,\r\n\t\tfontSize: \"0.87rem\",\r\n\t}),\r\n\toption: (\r\n\t\tbase: any,\r\n\t\t{\r\n\t\t\tisDisabled,\r\n\t\t}: {\r\n\t\t\tdata: any;\r\n\t\t\tisDisabled: boolean;\r\n\t\t\tisFocused: boolean;\r\n\t\t\tisSelected: boolean;\r\n\t\t}\r\n\t) => {\r\n\t\t// const color = chroma(data.color);\r\n\t\treturn {\r\n\t\t\t...base,\r\n\t\t\tfontSize: \"0.87rem\",\r\n\t\t\tcursor: isDisabled ? \"not-allowed\" : \"default\",\r\n\t\t\tpadding: \"0.5px\",\r\n\t\t};\r\n\t},\r\n\tmultiValue: (styles: any, { data }: { data: any }) => {\r\n\t\t// const color = chroma(data.color);\r\n\t\treturn {\r\n\t\t\t...styles,\r\n\t\t\t// lineHeight: \"0.5rem\",\r\n\t\t};\r\n\t},\r\n\tmultiValueLabel: (styles: any, { data }: { data: any }) => ({\r\n\t\t...styles,\r\n\t}),\r\n\tmultiValueRemove: (styles: any, { data }: { data: any }) => ({\r\n\t\t...styles,\r\n\t}),\r\n};\r\n\r\nconst SelectDropdown = (props: any) => {\r\n\tconst {\r\n\t\tfield: {\r\n\t\t\t// provided by Formik Field\r\n\t\t\tname,\r\n\t\t},\r\n\t\tform: {\r\n\t\t\t// also provided by Formik Field\r\n\t\t\tsetFieldValue,\r\n\t\t},\r\n\t\tlabel, // our own label prop\r\n\t\toptions, //ooptions to use\r\n\t\tvalue,\r\n\t\tplaceholder,\r\n\t\tgetRef,\r\n\t\tisMulti,\r\n\t\tisClearable,\r\n\t\tonChange,\r\n\t\toptionsTransform, //used to transform the options into a format for a particular dropdown, if available\r\n\t} = props;\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tgetRef && getRef(ref);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tcloseMenuOnSelect={!isMulti || false}\r\n\t\t\t\t\t\t\tplaceholder={placeholder}\r\n\t\t\t\t\t\t\tisMulti={isMulti || false}\r\n\t\t\t\t\t\t\tisClearable={isClearable || false}\r\n\t\t\t\t\t\t\toptions={optionsTransform ? optionsTransform(options) : options}\r\n\t\t\t\t\t\t\tcomponents={{ Option }}\r\n\t\t\t\t\t\t\tstyles={colourStyles}\r\n\t\t\t\t\t\t\tonChange={(selected) => {\r\n\t\t\t\t\t\t\t\tlet sel = Array.isArray(selected)\r\n\t\t\t\t\t\t\t\t\t? selected.map((a: any) => a.value)\r\n\t\t\t\t\t\t\t\t\t: selected?.value;\r\n\t\t\t\t\t\t\t\tonChange && onChange(sel);\r\n\t\t\t\t\t\t\t\tsetFieldValue(name, sel);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tdefaultValue={options.filter((f: any) => {\r\n\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\r\n\t\t\t\t\t\t\t\t\treturn value.includes(f.value);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn value === f.value;\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\tvalue={options.filter((f: any) => {\r\n\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\r\n\t\t\t\t\t\t\t\t\treturn value.includes(f.value);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn value === f.value;\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default SelectDropdown;\r\n\r\nexport function SelectDrop(props: any) {\r\n\t// const { optionsTransform } = props; //used to transform the options into a format for a particular dropdown, if available\r\n\t// const opts = optionsTransform ? optionsTransform(props.options) : props.options;\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tprops.getRef && props.getRef(ref);\r\n\t\t\t}}\r\n\t\t\t{...props.input}\r\n\t\t\tcloseMenuOnSelect={false}\r\n\t\t\tplaceholder={props.placeholder}\r\n\t\t\tisMulti\r\n\t\t\tisClearable={false}\r\n\t\t\toptions={props.options}\r\n\t\t\tcomponents={{ Option }}\r\n\t\t\tstyles={colourStyles}\r\n\t\t\tonChange={props.onChange}\r\n\t\t\tvalue={props.value}\r\n\t\t/>\r\n\t);\r\n}\r\n","import { useField } from \"formik\";\r\nimport React from \"react\";\r\nimport {\r\n\tForm,\r\n\tGrid,\r\n\tIcon,\r\n\tInput,\r\n\tLabel,\r\n\tSemanticICONS,\r\n} from \"semantic-ui-react\";\r\n\r\ninterface Props {\r\n\tname: string;\r\n\tplaceholder?: string;\r\n\ticon?: SemanticICONS;\r\n\tlabel?: string;\r\n\trightIcon?: any;\r\n\tfluid?: boolean;\r\n\tvalue?: string;\r\n\tclassName?: string;\r\n\tdisabled?: boolean;\r\n\tmin?: number;\r\n}\r\n\r\n// const valueCheck = (value: any) => {\r\n// \tif (Number(value) >= 0) return value;\r\n\r\n// \treturn \"\";\r\n// };\r\nconst NumberInputInline = (props: Props) => {\r\n\tconst [field, meta] = useField(props);\r\n\tconst size = \"mini\";\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{props.icon && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{meta.touched && meta.error ? (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{meta.error}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default NumberInputInline;\r\n","import { useField } from \"formik\";\r\nimport React from \"react\";\r\nimport {\r\n\tCheckbox,\r\n\tForm,\r\n\tGrid,\r\n\t// Icon,\r\n\t// Input,\r\n\tLabel,\r\n\tSemanticICONS,\r\n} from \"semantic-ui-react\";\r\n\r\ninterface Props {\r\n\tname: string;\r\n\tplaceholder?: string;\r\n\ticon?: SemanticICONS;\r\n\tlabel?: string;\r\n\trightIcon?: any;\r\n\ttype?: string;\r\n\tfluid?: boolean;\r\n\tvalue?: string;\r\n\tclassName?: string;\r\n\tdisabled?: boolean;\r\n\tmin?: number;\r\n\treadonly?: boolean;\r\n\ttransparent?: boolean;\r\n\tonChange?: any;\r\n\tchecked?: boolean;\r\n}\r\n\r\nconst CheckboxInline = (props: Props) => {\r\n\tconst [field, meta] = useField(props);\r\n\tconst size = \"mini\";\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{meta.touched && meta.error ? (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{meta.error}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default CheckboxInline;\r\n","import { ErrorMessage, Field, Formik } from \"formik\";\r\nimport React, { Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Label, Form, Checkbox } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\nimport { saveValuation } from \"../../actions/valuationsActions\";\r\n// import { fetchBiomeEcosystems } from \"../../actions/biomeEcosystemAction\";\r\nimport { fetchBiomeV2EcosystemV2Ecozones } from \"../../actions/biomeV2EcosystemV2EcozoneAction\";\r\nimport { fetchEcosystemServices } from \"../../actions/ecosystemServiceActions\";\r\nimport { fetchCountries } from \"../../actions/countryActions\";\r\nimport { fetchProtectionStatuses } from \"../../actions/protectionStatusActions\";\r\nimport { fetchValuationMethods } from \"../../actions/valuationMethodActions\";\r\nimport { fetchContinents } from \"../../actions/continentActions\";\r\nimport { fetchCiceses } from \"../../actions/cicesActions\";\r\nimport { fetchSEEAs } from \"../../actions/seeaActions\";\r\nimport { fetchEcosystemConditions } from \"../../actions/ecosystemConditionActions\";\r\nimport { fetchCurrencies } from \"../../actions/others/currencyActions\";\r\nimport { fetchScaleOfStudySites } from \"../../actions/others/scaleOfStudySiteActions\";\r\n\r\nimport { initValuation, ValuationProps } from \"../../shared/Literals\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport EsvdInputInline from \"../../shared/InputInline\";\r\n\r\nimport {\r\n\tformatBiomeForDropdown,\r\n\tformatCicesForDropdown,\r\n\tformatESForDropdown,\r\n\tformatSeeasDropdown,\r\n} from \"../../EsvdFunctions\";\r\nimport { TreeType } from \"../../models/ecosystemService\";\r\n\r\nimport { Valuation } from \"../../models/Valuation\";\r\n\r\nimport SelectDropdown from \"../../shared/SelectDropdown\";\r\nimport NumberInputInline from \"../../shared/InputInlineNumber\";\r\nimport CheckboxInline from \"../../shared/CheckboxInline\";\r\n\r\ninterface IProps {\r\n\t// fetchBiomeEcosystems: Function;\r\n\r\n\tfetchEcosystemServices: Function;\r\n\tfetchCountries: Function;\r\n\tfetchProtectionStatuses: Function;\r\n\tfetchValuationMethods: Function;\r\n\tfetchContinents: Function;\r\n\tfetchCiceses: Function;\r\n\tfetchSEEAs: Function;\r\n\tfetchBiomeV2EcosystemV2Ecozones: Function;\r\n\tfetchEcosystemConditions: Function;\r\n\tfetchCurrencies: Function;\r\n\tfetchScaleOfStudySites: Function;\r\n\r\n\tsaveValuation: Function;\r\n\tresetValuation: Function;\r\n\t// valuation: Valuation | any;\r\n\r\n\tcountries: any[];\r\n\tcontinents: any[];\r\n\tprotectionStatuses: any[];\r\n\tecosystemServices: any[];\r\n\tciceses: any[];\r\n\tseeas: any[];\r\n\tbiomeEcosystems: any[];\r\n\tbiomeV2EcosystemV2Ecozones: any[];\r\n\tvaluationMethods: any[];\r\n\tscaleOfStudySites: any[];\r\n\tcurrencies: any[];\r\n\tecosystemConditions: any[];\r\n\tselectedValuation: Valuation;\r\n}\r\ninterface IState {\r\n\tisLoading: boolean;\r\n\tisInclExcl: boolean;\r\n\tsetLoading: Function;\r\n\r\n\tselectedBiomeEcosystems: any[];\r\n\tselectedBiomeV2EcosystemV2Ecozones: any[];\r\n\tselectedEcosystemServices: any[];\r\n\tselectedValuation: Valuation;\r\n\tselectedCountries: any[];\r\n\tselectedCiceses: any[];\r\n\tselectedSeeas: any[];\r\n\tselectedProtectionStatusId: any;\r\n\tselectedValuationMethods: any[];\r\n\tselectedContinentId: any;\r\n\tselectedEcosystemConditionId: any;\r\n\tselectedScaleOfStudySiteId: any;\r\n\tselectedScaleOfStudySiteCode: any;\r\n\tselectedCurrencyId: any;\r\n}\r\nclass ValuationEntry extends React.Component {\r\n\tbiomeEcosystemsRef: any | null = null;\r\n\tbiomeV2EcosystemV2EcozonesRef: any | null = null;\r\n\tecosystemServiceRef: any | null = null;\r\n\tcountriesRef: any | null = null;\r\n\tvaluationMethodRef: any | null = null;\r\n\tprotectionStatusRef: any | null = null;\r\n\tcontinentRef: any | null = null;\r\n\tecosystemConditionRef: any | null = null;\r\n\tscaleOfStudySiteRef: any | null = null;\r\n\tcurrencyIdRef: any | null = null;\r\n\tcicesRef: any | null = null;\r\n\tseeaRef: any | null = null;\r\n\tstate: IState;\r\n\r\n\tisInclExclRef: any | null = null;\r\n\r\n\tconstructor(props: IProps) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\tisInclExcl: false,\r\n\t\t\tisLoading: false,\r\n\t\t\tsetLoading: (loading: boolean) =>\r\n\t\t\t\tthis.setState(() => ({ isLoading: loading })),\r\n\t\t\tselectedBiomeEcosystems: props.selectedValuation.biomeEcosystems,\r\n\t\t\tselectedBiomeV2EcosystemV2Ecozones:\r\n\t\t\t\tprops.selectedValuation.biomeV2EcosystemV2Ecozones,\r\n\t\t\tselectedEcosystemServices: props.selectedValuation.ecosystemServices,\r\n\t\t\tselectedCountries: props.selectedValuation.countries,\r\n\t\t\tselectedProtectionStatusId: props.selectedValuation.protectionStatusId,\r\n\t\t\tselectedValuationMethods: props.selectedValuation.valuationMethods,\r\n\t\t\tselectedValuation: props.selectedValuation,\r\n\t\t\tselectedContinentId: props.selectedValuation.continentId,\r\n\t\t\tselectedScaleOfStudySiteId: props.selectedValuation.scaleOfStudySiteId,\r\n\t\t\tselectedCurrencyId: props.selectedValuation.currencyId,\r\n\t\t\tselectedEcosystemConditionId:\r\n\t\t\t\tprops.selectedValuation.ecosystemConditionId,\r\n\t\t\tselectedScaleOfStudySiteCode:\r\n\t\t\t\tprops.selectedValuation.scaleOfStudySiteCode,\r\n\t\t\tselectedCiceses: props.selectedValuation.ciceses,\r\n\t\t\tselectedSeeas: props.selectedValuation.seeas,\r\n\t\t};\r\n\t}\r\n\r\n\tresetValuation = () => {\r\n\t\tthis.props.resetValuation(initValuation);\r\n\t};\r\n\r\n\tsetSelectedBiomeEcosystems = (value: TreeType[]) => {\r\n\t\tthis.setState(() => ({ selectedBiomeEcosystems: value }));\r\n\t};\r\n\r\n\tsetSelectedBiomeV2EcosystemV2Ecozones = (value: TreeType[]) => {\r\n\t\tthis.setState(() => ({ selectedBiomeV2EcosystemV2Ecozones: value }));\r\n\t};\r\n\r\n\tsetSelectedEcosystemServices = (value: TreeType[]) => {\r\n\t\tthis.setState(() => ({\r\n\t\t\tselectedEcosystemServices: value,\r\n\t\t}));\r\n\t};\r\n\r\n\tsetSelectedCiceses = (value: TreeType[]) => {\r\n\t\tthis.setState(() => ({\r\n\t\t\tselectedCiceses: value,\r\n\t\t}));\r\n\t};\r\n\r\n\tsetSelectedSeeas = (value: TreeType[]) => {\r\n\t\tthis.setState(() => ({\r\n\t\t\tselectedSeeas: value,\r\n\t\t}));\r\n\t};\r\n\tsetSelectedCountries = (value: TreeType[]) => {\r\n\t\tthis.setState(() => ({\r\n\t\t\tselectedCountries: value,\r\n\t\t}));\r\n\t};\r\n\r\n\tsetSelectedProtectionStatusId = (value: TreeType) => {\r\n\t\tthis.setState(() => ({\r\n\t\t\tselectedProtectionStatusId: value,\r\n\t\t}));\r\n\t};\r\n\r\n\tsetSelectedScaleOfStudySiteId = (value: TreeType) => {\r\n\t\tthis.setState(() => ({\r\n\t\t\tselectedScaleOfStudySiteId: value,\r\n\t\t}));\r\n\t};\r\n\r\n\tsetSelectedValuationMethods = (value: TreeType[]) => {\r\n\t\tthis.setState(() => ({\r\n\t\t\tselectedValuationMethods: value,\r\n\t\t}));\r\n\t};\r\n\r\n\trenderContent = () => {\r\n\t\tconst {\r\n\t\t\tselectedValuation,\r\n\t\t\tisLoading,\r\n\t\t\tisInclExcl,\r\n\t\t\tselectedEcosystemServices,\r\n\t\t\t// selectedBiomeEcosystems,\r\n\t\t\tselectedBiomeV2EcosystemV2Ecozones,\r\n\t\t\tselectedCountries,\r\n\t\t\tselectedProtectionStatusId,\r\n\t\t\tselectedValuationMethods,\r\n\t\t\tselectedContinentId,\r\n\t\t\tselectedEcosystemConditionId,\r\n\t\t\tselectedScaleOfStudySiteId,\r\n\t\t\tselectedCurrencyId,\r\n\t\t\tselectedCiceses,\r\n\t\t\tselectedSeeas,\r\n\t\t} = this.state;\r\n\r\n\t\tconst {\r\n\t\t\tbiomeEcosystems,\r\n\t\t\tecosystemServices,\r\n\t\t\tcountries,\r\n\t\t\tprotectionStatuses,\r\n\t\t\tvaluationMethods,\r\n\t\t\tcontinents,\r\n\t\t\tcurrencies,\r\n\t\t\tciceses,\r\n\t\t\tecosystemConditions,\r\n\t\t\tscaleOfStudySites,\r\n\t\t\tbiomeV2EcosystemV2Ecozones,\r\n\t\t\tseeas,\r\n\t\t} = this.props;\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tthis.handleFormSubmit(values, setErrors);\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t{({\r\n\t\t\t\t\t\tvalues,\r\n\t\t\t\t\t\thandleChange,\r\n\t\t\t\t\t\thandleSubmit,\r\n\t\t\t\t\t\tisValid,\r\n\t\t\t\t\t\tisSubmitting,\r\n\t\t\t\t\t\tdirty,\r\n\t\t\t\t\t\terrors,\r\n\t\t\t\t\t\tinitialValues,\r\n\t\t\t\t\t}) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.biomeV2EcosystemV2EcozonesRef = ref;\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tplaceholder={ValuationProps.biomeV2EcosystemV2Ecozones.label}\r\n\t\t\t\t\t\t\t\tonChange={this.setSelectedBiomeV2EcosystemV2Ecozones}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.ecosystemServiceRef = ref;\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tplaceholder={ValuationProps.ecosystemServices.label}\r\n\t\t\t\t\t\t\t\tonChange={this.setSelectedEcosystemServices}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.cicesRef = ref;\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tplaceholder={ValuationProps.ciceses.label}\r\n\t\t\t\t\t\t\t\tonChange={this.setSelectedCiceses}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.seeaRef = ref;\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tplaceholder={ValuationProps.seeas.label}\r\n\t\t\t\t\t\t\t\tonChange={this.setSelectedSeeas}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.countriesRef = ref;\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tplaceholder={ValuationProps.countries.label}\r\n\t\t\t\t\t\t\t\tonChange={this.setSelectedCountries}\r\n\t\t\t\t\t\t\t\tisMulti={true}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.continentRef = ref;\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tplaceholder={ValuationProps.continentId.label}\r\n\t\t\t\t\t\t\t\tonChange={(value: TreeType) =>\r\n\t\t\t\t\t\t\t\t\tthis.setState(() => ({ selectedContinentId: value }))\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.scaleOfStudySiteRef = ref;\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tplaceholder={ValuationProps.scaleOfStudySite.label}\r\n\t\t\t\t\t\t\t\tonChange={(value: TreeType) => {\r\n\t\t\t\t\t\t\t\t\t// value in the options is the primary key id from db.\r\n\t\t\t\t\t\t\t\t\t// use it to retrieve the code for the selected option from the options list.\r\n\t\t\t\t\t\t\t\t\t// assign the code to the code state variable\r\n\t\t\t\t\t\t\t\t\t// set the code for this scale\r\n\t\t\t\t\t\t\t\t\t// const scale = scaleOfStudySites.find((x) => x.id === value);\r\n\t\t\t\t\t\t\t\t\tthis.setState(() => ({\r\n\t\t\t\t\t\t\t\t\t\tselectedScaleOfStudySiteId: value,\r\n\t\t\t\t\t\t\t\t\t\t// selectedScaleOfStudySiteCode: scale.code,\r\n\t\t\t\t\t\t\t\t\t}));\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.protectionStatusRef = ref;\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tplaceholder=\"Protection Status\"\r\n\t\t\t\t\t\t\t\tonChange={this.setSelectedProtectionStatusId}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.ecosystemConditionRef = ref;\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tplaceholder={ValuationProps.ecosystemConditionId.label}\r\n\t\t\t\t\t\t\t\tonChange={(value: TreeType) => {\r\n\t\t\t\t\t\t\t\t\tthis.setState(() => ({\r\n\t\t\t\t\t\t\t\t\t\tselectedEcosystemConditionId: value,\r\n\t\t\t\t\t\t\t\t\t}));\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.valuationMethodRef = ref;\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tplaceholder=\"Valuation Methods\"\r\n\t\t\t\t\t\t\t\tonChange={this.setSelectedValuationMethods}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.currencyIdRef = ref;\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tplaceholder=\"Currency\"\r\n\t\t\t\t\t\t\t\tonChange={(value: TreeType) =>\r\n\t\t\t\t\t\t\t\t\tthis.setState(() => ({\r\n\t\t\t\t\t\t\t\t\t\tselectedCurrencyId: value,\r\n\t\t\t\t\t\t\t\t\t}))\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.setState(() => ({ isInclExcl: !isInclExcl }));\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tchecked={isInclExcl}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t{isInclExcl ? (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tSave\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t);\r\n\t};\r\n\r\n\thandleFormSubmit: Function = (values: Valuation, setErrors: Function) => {\r\n\t\tconst { saveValuation } = this.props;\r\n\t\tconst { setLoading, isInclExcl } = this.state;\r\n\t\tvalues.inclExcl = isInclExcl;\r\n\t\tsetLoading(true);\r\n\t\tsaveValuation(values)\r\n\t\t\t.then((res: any) => {\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t\tthis.props.resetValuation(initValuation);\r\n\t\t\t})\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\trender() {\r\n\t\treturn {this.renderContent()};\r\n\t}\r\n}\r\n\r\n//this determines whether the save button is active or not.\r\nconst isValidEntry = (values: any): boolean => {\r\n\t//check for valid entry\r\n\tconst entries = Object.values(values).filter((a: any) => {\r\n\t\tif (Array.isArray(a) && a.length === 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (typeof a === \"string\" && a.trim() === \"\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (typeof a === \"string\" && a === null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (a === null || a === \"\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tif (\r\n\t\t(!values.id && entries.length <= 2) ||\r\n\t\t(values.id && entries.length <= 3)\r\n\t) {\r\n\t\t//nothing has been entered yet\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn true;\r\n};\r\nconst validationSchema: any = Yup.object({\r\n\t[`${ValuationProps.numberOfBeneficiaries.name}`]: Yup.number()\r\n\t\t.nullable(true)\r\n\t\t.positive(\r\n\t\t\t`${ValuationProps.numberOfBeneficiaries.label} must be a positive number.`\r\n\t\t),\r\n\t[`${ValuationProps.siteArea.name}`]: Yup.number()\r\n\t\t.nullable(true)\r\n\t\t.positive(`${ValuationProps.siteArea.label} must be a positive number.`),\r\n\t[`${ValuationProps.siteAreaInHectares.name}`]: Yup.number()\r\n\t\t.nullable(true)\r\n\t\t.positive(\r\n\t\t\t`${ValuationProps.siteAreaInHectares.label} must be a positive number.`\r\n\t\t),\r\n\t[`${ValuationProps.siteLength.name}`]: Yup.number()\r\n\t\t.nullable(true)\r\n\t\t.positive(`${ValuationProps.siteLength.label} must be a positive number.`),\r\n\t[`${ValuationProps.siteLengthKm.name}`]: Yup.number()\r\n\t\t.nullable(true)\r\n\t\t.positive(\r\n\t\t\t`${ValuationProps.siteLengthKm.label} must be a positive number.`\r\n\t\t),\r\n\t[`${ValuationProps.siteLengthKm.name}`]: Yup.number()\r\n\t\t.nullable(true)\r\n\t\t.positive(\r\n\t\t\t`${ValuationProps.siteLengthKm.label} must be a positive number.`\r\n\t\t),\r\n\t[`${ValuationProps.intPerHectarePerYear.name}`]: Yup.number()\r\n\t\t.nullable(true)\r\n\t\t.positive(\r\n\t\t\t`${ValuationProps.intPerHectarePerYear.label} must be a positive number.`\r\n\t\t),\r\n\t[`${ValuationProps.valueYear.name}`]: Yup.number()\r\n\t\t.nullable(true)\r\n\t\t.positive(`${ValuationProps.valueYear.label} must be a positive number.`)\r\n\t\t.test(\r\n\t\t\t\"len\",\r\n\t\t\t`${ValuationProps.valueYear.label} is not a valid year.`,\r\n\t\t\t(val: any) => !val || (val && val.toString().length === 4)\r\n\t\t),\r\n\t[`${ValuationProps.presentValueYear.name}`]: Yup.number()\r\n\t\t.nullable(true)\r\n\t\t.positive(\r\n\t\t\t`${ValuationProps.presentValueYear.label} must be a positive number.`\r\n\t\t),\r\n\t[`${ValuationProps.presentValueDiscountRate.name}`]: Yup.number()\r\n\t\t.nullable(true)\r\n\t\t.positive(\r\n\t\t\t`${ValuationProps.presentValueDiscountRate.label} must be a positive number.`\r\n\t\t),\r\n});\r\nconst mapStateToProps = (state: any) => {\r\n\treturn {\r\n\t\tcountries: state.countries,\r\n\t\tcontinents: state.continents,\r\n\t\tprotectionStatuses: state.protectionStatuses,\r\n\t\tecosystemServices: state.ecosystemServices,\r\n\t\tbiomeEcosystems: state.biomeEcosystems,\r\n\t\tbiomeV2EcosystemV2Ecozones: state.biomeV2EcosystemV2Ecozones,\r\n\t\tvaluationMethods: state.valuationMethods,\r\n\t\tciceses: state.ciceses,\r\n\t\tseeas: state.seeas,\r\n\t\tcurrencies: state.currencies,\r\n\t\tscaleOfStudySites: state.scaleOfStudySites,\r\n\t\tecosystemConditions: state.ecosystemConditions,\r\n\t\t// selectedValuation: state.selectedValuation,\r\n\t};\r\n};\r\nexport default connect(mapStateToProps, {\r\n\tsaveValuation,\r\n\t// fetchBiomeEcosystems,\r\n\tfetchBiomeV2EcosystemV2Ecozones,\r\n\tfetchEcosystemServices,\r\n\tfetchCountries,\r\n\tfetchProtectionStatuses,\r\n\tfetchValuationMethods,\r\n\tfetchContinents,\r\n\tfetchCiceses,\r\n\tfetchSEEAs,\r\n\tfetchCurrencies,\r\n\tfetchEcosystemConditions,\r\n\tfetchScaleOfStudySites,\r\n})(ValuationEntry);\r\n","import React from \"react\";\r\nimport { Dimmer, Loader } from \"semantic-ui-react\";\r\n\r\nconst LoadingOverlay = ({\r\n\tactive,\r\n\ttext,\r\n\tcontent,\r\n}: {\r\n\tactive: boolean | undefined;\r\n\ttext?: string | undefined;\r\n\tcontent?: any;\r\n}) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{text || \"Loading\"}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default LoadingOverlay;\r\n\r\nexport const LoadingButton = ({\r\n\t// active,\r\n\ttext,\r\n\tisLoading = false,\r\n\ttype = \"button\",\r\n\tsemanticColor = \"success\",\r\n\tonClick,\r\n\tclassName,\r\n}: {\r\n\t// active: boolean | undefined;\r\n\tisLoading: boolean;\r\n\ttext?: string;\r\n\tsemanticColor?: \"success\" | \"primary\";\r\n\ttype?: \"button\" | \"submit\" | \"reset\" | undefined;\r\n\tonClick?: Function;\r\n\tclassName?: string;\r\n}) => {\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tonClick && onClick();\r\n\t\t\t\treturn true;\r\n\t\t\t}}>\r\n\t\t\t{text}\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport const LoadingStyledButton = ({\r\n\t// active,\r\n\ttext,\r\n\tisLoading = false,\r\n\ttype = \"button\",\r\n\tsemanticColor = \"success\",\r\n}: {\r\n\t// active: boolean | undefined;\r\n\tisLoading: boolean;\r\n\ttext: string;\r\n\tsemanticColor?: \"success\" | \"primary\";\r\n\ttype?: \"button\" | \"submit\" | \"reset\" | undefined;\r\n}) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t{text}\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport const LoadingFormButton = ({\r\n\ttext,\r\n\tisLoading = false,\r\n\tdisabled = false,\r\n\ttype = \"button\",\r\n\tsemanticColor = \"success\",\r\n\tdisplay = \"block !important\",\r\n\tbackgroundColor = \"#70bbfd\",\r\n\theight = \"3rem\",\r\n\tstyle = undefined,\r\n}: {\r\n\tdisabled?: boolean;\r\n\r\n\tisLoading: boolean;\r\n\ttext: string;\r\n\tsemanticColor?: \"success\" | \"primary\";\r\n\ttype?: \"button\" | \"submit\" | \"reset\" | undefined;\r\n\tdisplay?: string;\r\n\tbackgroundColor?: string;\r\n\theight?: string;\r\n\tstyle?: React.CSSProperties | undefined;\r\n}) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t{text}\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n","import React, { useContext, useState } from \"react\";\r\nimport _ from \"lodash\";\r\nimport agent from \"../api/agent\";\r\nimport { Valuation } from \"../models/Valuation\";\r\nimport { Study } from \"../models/Study\";\r\nimport { initStudy } from \"../shared/Literals\";\r\n\r\ninterface IValue {\r\n\tgetStudyValuations: Function;\r\n\tstudyValuations: Valuation[];\r\n\tstudies: Study[];\r\n\tsetStudies: Function;\r\n\tdeleteValuation: Function;\r\n\tsetCurrentStudy: Function;\r\n\tcurrentStudy: Study | null;\r\n\tsetIsEditor: Function;\r\n\tisEditor: boolean;\r\n\tisLoadingValuations: boolean;\r\n\tsetCurrentValuation: Function;\r\n\tcurrentValuation: Valuation | null;\r\n\tsaveValuation: Function;\r\n\tgetUserStudies: Function;\r\n\tresetStudies: Function;\r\n}\r\n\r\nconst ValuationsContext = React.createContext(null);\r\n\r\n// The ValuationsProvider is responsible for Esvd Valuation management\r\nconst ValuationsProvider = ({ children }: { children: any }) => {\r\n\tconst [studies, setStudies] = useState([]);\r\n\tconst [studyValuations, setStudyValuations] = useState([]);\r\n\tconst [currentStudy, setCurrentStudy] = useState(initStudy);\r\n\tconst [currentValuation, setCurrentValuation] = useState(\r\n\t\tnull\r\n\t);\r\n\tconst [isEditor, setIsEditor] = useState(false);\r\n\tconst [isLoadingValuations, setIsLoadingValuations] =\r\n\t\tuseState(false);\r\n\r\n\t// useEffect(() => {\r\n\t// \treturn () => {};\r\n\t// }, []);\r\n\r\n\tconst getUserStudies = async () => {\r\n\t\ttry {\r\n\t\t\tconst response = await agent.Studies.userList();\r\n\t\t\t// const studs = { ..._.mapKeys(response, \"id\") };\r\n\t\t\tconst sorted = Object.values(response).sort((a, b) => {\r\n\t\t\t\treturn !!a.studyId > !!b.studyId ? 1 : -1; //sort by study in descending order\r\n\t\t\t});\r\n\t\t\tsetStudies(sorted);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getStudyValuations = async (studyid: number | null) => {\r\n\t\ttry {\r\n\t\t\t// //reset the valuation list\r\n\t\t\t// dispatch({\r\n\t\t\t// \ttype: USER_VALUATIONS_FETCH,\r\n\t\t\t// \tpayload: [],\r\n\t\t\t// });\r\n\t\t\tsetIsLoadingValuations(true);\r\n\t\t\tconst response = !studyid\r\n\t\t\t\t? []\r\n\t\t\t\t: await agent.StudyValutations.studyValuations(studyid);\r\n\r\n\t\t\tsetStudyValuations(\r\n\t\t\t\tObject.values(response).sort(\r\n\t\t\t\t\t(a, b) => (a.valueId > b.valueId ? 1 : -1) //ascending order\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t\tsetIsLoadingValuations(false);\r\n\t\t\t// dispatch({\r\n\t\t\t// \ttype: USER_VALUATIONS_FETCH,\r\n\t\t\t// \tpayload: response,\r\n\t\t\t// });\r\n\t\t} catch (error: any) {\r\n\t\t\tsetIsLoadingValuations(false);\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst saveValuation = async (valuation: Valuation) => {\r\n\t\ttry {\r\n\t\t\tif (valuation.id === null) {\r\n\t\t\t\tvaluation.id = 0;\r\n\t\t\t}\r\n\t\t\tconst response =\r\n\t\t\t\t!valuation.id || valuation.id === 0\r\n\t\t\t\t\t? await agent.StudyValutations.create(valuation)\r\n\t\t\t\t\t: await agent.StudyValutations.update(valuation);\r\n\t\t\treturn response;\r\n\t\t\t// dispatch({\r\n\t\t\t// \ttype:\r\n\t\t\t// \t\t!valuation.id || valuation.id === 0\r\n\t\t\t// \t\t\t? VALUATION_CREATE\r\n\t\t\t// \t\t\t: VALUATION_EDIT,\r\n\t\t\t// \tpayload: response,\r\n\t\t\t// });\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst deleteValuation = async (id: number) => {\r\n\t\ttry {\r\n\t\t\tawait agent.StudyValutations.delete(id);\r\n\t\t\t// dispatch({\r\n\t\t\t// \ttype: VALUATION_DELETE,\r\n\t\t\t// \tpayload: id,\r\n\t\t\t// });\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\tconst resetStudies = () => {\r\n\t\tsetStudyValuations([]);\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useValuations = () => {\r\n\tconst valuations = useContext(ValuationsContext);\r\n\tif (valuations == null) {\r\n\t\tthrow new Error(\"useValuations() called outside of a valuations hook?\");\r\n\t}\r\n\treturn valuations;\r\n};\r\n\r\nexport { ValuationsProvider, useValuations };\r\n","import React from \"react\";\r\n// import { connect } from \"react-redux\";\r\nimport { Button, Grid, List } from \"semantic-ui-react\";\r\nimport moment from \"moment\";\r\n// import {\r\n// \tfetchStudyValuations,\r\n// \tdeleteValuation,\r\n// } from \"../../actions/valuationsActions\";\r\nimport { Study } from \"../../models/Study\";\r\nimport { Valuation } from \"../../models/Valuation\";\r\nimport LoadingOverlay from \"../../shared/LoadingOverlay\";\r\nimport { useValuations } from \"../../providers/ValuationsProvider\";\r\n\r\ninterface IProps {\r\n\t// fetchStudyValuations: Function;\r\n\t// deleteValuation: Function;\r\n\tonSelectionChanged: Function;\r\n\tonClone: Function;\r\n\t// valuations: Valuation[];\r\n\tselectedStudy: Study;\r\n\t// isEditor: boolean;\r\n}\r\n\r\nconst ValuationList = (props: IProps) => {\r\n\tconst {\r\n\t\tgetStudyValuations,\r\n\t\tstudyValuations,\r\n\t\tisEditor,\r\n\t\t// setIsEditor,\r\n\t\tisLoadingValuations,\r\n\t\tsetCurrentValuation,\r\n\t\tsaveValuation,\r\n\t} = useValuations();\r\n\t// const [valuations, setValuations]=React.useState([]);\r\n\t// state = {\r\n\t// \tisLoadingValuations: false,\r\n\t// \tvaluations: [],\r\n\t// };\r\n\r\n\t// componentDidMount() {\r\n\t// \tthis.props.fetchStudyValuations();\r\n\t// }\r\n\r\n\t// componentDidUpdate(prevProp: IProps) {\r\n\t// \tconst { selectedStudy } = this.props;\r\n\t// \tif (prevProp.selectedStudy.id !== selectedStudy.id) {\r\n\t// \t\tthis.setState(() => ({ isLoadingValuations: true }));\r\n\t// \t\tthis.props\r\n\t// \t\t\t.fetchStudyValuations(selectedStudy.id)\r\n\t// \t\t\t.then((res: any) => {\r\n\t// \t\t\t\tthis.setState(() => ({ isLoadingValuations: false }));\r\n\t// \t\t\t})\r\n\t// \t\t\t.catch((err: any) => {\r\n\t// \t\t\t\tthis.setState(() => ({ isLoadingValuations: false }));\r\n\t// \t\t\t\tthis.showModal(err);\r\n\t// \t\t\t});\r\n\t// \t}\r\n\t// }\r\n\r\n\tReact.useEffect(() => {\r\n\t\tconst { selectedStudy } = props;\r\n\t\tselectedStudy && getStudyValuations(selectedStudy.id);\r\n\t}, [props.selectedStudy]);\r\n\r\n\t// const showModal = (msg: string) => {\r\n\t// \t// const { openModal } = props;\r\n\t// \topenModal({\r\n\t// \t\ticon: \"error\",\r\n\t// \t\theader: \"Error!\",\r\n\t// \t\tcontent: (\r\n\t// \t\t\t\r\n\t// \t\t\t\t\r\n\t// \t\t\t\t\t

{msg}

\r\n\t// \t\t\t\t
\r\n\t// \t\t\t
\r\n\t// \t\t),\r\n\t// \t\tisOpen: true,\r\n\t// \t\t// actions: null,\r\n\t// \t});\r\n\t// };\r\n\r\n\tconst selectedValuation = (valuation: Valuation) => {\r\n\t\t// this.props.onSelectionChanged(valuation);\r\n\t};\r\n\r\n\tconst removeValuation = (valuation: Valuation) => {\r\n\t\t// this.props\r\n\t\t// \t.deleteValuation(valuation.id)\r\n\t\t// \t.then((res: any) => {})\r\n\t\t// \t.catch((error: any) => {});\r\n\t};\r\n\r\n\tconst cloneValuation = async (valuation: Valuation) => {\r\n\t\tlet cloned = Object.assign({}, valuation);\r\n\t\tcloned.valueId = 0;\r\n\t\tcloned.id = null;\r\n\r\n\t\tif (!cloned.id || cloned.id === 0) {\r\n\t\t\tconst { selectedStudy } = props;\r\n\t\t\t//new valuation, so set the studyid to the current study and create the valueid\r\n\t\t\tcloned.studyId = selectedStudy?.id || 0;\r\n\t\t\t//set the valueid also\r\n\t\t\tconst cnt = studyValuations.length;\r\n\t\t\tif (cnt === 0) {\r\n\t\t\t\tcloned.valueId = parseInt(`${selectedStudy.id}00001`) || 0;\r\n\t\t\t} else {\r\n\t\t\t\t//get max valueid\r\n\t\t\t\tconst maxVal = Math.max(...studyValuations.map((x) => x.valueId));\r\n\t\t\t\tcloned.valueId = maxVal + 1;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcloned = await saveValuation(cloned);\r\n\t\t// const { selectedStudy } = props;\r\n\t\t// selectedStudy && getStudyValuations(selectedStudy.id);\r\n\t\tsetCurrentValuation(cloned);\r\n\t\t// this.props.setAsCurrentValuation(cloned);\r\n\t\t// this.setState(() => ({\r\n\t\t// selectedValuation: cloned,\r\n\t\t// showList: false,\r\n\t\t// }));\r\n\t};\r\n\r\n\tconst renderSimpleList = () => {\r\n\t\tconst { selectedStudy } = props;\r\n\t\tif (!selectedStudy) return null;\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{studyValuations.map((valuation, i) => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{!selectedStudy.isPublished && (\r\n\t\t\t\t\t\t\t\t cloneValuation(valuation)}>\r\n\t\t\t\t\t\t\t\t\tcopy\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t setCurrentValuation(valuation)}>\r\n\t\t\t\t\t\t\t{valuation.valueId}\r\n\t\t\t\t\t\t\t{`${valuation.studyId} - ${moment(valuation.codedDate).format(\r\n\t\t\t\t\t\t\t\t\"DD-MM-YYYY HH:mm:ss\"\r\n\t\t\t\t\t\t\t)}`}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\t// const\tonSelectValuation = (v: Valuation) => {\r\n\t// \t\tconst { selectedStudy, isEditor } = this.props;\r\n\t// \t\tif (isEditor) {\r\n\t// \t\t\tthis.selectedValuation(v);\r\n\t// \t\t} else {\r\n\t// \t\t\t!selectedStudy.isPublished && this.selectedValuation(v);\r\n\t// \t\t}\r\n\t// \t};\r\n\r\n\tconst renderDetailedList = () => {\r\n\t\t// const { valuations } = this.props;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{studyValuations.map((valuation, i) => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t setCurrentValuation(valuation)}>\r\n\t\t\t\t\t\t\t{valuation.valueId}\r\n\t\t\t\t\t\t\t{`Location Name: ${\r\n\t\t\t\t\t\t\t\tvaluation.studyLocation || \"\"\r\n\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t{`Ecosystem Text: ${valuation.ecosystemDescription || \"\"}`}
\r\n\t\t\t\t\t\t\t{`Ecosystem Service Text: ${\r\n\t\t\t\t\t\t\t\tvaluation.ecosystemServiceDescription || \"\"\r\n\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{`Valuation Change: ${valuation.valuedChange || \"\"}`}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t))}\r\n\t\t\t
\r\n\t\t);\r\n\t};\r\n\r\n\t// render() {\r\n\t// const { isLoadingValuations } = this.state;\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t{isEditor ? renderDetailedList() : renderSimpleList()}\r\n\t\t
\r\n\t);\r\n\t// }\r\n};\r\n\r\n// const mapStateToProps = (state: any) => {\r\n// \treturn {\r\n// \t\tvaluations: Object.values(state.valuations).sort(\r\n// \t\t\t(a, b) => (a.valueId > b.valueId ? 1 : -1) //ascending order\r\n// \t\t),\r\n// \t\tisEditor: state.isEditor,\r\n// \t};\r\n// };\r\n\r\nexport default ValuationList;\r\n\r\n// \tconnect(mapStateToProps, {\r\n// \tfetchStudyValuations,\r\n// \tdeleteValuation,\r\n// \topenModal,\r\n// })(ValuationList);\r\n","import React, { Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Card } from \"semantic-ui-react\";\r\nimport {\r\n\tfetchStudyValuations,\r\n\tfetchStudyValuation,\r\n\tdeleteValuation,\r\n\tsetAsCurrentValuation,\r\n} from \"../../actions/valuationsActions\";\r\nimport { Study } from \"../../models/Study\";\r\nimport { Valuation } from \"../../models/Valuation\";\r\nimport { initValuation } from \"../../shared/Literals\";\r\nimport ValuationEntry from \"./ValuationEntry\";\r\nimport ValuationList from \"./ValuationList\";\r\n\r\n// import { fetchBiomeEcosystems } from \"../../actions/biomeEcosystemAction\";\r\nimport { fetchEcosystemServices } from \"../../actions/ecosystemServiceActions\";\r\nimport { fetchCountries } from \"../../actions/countryActions\";\r\nimport { fetchProtectionStatuses } from \"../../actions/protectionStatusActions\";\r\nimport { fetchValuationMethods } from \"../../actions/valuationMethodActions\";\r\nimport { fetchContinents } from \"../../actions/continentActions\";\r\nimport { fetchCiceses } from \"../../actions/cicesActions\";\r\nimport { fetchEcosystemConditions } from \"../../actions/ecosystemConditionActions\";\r\nimport { fetchCurrencies } from \"../../actions/others/currencyActions\";\r\nimport { fetchScaleOfStudySites } from \"../../actions/others/scaleOfStudySiteActions\";\r\nimport { fetchBiomeV2EcosystemV2Ecozones } from \"../../actions/biomeV2EcosystemV2EcozoneAction\";\r\nimport { fetchSEEAs } from \"../../actions/seeaActions\";\r\n\r\ninterface IProps {\r\n\tfetchStudyValuation: Function;\r\n\tsetAsCurrentValuation: Function;\r\n\tfetchStudyValuations: Function;\r\n\tonClearValuationUi?: Function;\r\n\tdeleteValuation: Function;\r\n\tvaluations: Valuation[];\r\n\tselectedStudy: Study;\r\n\tselectedValuation: Valuation;\r\n\tisEditor: boolean;\r\n\tclearValuationUi?: boolean;\r\n\r\n\t// fetchBiomeEcosystems: Function;\r\n\tfetchEcosystemServices: Function;\r\n\tfetchCountries: Function;\r\n\tfetchProtectionStatuses: Function;\r\n\tfetchValuationMethods: Function;\r\n\tfetchContinents: Function;\r\n\tfetchCiceses: Function;\r\n\tfetchEcosystemConditions: Function;\r\n\tfetchCurrencies: Function;\r\n\tfetchScaleOfStudySites: Function;\r\n\tfetchSEEAs: Function;\r\n\tfetchBiomeV2EcosystemV2Ecozones: Function;\r\n}\r\n\r\nconst ButtonStates = { ShowList: \"Show list\", AddNew: \"Add new\" };\r\nclass Valuations extends React.Component {\r\n\tstate = {\r\n\t\t// selectedValuation: this.props.selectedValuation,\r\n\t\tisLoading: false,\r\n\t\tisNew: false,\r\n\t\tsetLoading: (loading: boolean) =>\r\n\t\t\tthis.setState(() => ({ isLoading: loading })),\r\n\t\tshowList: true,\r\n\t\tisEntry: false,\r\n\t\tbuttonState: ButtonStates.AddNew,\r\n\t\tselectedValuation: this.props.selectedValuation,\r\n\t};\r\n\r\n\tcomponentDidMount() {\r\n\t\t// //get biomes\r\n\t\t// this.props.fetchBiomeEcosystems();\r\n\t\tthis.props.fetchBiomeV2EcosystemV2Ecozones();\r\n\t\t//get ecosystemservices\r\n\t\tthis.props.fetchEcosystemServices();\r\n\t\t//get countries\r\n\t\tthis.props.fetchCountries();\r\n\t\t//get protectionStatuses\r\n\t\tthis.props.fetchProtectionStatuses();\r\n\t\t//get valuationMethods\r\n\t\tthis.props.fetchValuationMethods();\r\n\t\tthis.props.fetchContinents();\r\n\r\n\t\tthis.props.fetchScaleOfStudySites();\r\n\t\tthis.props.fetchCurrencies();\r\n\t\tthis.props.fetchEcosystemConditions();\r\n\t\tthis.props.fetchCiceses();\r\n\t\tthis.props.fetchSEEAs();\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProp: IProps, prevState: any) {\r\n\t\tconst {\r\n\t\t\tselectedValuation,\r\n\t\t\tclearValuationUi,\r\n\t\t\tonClearValuationUi,\r\n\t\t\tfetchStudyValuations,\r\n\t\t} = this.props;\r\n\t\tif (prevProp.selectedValuation.id !== selectedValuation.id) {\r\n\t\t\tthis.setState(() => ({\r\n\t\t\t\tselectedValuation: selectedValuation,\r\n\t\t\t}));\r\n\t\t\tthis.toggleList();\r\n\t\t}\r\n\t\tif (clearValuationUi) {\r\n\t\t\tthis.resetForm();\r\n\t\t\tfetchStudyValuations(); //reset the list of valuations for the selected study\r\n\t\t\tonClearValuationUi && onClearValuationUi(); //signal to parent that valuation ui have been reset.\r\n\t\t}\r\n\t}\r\n\r\n\tgetSelectedValuation = (valuation: Valuation) => {\r\n\t\tthis.props.fetchStudyValuation(valuation);\r\n\t};\r\n\r\n\tresetForm = () => {\r\n\t\tthis.setState(() => ({\r\n\t\t\tshowList: true,\r\n\t\t}));\r\n\r\n\t\t//set button state\r\n\t\tthis.setState(() => ({\r\n\t\t\tbuttonState: ButtonStates.AddNew,\r\n\t\t}));\r\n\t};\r\n\r\n\ttoggleList = () => {\r\n\t\tthis.setState(() => ({\r\n\t\t\tshowList: this.state.buttonState === ButtonStates.ShowList,\r\n\t\t}));\r\n\r\n\t\t//set button state\r\n\t\tif (this.state.buttonState === ButtonStates.ShowList) {\r\n\t\t\tthis.setState(() => ({\r\n\t\t\t\tbuttonState: ButtonStates.AddNew,\r\n\t\t\t}));\r\n\t\t} else {\r\n\t\t\tthis.setState(() => ({\r\n\t\t\t\tbuttonState: ButtonStates.ShowList,\r\n\t\t\t}));\r\n\t\t}\r\n\t};\r\n\r\n\taddNew = () => {\r\n\t\tconst { selectedStudy, valuations } = this.props;\r\n\t\tconst initVal = initValuation;\r\n\t\t//new valuation, so set the studyid to the current study and create the valueid\r\n\t\tinitVal.studyId = selectedStudy?.id || 0;\r\n\t\t//set the valueid also\r\n\t\tconst cnt = valuations.length;\r\n\t\tif (cnt === 0) {\r\n\t\t\tinitVal.valueId = parseInt(`${selectedStudy.id}00001`) || 0;\r\n\t\t} else {\r\n\t\t\t//get max valueid\r\n\t\t\tconst maxVal = Math.max(...valuations.map((x) => x.valueId));\r\n\t\t\tinitVal.valueId = maxVal + 1;\r\n\t\t}\r\n\t\tthis.props.setAsCurrentValuation(initVal);\r\n\t};\r\n\r\n\tcloneValuation = (valuation: Valuation) => {\r\n\t\tlet cloned = Object.assign({}, valuation);\r\n\t\tcloned.valueId = 0;\r\n\t\tcloned.id = null;\r\n\r\n\t\tif (!cloned.id || cloned.id === 0) {\r\n\t\t\tconst { selectedStudy, valuations } = this.props;\r\n\t\t\t//new valuation, so set the studyid to the current study and create the valueid\r\n\t\t\tcloned.studyId = selectedStudy?.id || 0;\r\n\t\t\t//set the valueid also\r\n\t\t\tconst cnt = valuations.length;\r\n\t\t\tif (cnt === 0) {\r\n\t\t\t\tcloned.valueId = parseInt(`${selectedStudy.id}00001`) || 0;\r\n\t\t\t} else {\r\n\t\t\t\t//get max valueid\r\n\t\t\t\tconst maxVal = Math.max(...valuations.map((x) => x.valueId));\r\n\t\t\t\tcloned.valueId = maxVal + 1;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.props.setAsCurrentValuation(cloned);\r\n\t\t// this.setState(() => ({\r\n\t\t// selectedValuation: cloned,\r\n\t\t// showList: false,\r\n\t\t// }));\r\n\t};\r\n\r\n\trenderShowListButton = () => {\r\n\t\tconst { selectedStudy, isEditor } = this.props;\r\n\t\tconst { showList } = this.state;\r\n\t\tif (isEditor) {\r\n\t\t\treturn showList ? (\r\n\t\t\t\t\"\"\r\n\t\t\t) : (\r\n\t\t\t\t this.toggleList()}>\r\n\t\t\t\t\tShow list\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn selectedStudy.isPublished ? null : (\r\n\t\t\t\t {\r\n\t\t\t\t\t\tif (this.state.buttonState === ButtonStates.AddNew) {\r\n\t\t\t\t\t\t\tthis.addNew();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.toggleList();\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t{this.state.buttonState}\r\n\t\t\t\t\t{/* {showList ? ButtonStates.ShowList : ButtonStates.AddNew} */}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\trenderContent = () => {\r\n\t\tconst { valuations, selectedStudy, selectedValuation } = this.props;\r\n\t\tconst { showList } = this.state;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tValuations from this study {`(${valuations.length} valuations)`}\r\n\t\t\t\t\t

\r\n\t\t\t\t\t{this.renderShowListButton()}\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{showList ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tthis.getSelectedValuation(valuation)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tonClone={(clone: Valuation) => {\r\n\t\t\t\t\t\t\t\tthis.cloneValuation(clone);\r\n\t\t\t\t\t\t\t\tthis.toggleList();\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tselectedStudy={selectedStudy}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tthis.resetForm();\r\n\t\t\t\t\t\t\t\t// this.getSelectedValuation(valuation);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tselectedValuation={selectedValuation}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t);\r\n\t};\r\n\r\n\trender() {\r\n\t\treturn {this.renderContent()};\r\n\t}\r\n}\r\n\r\nconst mapStateToProps = (state: any) => {\r\n\treturn {\r\n\t\tvaluations: Object.values(state.valuations),\r\n\t\tisEditor: state.isEditor,\r\n\t\tselectedValuation: state.selectedValuation,\r\n\t};\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n\tfetchStudyValuation,\r\n\tfetchStudyValuations,\r\n\tdeleteValuation,\r\n\tsetAsCurrentValuation,\r\n\r\n\t// fetchBiomeEcosystems,\r\n\tfetchEcosystemServices,\r\n\tfetchCountries,\r\n\tfetchProtectionStatuses,\r\n\tfetchValuationMethods,\r\n\tfetchContinents,\r\n\tfetchCiceses,\r\n\tfetchSEEAs,\r\n\tfetchBiomeV2EcosystemV2Ecozones,\r\n\tfetchCurrencies,\r\n\tfetchEcosystemConditions,\r\n\tfetchScaleOfStudySites,\r\n})(Valuations);\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Card, Icon, List } from \"semantic-ui-react\";\r\nimport { deleteStudy } from \"../../actions/studyActions\";\r\nimport { Study } from \"../../models/Study\";\r\nimport { useValuations } from \"../../providers/ValuationsProvider\";\r\nimport { initStudy } from \"../../shared/Literals\";\r\nimport LoadingOverlay from \"../../shared/LoadingOverlay\";\r\n\r\ninterface IProps {\r\n\t// deleteStudy: Function;\r\n\tclearStudy: Function;\r\n\t// studies: Study[];\r\n\tonSelectionChanged: Function;\r\n\theaderText: string;\r\n\t// isEditor: boolean;\r\n\t// isLoadingStudies: boolean;\r\n}\r\n\r\nconst StudyList = (props: IProps) => {\r\n\tconst { studies } = useValuations();\r\n\tconst { headerText } = props;\r\n\tconst selectedStudy = (study: Study) => {\r\n\t\tprops.onSelectionChanged(study);\r\n\t};\r\n\r\n\t// const removeStudy = (study: Study) => {\r\n\t// \tprops\r\n\t// \t\t.deleteStudy(study.id)\r\n\t// \t\t.then((res: any) => {\r\n\t// \t\t\tprops.clearStudy(initStudy);\r\n\t// \t\t})\r\n\t// \t\t.catch((error: any) => {});\r\n\t// };\r\n\r\n\tconst renderContent = () => {\r\n\t\t// const { isLoadingStudies } = props;\r\n\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t{/* */}\r\n\t\t\t\t\r\n\t\t\t\t\t{studies.map((s, i) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t selectedStudy(s)}>\r\n\t\t\t\t\t\t\t\t{s.title}\r\n\t\t\t\t\t\t\t\t{`StudyID = ${s.studyId}`}\r\n\t\t\t\t\t\t\t\t{s.isPublished ? (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t))}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\t//\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t

{`${headerText} (${studies.length} studies)`}

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t{renderContent()}\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\n// const mapStateToProps = (state: any) => {\r\n// \treturn {\r\n// \t\tstudies: Object.values(state.studies).sort((a, b) => {\r\n// \t\t\treturn !!a.studyId > !!b.studyId ? 1 : -1; //sort by study in descending order\r\n// \t\t}),\r\n// \t\tisEditor: state.isEditor,\r\n// \t\tisLoadingStudies: state.isLoadingStudies,\r\n// \t};\r\n// };\r\n\r\nexport default StudyList;\r\n// \tconnect(mapStateToProps, {\r\n// \tdeleteStudy,\r\n// })(StudyList);\r\n","import agent from \"../api/agent\";\r\nimport { FreeTextQueryParams } from \"../models/EsvdQueryFilters\";\r\nimport { Study } from \"../models/Study\";\r\nexport const STUDY_CREATE = \"STUDY_CREATE\";\r\nexport const STUDY_EDIT = \"STUDY_EDIT\";\r\nexport const STUDY_DELETE = \"STUDY_DELETE\";\r\nexport const STUDY_FETCH = \"STUDY_FETCH\";\r\nexport const STUDIES_FETCH = \"STUDIES_FETCH\";\r\nexport const USER_STUDIES_FETCH = \"USER_STUDIES_FETCH\";\r\nexport const IS_EDITOR = \"IS_EDITOR\";\r\nexport const IS_LOADING_STUDIES = \"IS_LOADING_STUDIES\";\r\n// export const STUDY_CLEAR_SELECTED = \"STUDY_CLEAR_SELECTED\";\r\n\r\nexport const fetchUserStudies = () => async (dispatch: any) => {\r\n try {\r\n dispatch({\r\n type: IS_LOADING_STUDIES,\r\n payload: true,\r\n });\r\n const response = await agent.Studies.userList();\r\n\r\n dispatch({\r\n type: STUDIES_FETCH,\r\n payload: response,\r\n });\r\n dispatch({\r\n type: IS_LOADING_STUDIES,\r\n payload: false,\r\n });\r\n } catch (error: any) {\r\n throw error.response ? error.response.statusText : error.message;\r\n }\r\n};\r\n\r\nexport const fetchAllStudies =\r\n (filters: FreeTextQueryParams) => async (dispatch: any) => {\r\n try {\r\n dispatch({\r\n type: STUDIES_FETCH,\r\n payload: [],\r\n });\r\n dispatch({\r\n type: IS_LOADING_STUDIES,\r\n payload: true,\r\n });\r\n const response = await agent.Studies.list(filters);\r\n dispatch({\r\n type: STUDIES_FETCH,\r\n payload: response,\r\n });\r\n dispatch({\r\n type: IS_LOADING_STUDIES,\r\n payload: false,\r\n });\r\n } catch (error: any) {\r\n dispatch({\r\n type: IS_LOADING_STUDIES,\r\n payload: false,\r\n });\r\n throw error.response ? error.response.statusText : error.message;\r\n }\r\n };\r\n\r\nexport const resetStudies = () => async (dispatch: any) => {\r\n dispatch({\r\n type: STUDIES_FETCH,\r\n payload: [],\r\n });\r\n};\r\n\r\n// export const clearSelectedStudy = () => async (dispatch: any) => {\r\n// dispatch({\r\n// type: STUDY_CLEAR_SELECTED,\r\n// });\r\n// };\r\n\r\nexport const saveStudy = (study: Study) => async (dispatch: any) => {\r\n try {\r\n if (study.id === null) {\r\n study.id = 0;\r\n }\r\n const response =\r\n !study.id || study.id === 0\r\n ? await agent.Studies.create(study)\r\n : await agent.Studies.update(study);\r\n\r\n dispatch({\r\n type: !study.id || study.id === 0 ? STUDY_CREATE : STUDY_EDIT,\r\n payload: response,\r\n });\r\n return response;\r\n } catch (error: any) {\r\n throw error.response ? error.response.statusText : error.message;\r\n }\r\n};\r\n\r\nexport const deleteStudy = (studyid: number) => async (dispatch: any) => {\r\n try {\r\n await agent.Studies.delete(studyid);\r\n dispatch({\r\n type: STUDY_DELETE,\r\n payload: studyid,\r\n });\r\n } catch (error: any) {\r\n throw error.response ? error.response.statusText : error.message;\r\n }\r\n};\r\n\r\nexport const setIsEditor =\r\n (isEditor: boolean = false) =>\r\n (dispatch: any) => {\r\n dispatch({\r\n type: IS_EDITOR,\r\n payload: isEditor,\r\n });\r\n };\r\n","import { ErrorMessage, Formik } from \"formik\";\r\nimport React, { Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Checkbox, Form, Label, Icon, Card, Grid } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\nimport { saveStudy } from \"../../actions/studyActions\";\r\nimport { studyPublishStatus } from \"../../shared/Literals\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport EsvdInputInline from \"../../shared/InputInline\";\r\nimport { Study } from \"../../models/Study\";\r\nimport NumberInputInline from \"../../shared/InputInlineNumber\";\r\nimport { StudyProps } from \"../../shared/Literals\";\r\nimport { Valuation } from \"../../models/Valuation\";\r\n\r\ninterface IProps {\r\n\tsaveStudy: Function;\r\n\tclearStudy: Function;\r\n\tonStudyUpdated: Function;\r\n\tvaluations: Valuation[];\r\n\tstudy: Study;\r\n\theaderText?: string;\r\n\tisEditor: boolean;\r\n}\r\n\r\nclass SuggestEntry extends React.Component {\r\n\tisCompleteRef: any | null = null;\r\n\tstate = {\r\n\t\tisComplete: false,\r\n\t\thasError: false,\r\n\t\tshowPassword: false,\r\n\t\tisLoading: false,\r\n\t\tsetLoading: (loading: boolean) =>\r\n\t\t\tthis.setState(() => ({ isLoading: loading })),\r\n\t\tisPublished: false,\r\n\t};\r\n\r\n\tclearStudy = () => {\r\n\t\tthis.props.clearStudy();\r\n\t\tthis.setState(() => ({ isComplete: false }));\r\n\t};\r\n\r\n\trenderButtons = (values: Study) => {\r\n\t\tconst { study, valuations, isEditor } = this.props;\r\n\t\tconst { isLoading, isComplete } = this.state;\r\n\t\tif (!isEditor) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tClear\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{study.isPublished ? null : (\r\n\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tSave\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tIs Complete{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t} //\"\"\r\n\t\t\t\t\t\t\t\t\t\t\tonChange={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setState(() => ({ isComplete: !isComplete }));\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tchecked={isComplete}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}{\" \"}\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tvalues.isPublished = !study.isPublished;\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t{study.isPublished\r\n\t\t\t\t\t\t\t\t\t\t? studyPublishStatus.unpublish\r\n\t\t\t\t\t\t\t\t\t\t: isEditor\r\n\t\t\t\t\t\t\t\t\t\t? studyPublishStatus.republish\r\n\t\t\t\t\t\t\t\t\t\t: studyPublishStatus.published}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\t//isEditor: hide all except save. The editor updates is published live.\r\n\t\t\treturn (\r\n\t\t\t\t
\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tSave\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\trenderContent = () => {\r\n\t\tconst { study, isEditor } = this.props;\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t {\r\n\t\t\t\t\t\tthis.handleFormSubmit(values, setErrors);\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t{({\r\n\t\t\t\t\t\tvalues,\r\n\t\t\t\t\t\t// handleChange,\r\n\t\t\t\t\t\thandleSubmit,\r\n\t\t\t\t\t\tisValid,\r\n\t\t\t\t\t\tisSubmitting,\r\n\t\t\t\t\t\tdirty,\r\n\t\t\t\t\t\terrors,\r\n\t\t\t\t\t}) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t{this.renderButtons(values)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t);\r\n\t};\r\n\r\n\thandleFormSubmit: Function = (values: Study, setErrors: Function) => {\r\n\t\tconst { saveStudy, onStudyUpdated } = this.props;\r\n\t\tconst { setLoading } = this.state;\r\n\t\tsetLoading(true);\r\n\t\tsaveStudy(values)\r\n\t\t\t.then((res: any) => {\r\n\t\t\t\tonStudyUpdated(res);\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t})\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst { study, headerText } = this.props;\r\n\t\tconst allFields = \" (All fields required)\";\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t{headerText}\r\n\t\t\t\t\t\t{study.isPublished ? : null}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{allFields}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\r\n\t\t\t\t{this.renderContent()}\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\nconst validationSchema: any = Yup.object({\r\n\t[`${StudyProps.yearOfPublication.name}`]: Yup.number()\r\n\t\t// .nullable(false)\r\n\t\t.required(`${StudyProps.yearOfPublication.label} is required`)\r\n\t\t.positive(\r\n\t\t\t`${StudyProps.yearOfPublication.label} must be a positive number.`\r\n\t\t)\r\n\t\t.min(\r\n\t\t\t1950,\r\n\t\t\t`${StudyProps.yearOfPublication.label} must be grater than or equal to 1950.`\r\n\t\t)\r\n\t\t.test(\r\n\t\t\t\"len\",\r\n\t\t\t`${StudyProps.yearOfPublication.label} is not a valid year.`,\r\n\t\t\t(val: any) => !val || (val && val.toString().length === 4)\r\n\t\t),\r\n\t[`${StudyProps.title.name}`]: Yup.string()\r\n\t\t.trim()\r\n\t\t.required(`${StudyProps.title.label} is required`),\r\n\t[`${StudyProps.authors.name}`]: Yup.string()\r\n\t\t.trim()\r\n\t\t.required(`${StudyProps.authors.label} is required`),\r\n\t[`${StudyProps.reference.name}`]: Yup.string()\r\n\t\t.trim()\r\n\t\t.required(`${StudyProps.reference.label} is required`),\r\n});\r\n\r\nconst mapStateToProps = (state: any) => {\r\n\treturn {\r\n\t\tvaluations: Object.values(state.valuations),\r\n\t\tisEditor: state.isEditor,\r\n\t};\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n\tsaveStudy,\r\n})(SuggestEntry);\r\n","import { Component } from \"react\";\r\nimport { Card, Form, Input, Label } from \"semantic-ui-react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { fetchAllStudies, resetStudies } from \"../../actions/studyActions\";\r\n\r\nimport { ErrorMessage, Formik } from \"formik\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport { initStudy } from \"../../shared/Literals\";\r\nimport { LoadingButton } from \"../../shared/LoadingOverlay\";\r\n\r\ninterface IProps {\r\n\tfetchAllStudies: Function;\r\n\tresetStudies: Function;\r\n\tresetSearch: Function;\r\n}\r\n\r\ninterface IState {\r\n\tfreeText: string | \"\";\r\n\tisLoading: boolean;\r\n}\r\n\r\nclass StudyFilterPanel extends Component {\r\n\tstate: IState;\r\n\r\n\tconstructor(props: IProps) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tfreeText: \"\",\r\n\t\t\tisLoading: false,\r\n\t\t};\r\n\t}\r\n\r\n\tsetFreeText = (e: any) => {\r\n\t\tthis.setState(() => ({ freeText: e.target.value }));\r\n\t};\r\n\r\n\tclearFilter = () => {\r\n\t\tthis.setState(() => ({ freeText: null }));\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst { isLoading, freeText } = this.state;\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t

Search Studies

\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tthis.handleFormSubmit(values, setErrors);\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t{({ handleSubmit, isValid, dirty, isSubmitting, errors }) => (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t this.setFreeText(val)}\r\n\t\t\t\t\t\t\t\t\t\tname={\"freeText\"}\r\n\t\t\t\t\t\t\t\t\t\tplaceholder={\r\n\t\t\t\t\t\t\t\t\t\t\t'Free Text Search - Use \"\" for string matching'\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tvalue={freeText}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\thandleFormSubmit(values: { error: null }, setErrors: Function): void {\r\n\t\tconst { freeText } = this.state;\r\n\t\tconst { fetchAllStudies, resetSearch } = this.props;\r\n\r\n\t\t//reset selected study when button is clicked for results of the filter\r\n\t\tresetSearch && resetSearch(initStudy);\r\n\t\tresetStudies();\r\n\r\n\t\tthis.setState(() => ({ isLoading: true }));\r\n\t\tfetchAllStudies({ freeText })\r\n\t\t\t.then((res: any) => {\r\n\t\t\t\tthis.setState(() => ({ isLoading: false }));\r\n\t\t\t})\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t\t\tthis.setState(() => ({ isLoading: false }));\r\n\t\t\t});\r\n\t}\r\n}\r\n\r\nexport default connect(null, {\r\n\tfetchAllStudies,\r\n\tresetStudies,\r\n})(StudyFilterPanel);\r\n","import React from \"react\";\r\nimport { Card } from \"semantic-ui-react\";\r\n\r\nconst EditorReadMe = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t

Read Me

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t
  • Use this functionality to edit a published study.
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tUse the free text search to search a study (you can enter a StudyID\r\n\t\t\t\t\t\ttoo).\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • Select your study from the result list.
  • \r\n\t\t\t\t\t
  • Edit Study or Valuations details in the cards to the left.
  • \r\n\t\t\t\t\t
  • Edits are immediately visible upon Save.
  • \r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default EditorReadMe;\r\n","import { Component } from \"react\";\r\nimport { Grid, Container } from \"semantic-ui-react\";\r\nimport { connect } from \"react-redux\";\r\nimport { actions, initStudy, resources } from \"../../shared/Literals\";\r\nimport { Study } from \"../../models/Study\";\r\nimport Valuations from \"../studies/Valuations\";\r\nimport StudyList from \"../studies/StudyList\";\r\nimport StudyEntry from \"../studies/StudyEntry\";\r\nimport StudyFilterPanel from \"./StudyFilterPanel\";\r\nimport { resetStudies, setIsEditor } from \"../../actions/studyActions\";\r\nimport Can from \"../../accessControls/Can\";\r\nimport EditorReadMe from \"./EditorReadMe\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\ninterface IProps {\r\n resetStudies: Function;\r\n setIsEditor: Function;\r\n}\r\n\r\ninterface IState {\r\n selectedStudy: Study;\r\n}\r\nclass EditorStudyBoard extends Component {\r\n state: IState = { selectedStudy: initStudy };\r\n\r\n componentDidMount() {\r\n this.props.setIsEditor(true);\r\n this.props.resetStudies();\r\n this.setSelectedStudy(initStudy);\r\n }\r\n\r\n setSelectedStudy = (study: Study) => {\r\n this.setState(() => ({ selectedStudy: study }));\r\n };\r\n\r\n renderContent = () => {\r\n const { selectedStudy } = this.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.setSelectedStudy(study)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setSelectedStudy(study)\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n render() {\r\n return (\r\n this.renderContent()}\r\n no={() => }\r\n />\r\n ); //{this.renderContent()};\r\n }\r\n}\r\n\r\nexport default connect(null, { resetStudies, setIsEditor })(EditorStudyBoard);\r\n","import React, { useEffect } from \"react\";\r\nimport { Container, Grid } from \"semantic-ui-react\";\r\n\r\nconst LoginsContainer = ({ children }: { children: any }) => {\r\n\tuseEffect(() => {\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
{children}
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n\t// }\r\n};\r\n\r\nexport default LoginsContainer;\r\n","import React, { Fragment, useEffect } from \"react\";\r\nimport { Card, Label } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\nimport WelcomeHeader from \"../../shared/WelcomeHeader\";\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport { useAuth } from \"../../providers/AuthProvider\";\r\nimport LoginsContainer from \"./LoginsContainer\";\r\n\r\ninterface IProps {\r\n\tconfirmemail: Function;\r\n\t// user: User;\r\n\tisSesetLinkSent: boolean;\r\n\tlocation: any | null;\r\n}\r\n\r\nconst ConfirmEmail = (props: IProps) => {\r\n\tconst { confirmemail, setToken } = useAuth();\r\n\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [isConfirmed, setIsConfirmed] = React.useState(false);\r\n\tconst [error, setError] = React.useState(null);\r\n\tconst [isError, setIsError] = React.useState(false);\r\n\tconst [subheadText, setsubheadText] = React.useState(\"Confirm Email\");\r\n\tconst [queryString] = React.useState(\r\n\t\tObject.fromEntries(new URLSearchParams(props.location.search))\r\n\t);\r\n\r\n\tconst confirmationSent = () => {\r\n\t\tsetIsConfirmed(!isConfirmed);\r\n\t\tsetsubheadText(\"Reset successful.\");\r\n\t};\r\n\r\n\tconst handleFormSubmit = () => {\r\n\t\tsetIsLoading(true);\r\n\r\n\t\t// confirmemail({ username: queryString.username, code: 65333 })\r\n\t\tconfirmemail(queryString)\r\n\t\t\t.then((res: any) => {\r\n\t\t\t\tconfirmationSent();\r\n\t\t\t\t// setLoading(false);\r\n\t\t\t})\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\t// setErrors({ error: ErrorHandler(error) });\r\n\t\t\t\tsetIsError(true);\r\n\t\t\t\tsetError(ErrorHandler(error));\r\n\t\t\t\t// this.setState(() => ({ isError: true, error: ErrorHandler(error) }));\r\n\t\t\t\t// setLoading(false);\r\n\t\t\t});\r\n\t\tsetIsLoading(false);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\thandleFormSubmit();\r\n\t}, []);\r\n\r\n\tconst renderContent = () => {\r\n\t\tif (queryString.username && queryString.code) {\r\n\t\t\tsetToken();\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t

Welcome to the ESVD

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{isConfirmed && !isError ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tYour confirmation was successful.\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tPlease click here to login.\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t) : isError && error ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t\t//a login user shouldn't see the login page.\r\n\t\t//Therefore is a logged user access the login route, go to home\r\n\t\t// history.push(\"/\");\r\n\t\telse return ;\r\n\t};\r\n\r\n\treturn {renderContent()};\r\n\t// }\r\n};\r\n\r\n// const validationSchema = Yup.object({\r\n// \t// email: Yup.string().required(\"Email is required\"),\r\n// });\r\n\r\n// const mapStateToProps = (state: any) => {\r\n// \treturn {\r\n// \t\tuser: state.user,\r\n// \t};\r\n// };\r\n\r\nexport default ConfirmEmail;\r\n// \tconnect(null, {\r\n// \tconfirmemail,\r\n// })(ConfirmEmail);\r\n","import { useField } from \"formik\";\r\nimport React, { Fragment } from \"react\";\r\nimport { Form, Icon, Input, Label, SemanticICONS } from \"semantic-ui-react\";\r\n\r\ninterface Props {\r\n\tname: string;\r\n\tplaceholder?: string;\r\n\ticon?: SemanticICONS;\r\n\tlabel?: string;\r\n\trightIcon?: any;\r\n\tfluid?: boolean;\r\n\ttype?: string;\r\n\tvalue?: string;\r\n\tclassName?: string;\r\n\taccept?: string;\r\n\tautocomplete?: boolean;\r\n\tdisabled?: boolean;\r\n\tautoFocus?: boolean;\r\n}\r\n\r\nconst EsvdInput = (props: Props) => {\r\n\tconst [field, meta] = useField(props.name);\r\n\tconst size = \"mini\";\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{props.icon && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{meta.touched && meta.error ? (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{meta.error}\r\n\t\t\t\t\t\r\n\t\t\t\t) : null}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default EsvdInput;\r\n","import { ErrorMessage, Form, Formik } from \"formik\";\r\nimport React, { Fragment } from \"react\";\r\nimport { Card, Label } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\nimport EsvdInput from \"../../shared/Input\";\r\nimport WelcomeHeader from \"../../shared/WelcomeHeader\";\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport { EMAIL_REGEX } from \"../../shared/Literals\";\r\nimport { useAuth } from \"../../providers/AuthProvider\";\r\nimport LoginsContainer from \"./LoginsContainer\";\r\n\r\ninterface IProps {\r\n\tforgotpassword: Function;\r\n\tisSesetLinkSent: boolean;\r\n}\r\n\r\nconst ForgotPassword = (props: IProps) => {\r\n\tconst { user, forgotpassword, setToken } = useAuth();\r\n\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [isSent, setisSent] = React.useState(false);\r\n\r\n\tconst resetLinkSent = () => setisSent(!isSent);\r\n\r\n\tconst handleFormSubmit = (\r\n\t\tvalues: { username: string; password: string; error: null },\r\n\t\tsetErrors: Function\r\n\t) => {\r\n\t\t// const { forgotpassword } = this.props;\r\n\t\t// const { resetLinkSent, setLoading } = this.state;\r\n\t\tsetIsLoading(true);\r\n\t\tforgotpassword(values)\r\n\t\t\t.then((res: any) => {\r\n\t\t\t\tresetLinkSent();\r\n\t\t\t})\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t\t\t// setIsLoading(false);\r\n\t\t\t});\r\n\t\tsetIsLoading(false);\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\tif (!user) {\r\n\t\t\tsetToken();\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t

Welcome to the ESVD

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{isSent ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tAn email has been sent to your inbox.
\r\n\t\t\t\t\t\t\tPlease check your inbox to reset your password.\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tIf you don't see an email, please check your spam folder.\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tPassword Reset\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t{({ handleSubmit, isValid, isSubmitting, dirty, errors }) => (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tSend Password Reset Link\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tRemember you password? Login\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else return ;\r\n\t};\r\n\r\n\t// render() {\r\n\treturn {renderContent()};\r\n\t// }\r\n};\r\n\r\nconst validationSchema = Yup.object({\r\n\temail: Yup.string()\r\n\t\t.trim()\r\n\t\t.matches(EMAIL_REGEX.exp, EMAIL_REGEX.msg)\r\n\t\t.required(\"Email is required\"),\r\n});\r\n\r\nexport default ForgotPassword;\r\n","import { ErrorMessage, Form, Formik } from \"formik\";\r\nimport React, { useEffect } from \"react\";\r\nimport { Card, Grid, Label } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\nimport EsvdInput from \"../../shared/Input\";\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport { useAuth } from \"../../providers/AuthProvider\";\r\nimport LoginsContainer from \"./LoginsContainer\";\r\nimport { UserLoginMode } from \"../../models/user\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\n\r\ninterface IProps {\r\n\tsetUserLoginMode: Function;\r\n}\r\n\r\nconst UsernameOrEmail = (props: IProps) => {\r\n\tconst { user, verifyUsername, setToken } = useAuth();\r\n\tconst { setUserLoginMode } = props;\r\n\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [isSent, setisSent] = React.useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\tconst handleFormSubmit = async (\r\n\t\tvalues: { usernameOrEmail: string; error: null },\r\n\t\tsetErrors: Function\r\n\t) => {\r\n\t\tsetIsLoading(true);\r\n\t\ttry {\r\n\t\t\t// if (!userLoginMode) {\r\n\t\t\tconst um: UserLoginMode = await verifyUsername(values.usernameOrEmail);\r\n\t\t\tsetUserLoginMode({ ...um, usernameOrEmail: values.usernameOrEmail });\r\n\t\t\t// if (um) {\r\n\t\t\t// \tsetUserLoginMode(um);\r\n\t\t\t// \tsetIsLoading(false);\r\n\t\t\t// \tif (um.userExists) {\r\n\t\t\t// \t\tif (um.isUsername) {\r\n\t\t\t// \t\t\t//show password form\r\n\t\t\t// \t\t} else {\r\n\t\t\t// \t\t\t//generate OTP and show code form\r\n\t\t\t// \t\t}\r\n\t\t\t// \t} else {\r\n\t\t\t// \t\t//report failure or show sign up page\r\n\t\t\t// \t}\r\n\t\t\t// }\r\n\t\t\t// }\r\n\t\t} catch (error) {\r\n\t\t\tsetErrors({\r\n\t\t\t\terror: ErrorHandler(error),\r\n\t\t\t});\r\n\t\t\tsetIsLoading(false);\r\n\t\t} finally {\r\n\t\t\tsetIsLoading(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\tif (!user) {\r\n\t\t\tsetToken();\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t

Welcome to the ESVD

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{isSent ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tAn email has been sent to your inbox.
\r\n\t\t\t\t\t\t\tPlease check your inbox to reset your password.\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tIf you don't see an email, please check your spam folder.\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tLogin below if you already have an account. If you do not have\r\n\t\t\t\t\t\t\t\t\tan account yet, please Sign Up first by clicking the Sign Up\r\n\t\t\t\t\t\t\t\t\tbutton below and create your account.\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t{({ handleSubmit, isValid, isSubmitting, dirty, errors }) => (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSign Up\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tNext\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else return ;\r\n\t};\r\n\r\n\t// render() {\r\n\treturn {renderContent()};\r\n\t// }\r\n};\r\n\r\nconst validationSchema = Yup.object({\r\n\tusernameOrEmail: Yup.string()\r\n\t\t.trim()\r\n\t\t.required(\"Username or Email is required\"),\r\n});\r\n\r\nexport default UsernameOrEmail;\r\n","import React, { useEffect } from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { useAuth } from \"../../providers/AuthProvider\";\r\n\r\nconst Logout = () => {\r\n\tconst { logout } = useAuth();\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {\r\n\t\t\tlogout();\r\n\t\t};\r\n\t}, []);\r\n\treturn ;\r\n};\r\n\r\nconst ResetState = () => {\r\n\treturn ;\r\n};\r\n\r\nexport default ResetState;\r\n","import React from \"react\";\r\nimport Select, { components } from \"react-select\";\r\nimport { Form, Grid } from \"semantic-ui-react\";\r\n\r\n//https://codesandbox.io/s/53jomww8yn?file=/src/index.js:650-788\r\nconst Option = (props: any) => {\r\n\tconst { data, morePadding } = props;\r\n\treturn (\r\n\t\t\r\n\t\t\t{/*

{props.data.label}

\r\n
{props.data.subLabel}
*/}\r\n\t\t\t{data.code && !data.hideCode ? (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{data.isDisabled ? \"\" : data.code}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{`${\r\n\t\t\t\t\t\t\t\tdata.isDisabled\r\n\t\t\t\t\t\t\t\t\t? \"--\".repeat(data.sortOrder - 1)\r\n\t\t\t\t\t\t\t\t\t: \" \".repeat(data.sortOrder - 1)\r\n\t\t\t\t\t\t\t}${data.label}`}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t {data.label}\r\n\t\t\t)}\r\n\t\t
\r\n\t);\r\n};\r\n\r\nconst colourStyles = {\r\n\t// ValueContainer\r\n\tvalueContainer: (base: any) => ({\r\n\t\t...base,\r\n\t\tfontSize: \"0.87rem\",\r\n\t}),\r\n\tcontrol: (base: any) => ({\r\n\t\t...base,\r\n\t\tfontSize: \"0.87rem\",\r\n\t}),\r\n\toption: (\r\n\t\tbase: any,\r\n\t\t{\r\n\t\t\tisDisabled,\r\n\t\t}: {\r\n\t\t\tdata: any;\r\n\t\t\tisDisabled: boolean;\r\n\t\t\tisFocused: boolean;\r\n\t\t\tisSelected: boolean;\r\n\t\t}\r\n\t) => {\r\n\t\t// const color = chroma(data.color);\r\n\t\treturn {\r\n\t\t\t...base,\r\n\t\t\tfontSize: \"0.87rem\",\r\n\t\t\tcursor: isDisabled ? \"not-allowed\" : \"default\",\r\n\t\t\tpadding: \"0.5px\",\r\n\t\t};\r\n\t},\r\n\tmultiValue: (styles: any, { data }: { data: any }) => {\r\n\t\t// const color = chroma(data.color);\r\n\t\treturn {\r\n\t\t\t...styles,\r\n\t\t\t// lineHeight: \"0.5rem\",\r\n\t\t};\r\n\t},\r\n\tmultiValueLabel: (styles: any, { data }: { data: any }) => ({\r\n\t\t...styles,\r\n\t}),\r\n\tmultiValueRemove: (styles: any, { data }: { data: any }) => ({\r\n\t\t...styles,\r\n\t}),\r\n};\r\n\r\n// export default SelectDsropdown;\r\n\r\nexport const SelectDropdown = (props: any) => {\r\n\tconst {\r\n\t\tfield: {\r\n\t\t\t// provided by Formik Field\r\n\t\t\tname,\r\n\t\t\t// value,\r\n\t\t\t// onChange,\r\n\t\t},\r\n\t\tform: {\r\n\t\t\t// also provided by Formik Field\r\n\t\t\tsetFieldValue,\r\n\t\t},\r\n\t\tlabel, // our own label prop\r\n\t\toptions, //ooptions to use\r\n\t\tvalue,\r\n\t\tplaceholder,\r\n\t\tgetRef,\r\n\t\tisMulti,\r\n\t\tonChange,\r\n\t\toptionsTransform, //used to transform the options into a format for a particular dropdown, if available\r\n\t} = props;\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{MySelect(\r\n\t\t\t\t\t\t\tgetRef,\r\n\t\t\t\t\t\t\tisMulti,\r\n\t\t\t\t\t\t\tplaceholder,\r\n\t\t\t\t\t\t\toptionsTransform,\r\n\t\t\t\t\t\t\toptions,\r\n\t\t\t\t\t\t\tonChange,\r\n\t\t\t\t\t\t\tsetFieldValue,\r\n\t\t\t\t\t\t\tname,\r\n\t\t\t\t\t\t\tvalue\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nfunction MySelect(\r\n\tgetRef: any,\r\n\tisMulti: any,\r\n\tplaceholder: any,\r\n\toptionsTransform: any,\r\n\toptions: any,\r\n\tonChange: any,\r\n\tsetFieldValue: any,\r\n\tname: any,\r\n\tvalue: any\r\n) {\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tgetRef && getRef(ref);\r\n\t\t\t}}\r\n\t\t\t// {...props.field}\r\n\t\t\tcloseMenuOnSelect={!isMulti || false}\r\n\t\t\tplaceholder={placeholder}\r\n\t\t\tisMulti={isMulti || false}\r\n\t\t\tisClearable={false}\r\n\t\t\toptions={optionsTransform ? optionsTransform(options) : options}\r\n\t\t\tcomponents={{ Option }}\r\n\t\t\tstyles={colourStyles}\r\n\t\t\t// onChange={onChange}\r\n\t\t\tonChange={(selected) => {\r\n\t\t\t\tlet sel = Array.isArray(selected)\r\n\t\t\t\t\t? selected.map((a: any) => a.value)\r\n\t\t\t\t\t: selected?.value;\r\n\t\t\t\tonChange && onChange(sel);\r\n\t\t\t\tsetFieldValue(name, sel);\r\n\t\t\t}}\r\n\t\t\tdefaultValue={options.filter((f: any) => {\r\n\t\t\t\tif (Array.isArray(value)) {\r\n\t\t\t\t\treturn value.includes(f.value);\r\n\t\t\t\t}\r\n\t\t\t\treturn value === f.value;\r\n\t\t\t})}\r\n\t\t\tvalue={options.filter((f: any) => {\r\n\t\t\t\tif (Array.isArray(value)) {\r\n\t\t\t\t\treturn value.includes(f.value);\r\n\t\t\t\t}\r\n\t\t\t\treturn value === f.value;\r\n\t\t\t})}\r\n\t\t/>\r\n\t);\r\n}\r\n\r\nexport const MyDropdown = (props: any) => {\r\n\tconst {\r\n\t\tfield: {\r\n\t\t\t// provided by Formik Field\r\n\t\t\tname,\r\n\t\t\t// value,\r\n\t\t\t// onChange,\r\n\t\t},\r\n\t\tform: {\r\n\t\t\t// also provided by Formik Field\r\n\t\t\tsetFieldValue,\r\n\t\t},\r\n\t\tlabel, // our own label prop\r\n\t\toptions, //ooptions to use\r\n\t\tvalue,\r\n\t\tplaceholder,\r\n\t\tgetRef,\r\n\t\tisMulti,\r\n\t\tonChange,\r\n\t\toptionsTransform, //used to transform the options into a format for a particular dropdown, if available\r\n\t} = props;\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{MySelect(\r\n\t\t\t\t\tgetRef,\r\n\t\t\t\t\tisMulti,\r\n\t\t\t\t\tplaceholder,\r\n\t\t\t\t\toptionsTransform,\r\n\t\t\t\t\toptions,\r\n\t\t\t\t\tonChange,\r\n\t\t\t\t\tsetFieldValue,\r\n\t\t\t\t\tname,\r\n\t\t\t\t\tvalue\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n","import { ErrorMessage, Field, Form, Formik } from \"formik\";\r\nimport React, { Fragment } from \"react\";\r\nimport { Card, Container, Grid, Label } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\nimport EsvdInput from \"../../shared/Input\";\r\nimport WelcomeHeader from \"../../shared/WelcomeHeader\";\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport {\r\n\tEMAIL_REGEX,\r\n\tPASSWORD,\r\n\tpurposeOfAccessList,\r\n\tsectorsList,\r\n} from \"../../shared/Literals\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport { MyDropdown } from \"../../shared/SingleSelect\";\r\nimport { useAuth } from \"../../providers/AuthProvider\";\r\nimport LoginsContainer from \"./LoginsContainer\";\r\n\r\nconst Signup = () => {\r\n\tconst { user, setToken, signup } = useAuth();\r\n\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [isSigned, setisSigned] = React.useState(false);\r\n\tconst [subheadText, setsubheadText] = React.useState(\r\n\t\t\"Create an account (All fields required)\"\r\n\t);\r\n\tconst [selectedSector, setselectedSector] = React.useState(\"\");\r\n\tconst [selectedPurpose, setselectedPurpose] = React.useState(\"\");\r\n\tconst [sectorOtherShow, setsectorOtherShow] = React.useState(false);\r\n\tconst [purposeOtherShow, setpurposeOtherShow] =\r\n\t\tReact.useState(false);\r\n\r\n\tconst signupDone = () => {\r\n\t\tsetisSigned(!isSigned);\r\n\t\tsetsubheadText(\"Sign up successful.\");\r\n\t};\r\n\r\n\tconst setSector = (value: string) => {\r\n\t\tsetselectedSector(value);\r\n\t\tsetsectorOtherShow(value.toLowerCase() === \"other\");\r\n\t};\r\n\r\n\tconst setPurposeOfAccess = (value: string) => {\r\n\t\tsetselectedPurpose(value);\r\n\t\tsetpurposeOtherShow(value.toLowerCase() === \"other\");\r\n\t};\r\n\r\n\tconst handleFormSubmit = (\r\n\t\tvalues: {\r\n\t\t\tdisplayName: string;\r\n\t\t\torganization: string;\r\n\t\t\tsector: string;\r\n\t\t\tsectorOther: string;\r\n\t\t\tpurposeOfAccess: string;\r\n\t\t\tpurposeOfAccessOther: string;\r\n\t\t\temail: string;\r\n\t\t\tusername: string;\r\n\t\t\tpassword: string;\r\n\t\t\terror: null;\r\n\t\t},\r\n\t\tsetErrors: Function\r\n\t) => {\r\n\t\tconst { sector, purposeOfAccess } = values;\r\n\t\tif (sector && sector.toLowerCase() !== \"other\") {\r\n\t\t\tvalues.sectorOther = \"\";\r\n\t\t}\r\n\t\tif (purposeOfAccess && purposeOfAccess.toLowerCase() !== \"other\") {\r\n\t\t\tvalues.purposeOfAccessOther = \"\";\r\n\t\t}\r\n\t\tsetIsLoading(true);\r\n\t\tsignup(values)\r\n\t\t\t.then((res: any) => {\r\n\t\t\t\tsignupDone();\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t})\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\tif (!user) {\r\n\t\t\tsetToken();\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t

Welcome to the ESVD

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{isSigned ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tAn email has been sent to your inbox.
\r\n\t\t\t\t\t\t\tPlease check your inbox to confirm your email within 24 hours.\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tIf you do not see an email, please check your spam folder.\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tIf you do not confirm your email within 24 hours you have to\r\n\t\t\t\t\t\t\tregister again.\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{subheadText}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t{({ handleSubmit, isValid, isSubmitting, dirty, errors }) => (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{sectorOtherShow ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{purposeOtherShow ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tSign Up\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{/* Already have an account?{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tLogin */}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{/* */}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\tAlready have an account? Login\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{/*
*/}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t//a login user shouldn't see the signup page.\r\n\t\t//Therefore is a logged user access the signup route, go to home\r\n\t\t// history.push(\"/\");\r\n\t\t// return null;\r\n\t\telse return ;\r\n\t};\r\n\r\n\t// render() {\r\n\treturn {renderContent()};\r\n\t// }\r\n};\r\n\r\nconst validationSchema = Yup.object({\r\n\tdisplayName: Yup.string().required(\"Display name is required\"),\r\n\torganization: Yup.string().required(\"Organization is required\"),\r\n\tsector: Yup.string().required(\"Sector is required\"),\r\n\tsectorOther: Yup.string().when([\"sector\"], {\r\n\t\tis: (sector: string) => sector && sector.toLowerCase() === \"other\",\r\n\t\tthen: Yup.string().required(\"Sector description is required\"),\r\n\t}),\r\n\tpurposeOfAccess: Yup.string().required(\"Purpose of access is required\"),\r\n\tpurposeOfAccessOther: Yup.string().when([\"purposeOfAccess\"], {\r\n\t\tis: (purposeOfAccess: string) =>\r\n\t\t\tpurposeOfAccess && purposeOfAccess.toLowerCase() === \"other\",\r\n\t\tthen: Yup.string().required(\"Purpose description is required\"),\r\n\t}),\r\n\tusername: Yup.string().required(\"Username is required\"),\r\n\temail: Yup.string()\r\n\t\t.trim()\r\n\t\t.matches(EMAIL_REGEX.exp, EMAIL_REGEX.msg)\r\n\t\t.required(\"Email is required\"),\r\n\tpassword: Yup.string()\r\n\t\t.trim()\r\n\t\t.min(PASSWORD.min_len, PASSWORD.msg)\r\n\t\t.required(\"Password is required\"),\r\n\tconfirmpassword: Yup.string()\r\n\t\t.oneOf([Yup.ref(\"password\"), null], \"Passwords must match\")\r\n\t\t.required(\"Confirm Password is required\"),\r\n});\r\n\r\n// const mapStateToProps = (state: any) => {\r\n// \treturn { user: state.user };\r\n// };\r\n\r\nexport default Signup;\r\n// connect(mapStateToProps, {\r\n// \tsignup,\r\n// })(Signup);\r\n","import * as React from \"react\";\r\nimport { Card } from \"semantic-ui-react\";\r\nimport agent from \"../../api/agent\";\r\nimport { NumberFormat } from \"../../EsvdFunctions\";\r\n\r\nconst EcosystemValuationDB = () => {\r\n\tconst [esvdTotalCount, setEsvdTotalcount] = React.useState(0);\r\n\tReact.useEffect(() => {\r\n\t\t//get info about the last upload\r\n\t\t(async () => {\r\n\t\t\tvar totalesvdCount: Number = await agent.Esvds.esvdTotalCount();\r\n\t\t\tsetEsvdTotalcount(totalesvdCount);\r\n\t\t})();\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\tEcosystem Services Valuation Database (ESVD)\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\tThe continued loss of ecosystems and biodiversity is endangering the\r\n\t\t\t\t\tprosperity of current and future generations (Dasgupta, 2021). To make\r\n\t\t\t\t\tbetter informed decisions about the trade-offs involved in ecosystem\r\n\t\t\t\t\tmanagement, land-use change, or any activity affecting ecosystems and\r\n\t\t\t\t\tbiodiversity, we need better information about the full importance of\r\n\t\t\t\t\tecosystems to our wellbeing. The Ecosystem Services Valuation Database\r\n\t\t\t\t\t(ESVD) has been developed with the long-term goal of providing robust\r\n\t\t\t\t\tand easily accessible information on the economic benefits of\r\n\t\t\t\t\tecosystems and biodiversity, and the costs of their loss, to support\r\n\t\t\t\t\tdecision making regarding nature conservation, ecosystem restoration\r\n\t\t\t\t\tand sustainable land management.\r\n\t\t\t\t

{\" \"}\r\n\t\t\t\t

\r\n\t\t\t\t\t{\" \"}\r\n\t\t\t\t\tThe focus of the ESVD is to gather information on economic welfare\r\n\t\t\t\t\tvalues related to ecosystem services measured in monetary units. By\r\n\t\t\t\t\tcommunicating such values in monetary units, we provide recognisable\r\n\t\t\t\t\tinformation that can be used to internalise the importance of Nature\r\n\t\t\t\t\tin decision making.\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tThe ESVD currently contains {NumberFormat(esvdTotalCount, 0)} value\r\n\t\t\t\t\trecords from over 1100 studies distributed across all biomes,\r\n\t\t\t\t\tecosystem services and geographic regions. Our repository of valuation\r\n\t\t\t\t\tstudies contains over 2000 studies and the number is growing\r\n\t\t\t\t\tcontinuously so the number of value records in the ESVD will increase\r\n\t\t\t\t\tover time.\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tDo you want to read more about the ESVD or to collaborate with us?\r\n\t\t\t\t\tPlease{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tvisit our info website\r\n\t\t\t\t\t{\" \"}\r\n\t\t\t\t\tfor more information on the background, applications and latest\r\n\t\t\t\t\tprojects, and contact details.\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default EcosystemValuationDB;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport agent from \"../api/agent\";\r\nimport { getMonthNameShort } from \"../EsvdFunctions\";\r\nimport { CurrentReferenceInfo, ReferenceInfo } from \"../models/ReferenceInfo\";\r\n\r\ninterface IValue {\r\n\treferenceInfos: ReferenceInfo[];\r\n\tsaveReferenceInfo: Function;\r\n\t// getCurrentReferenceInfo: Function;\r\n\tgetCurrentVersionInfo: Function;\r\n\tcurrentInfo: CurrentReferenceInfo | null;\r\n}\r\n\r\nconst ReferenceInfoContext = React.createContext(null);\r\n\r\n// The ReferenceInfoProvider is responsible for ReferenceInfo management\r\nconst ReferenceInfoProvider = ({ children }: { children: any }) => {\r\n\tconst [referenceInfos] = useState([]);\r\n\r\n\tconst [currentInfo, setCurrentInfo] =\r\n\t\tReact.useState(null);\r\n\r\n\tconst getCurrentVersionInfo = async () => {\r\n\t\ttry {\r\n\t\t\tconst response = await agent.ReferenceInfos.details();\r\n\t\t\tconst { month, year, version, subversion } = response;\r\n\t\t\tif (month === 0) {\r\n\t\t\t\tsetCurrentInfo({ version: \"\", referenceText: \"\" });\r\n\t\t\t} else {\r\n\t\t\t\tconst ver: CurrentReferenceInfo = {\r\n\t\t\t\t\tversion:\r\n\t\t\t\t\t\tmonth !== null && month !== undefined\r\n\t\t\t\t\t\t\t? `${getMonthNameShort(\r\n\t\t\t\t\t\t\t\t\tmonth\r\n\t\t\t\t\t\t\t ).toUpperCase()}${year}V${version}.${subversion}`\r\n\t\t\t\t\t\t\t: \"\",\r\n\t\t\t\t\treferenceText: response.referenceText,\r\n\t\t\t\t};\r\n\t\t\t\tsetCurrentInfo(ver);\r\n\t\t\t}\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error; //.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tgetCurrentVersionInfo().catch((err) => null);\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\tconst saveReferenceInfo = async (referenceInfo: ReferenceInfo) => {\r\n\t\ttry {\r\n\t\t\tif (referenceInfo.id === null) {\r\n\t\t\t\treferenceInfo.id = 0;\r\n\t\t\t}\r\n\t\t\tconst response = await agent.ReferenceInfos.create(referenceInfo);\r\n\r\n\t\t\treturn response;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useReferenceInfo = () => {\r\n\tconst referenceInfo = useContext(ReferenceInfoContext);\r\n\tif (referenceInfo == null) {\r\n\t\tthrow new Error(\r\n\t\t\t\"useReferenceInfo() called outside of a referenceInfo hook?\"\r\n\t\t);\r\n\t}\r\n\treturn referenceInfo;\r\n};\r\n\r\nexport { ReferenceInfoProvider, useReferenceInfo };\r\n","import { Component } from \"react\";\r\nimport { Card } from \"semantic-ui-react\";\r\nimport { useReferenceInfo } from \"../../providers/ReferenceInfoProvider\";\r\n\r\nconst TermsOfUse = () => {\r\n\tconst { currentInfo } = useReferenceInfo();\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t

Terms of Use

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\tWe allow use for non-commercial, research and educational purposes\r\n\t\t\t\t\taimed at supporting more sustainable ecosystem management and policy\r\n\t\t\t\t\tmaking.\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tReports using the ESVD should be made publicly available and use\r\n\t\t\t\t\tcorrect citation: {currentInfo?.referenceText}\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tIn no event will the Foundation for Sustainable Development, their\r\n\t\t\t\t\taffiliates, agents or collaborators be liable for any damages;\r\n\t\t\t\t\tincluding without limitation, direct or indirect, special or\r\n\t\t\t\t\tincidental, moral or consequential, arising in connection with your\r\n\t\t\t\t\tuse of the ESVD, its information or derivatives of the ESVD.\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default TermsOfUse;\r\n","import React from \"react\";\r\n// import { Link } from \"react-router-dom\";\r\nimport { Card } from \"semantic-ui-react\";\r\nimport { COMPANY_EMAIL, resources } from \"../../shared/Literals\";\r\n\r\n// interface IProps {\r\n// esvds: { esvds: Esvd[]; headerArray: any[]; bodyArray: any[] };\r\n// }\r\nconst AboutESVD = () => {\r\n\t// render() {\r\n\t// const { esvds } = this.props;\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t

About the ESVD & Registration

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\tTo use the ESVD, you can{\" \"}\r\n\t\t\t\t\t{/* register for a free account. */}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tregister for a free account\r\n\t\t\t\t\t\r\n\t\t\t\t\t. By signing up, you are indicating agreement with the Terms of Use\r\n\t\t\t\t\tspecified in the card below.\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tYou can search the ESVD in the {`“${resources.esvd.name}”`} page using\r\n\t\t\t\t\ta set of drop-down lists and/or free text search. Here you can view\r\n\t\t\t\t\tyour search results, generate summary statistics, and download data.\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tThe valuations from your search query can be toggled between table\r\n\t\t\t\t\tformat and a map. The table provides different relevant variables on\r\n\t\t\t\t\tecosystem type, ecosystem services, standardized values,\r\n\t\t\t\t\tbeneficiaries, valuation methods, location information and\r\n\t\t\t\t\tbibliographic information. Additionally, it highlights whether or not\r\n\t\t\t\t\ta valuation has been checked by an external reviewer.\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tThe map shows the valuations based on their point location\r\n\t\t\t\t\tcoordinates. Hovering over a valuation pointer on the map shows basic\r\n\t\t\t\t\tinformation. Clicking on a pointer opens a window to show more\r\n\t\t\t\t\tinformation on the ecosystems and ecosystem services of your\r\n\t\t\t\t\tvaluation(s) of interest. Please note that a map pointer can contain\r\n\t\t\t\t\tmultiple valuations from multiple studies and that it can reflect a\r\n\t\t\t\t\tsmall or large study area.\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tThe values included in the ESVD are obtained from reports and academic\r\n\t\t\t\t\tpublications. The study sites for which values have been estimated can\r\n\t\t\t\t\tbe a single ecosystem type or contain multiple different types of\r\n\t\t\t\t\tecosystem. Similarly, value estimates can be for a single ecosystem\r\n\t\t\t\t\tservice or a bundle of multiple ecosystem services. In some cases, it\r\n\t\t\t\t\tis not possible to disaggregate value estimates for multiple ecosystem\r\n\t\t\t\t\ttypes and/or bundles of services to individual ecosystem types or\r\n\t\t\t\t\tservices. We advise to use these value estimates with care in your\r\n\t\t\t\t\tspecific research or decision-making context. For more information\r\n\t\t\t\t\tconsult our{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tinfo website\r\n\t\t\t\t\t{\" \"}\r\n\t\t\t\t\tor send us an{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\temail\r\n\t\t\t\t\t\r\n\t\t\t\t\t.\r\n\t\t\t\t

\r\n\t\t\t\tNotes on using the ESVD:\r\n\t\t\t\t
    \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tWhere possible, value records are standardised to a common set of\r\n\t\t\t\t\t\tunits (International dollars/hectare/year in 2020 price levels for\r\n\t\t\t\t\t\tall relevant beneficiaries of the service).\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tSome value records cannot be standardised to a common set of units\r\n\t\t\t\t\t\tdue to missing information but nevertheless contain potentially\r\n\t\t\t\t\t\tuseful information for users. For this reason, some search results\r\n\t\t\t\t\t\tmay contain data but do not contain standardised values. Only\r\n\t\t\t\t\t\tstandardised values are included in the summary statistics.\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tThe data is under an ongoing review process to check that the\r\n\t\t\t\t\t\tinterpretation and coding of study results are correct but not all\r\n\t\t\t\t\t\tdata have been reviewed yet. The review status of each value record\r\n\t\t\t\t\t\tis indicated in the data.\r\n\t\t\t\t\t
  • \r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n\t// }\r\n};\r\n\r\nexport default AboutESVD;\r\n","import React from \"react\";\r\nimport { Card } from \"semantic-ui-react\";\r\nimport { COMPANY_EMAIL } from \"../../shared/Literals\";\r\n\r\nconst Contact = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t

Contact

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\tWant to stay informed?{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tSubscribe for the monthly Ecosystem Services Partnership Update.\r\n\t\t\t\t\t{\" \"}\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tThe ESVD is Open Source and voluntary contributions are much\r\n\t\t\t\t\tappreciated to maintain and further improve the database.\r\n\t\t\t\t\tContributions can help us expand the database to cover more biomes and\r\n\t\t\t\t\tregions as well as to further develop the database functionalities.{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tVisit our info website\r\n\t\t\t\t\t{\" \"}\r\n\t\t\t\t\tif you wish to contribute to the development of ESVD.\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tAny questions? Send us an{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\temail\r\n\t\t\t\t\t\r\n\t\t\t\t\t.\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default Contact;\r\n","import React from \"react\";\r\nimport { Card } from \"semantic-ui-react\";\r\nimport { useReferenceInfo } from \"../../providers/ReferenceInfoProvider\";\r\n\r\nconst TechnicalImplementation = () => {\r\n\tconst { currentInfo } = useReferenceInfo();\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tFoundation for Sustainable Development\r\n\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t(2021) - All rights reserved - ESVD database version{\" \"}\r\n\t\t\t\t\t{currentInfo?.version} - Technical implementation and information\r\n\t\t\t\t\tmanagement advice by{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tCo-Capacity\r\n\t\t\t\t\t\r\n\t\t\t\t\t.\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default TechnicalImplementation;\r\n","import React from \"react\";\r\nimport { Card } from \"semantic-ui-react\";\r\n// import flowerbee from \"../../images/flowerbee.jpg\";\r\n\r\nconst EcosystemImage = ({ imageItem }: { imageItem: any }) => {\r\n\t// render() {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n\t// }\r\n};\r\n\r\nexport default EcosystemImage;\r\n","import React, { useContext } from \"react\";\r\n\r\nimport { resources } from \"../shared/Literals\";\r\n\r\ninterface IValue {\r\n\tactiveItem: string;\r\n\tsetActiveItem: Function;\r\n}\r\n\r\nconst ActiveMenuContext = React.createContext(null);\r\n\r\n// The ActiveMenuProvider is responsible for ActiveMenu management\r\nconst ActiveMenuProvider = ({ children }: { children: any }) => {\r\n\tconst [activeItem, setActiveItem] = React.useState(\r\n\t\tresources.home.name\r\n\t);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the activeMenu context value.\r\nconst useActiveMenu = () => {\r\n\tconst activeMenu = useContext(ActiveMenuContext);\r\n\tif (activeMenu == null) {\r\n\t\tthrow new Error(\"useActiveMenu() called outside of a activeMenu hook?\");\r\n\t}\r\n\treturn activeMenu;\r\n};\r\n\r\nexport { ActiveMenuProvider, useActiveMenu };\r\n","import React from \"react\";\r\nimport { Card } from \"semantic-ui-react\";\r\n\r\nconst Contribute = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t

Contribute

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\tYou can suggest a study to be added to the ESVD using the “Suggest a\r\n\t\t\t\t\tStudy” page. Suggested studies will be added to the repository of\r\n\t\t\t\t\tvaluation studies to be analysed, entered into the database, reviewed\r\n\t\t\t\t\tand shared through the ESVD.{\" \"}\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default Contribute;\r\n","export default __webpack_public_path__ + \"static/media/nunzio-guerrera-LA8kstntJhI-unsplash.8e10b0a6.jpg\";","export default __webpack_public_path__ + \"static/media/robin-canfield-JDlF_d9BDAQ-unsplash.301c3e8d.jpg\";","import React, { useEffect } from \"react\";\r\nimport { Grid, Container } from \"semantic-ui-react\";\r\nimport EcosystemValuationDB from \"./EcosystemValuationDB\";\r\nimport TermsOfUse from \"./TermsOfUse\";\r\nimport AboutESVD from \"./AboutESVD\";\r\nimport Contact from \"./Contact\";\r\nimport TechnicalImplementation from \"./TechnicalImplementation\";\r\nimport EcosystemImage from \"./EcosystemImage\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\nimport { useActiveMenu } from \"../../providers/ActiveMenuProvider\";\r\nimport { resources } from \"../../shared/Literals\";\r\nimport Contribute from \"./Contribute\";\r\nimport firstHomeImage from \"../../images/nunzio-guerrera-LA8kstntJhI-unsplash.jpg\";\r\nimport secondHomeImage from \"../../images/robin-canfield-JDlF_d9BDAQ-unsplash.jpg\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst HomePage = () => {\r\n\tconst { setActiveItem } = useActiveMenu();\r\n\r\n\tuseEffect(() => {\r\n\t\tsetActiveItem(resources.home.name);\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default HomePage;\r\n","import React, { useContext } from \"react\";\r\nimport _ from \"lodash\";\r\nimport moment from \"moment\";\r\nimport agent from \"../api/agent\";\r\nimport { FilterQueryParams } from \"../models/EsvdQueryFilters\";\r\nimport { FilterQuery } from \"../models/FilterQuery\";\r\n\r\ninterface IValue {\r\n\t// filterQueries: FilterQuery[];\r\n\tgetFilterQueries: Function;\r\n\tgetFilterQueriesJSON: Function;\r\n\tgetTotalCount: Function;\r\n\t// totalFilterQueries: number;\r\n}\r\n\r\nconst FilterQueryContext = React.createContext(null);\r\n\r\n// The FilterQueryProvider is responsible for FilterQuery management\r\nconst FilterQueryProvider = ({ children }: { children: any }) => {\r\n\tconst getTotalCount = async () => {\r\n\t\ttry {\r\n\t\t\treturn await agent.FilterQueries.totalCount();\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getFilterQueries = async (filterQuery?: FilterQueryParams) => {\r\n\t\ttry {\r\n\t\t\tconst fq = await agent.FilterQueries.list(filterQuery);\r\n\t\t\tif (!fq) return [];\r\n\t\t\tconst items = processFilters(fq);\r\n\t\t\treturn items.sort((a, b) => {\r\n\t\t\t\treturn !!a.createdOn > !!b.createdOn ? 1 : -1; //sort by study in descending order\r\n\t\t\t});\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tfunction processFilters(fq: FilterQuery[]) {\r\n\t\tlet arr: FilterQuery[] = [];\r\n\t\tfor (const item of fq) {\r\n\t\t\titem.filterObject = JSON.parse(item.filterString);\r\n\t\t\tarr.push(item);\r\n\t\t}\r\n\t\treturn Object.values({\r\n\t\t\t..._.mapKeys(arr, \"id\"),\r\n\t\t});\r\n\t}\r\n\r\n\tconst getFilterQueriesJSON = async () => {\r\n\t\ttry {\r\n\t\t\tconst fq = await agent.FilterQueries.list();\r\n\t\t\tif (!fq) return [];\r\n\t\t\tconst items = processFilters(fq).sort((a, b) => {\r\n\t\t\t\treturn !!a.createdOn < !!b.createdOn ? -1 : 1; //sort by study in descending order\r\n\t\t\t});\r\n\t\t\t// : any[] = [];\r\n\t\t\tconst data = items.map((s, i) => {\r\n\t\t\t\tconst { filterObject } = s;\r\n\t\t\t\tconst dat: any = {};\r\n\t\t\t\tif (!filterObject) return;\r\n\t\t\t\t// if (filterObject) {\r\n\t\t\t\tconst {\r\n\t\t\t\t\tbiomeV2EcosystemV2Ecozones,\r\n\t\t\t\t\tbiomeV2EcosystemV2EcozonesCodes,\r\n\t\t\t\t\t// biomeEcosystems,\r\n\t\t\t\t\tecosystemServices,\r\n\t\t\t\t\tecosystemServicesCodes,\r\n\t\t\t\t\tfreeText,\r\n\t\t\t\t\tcountries,\r\n\t\t\t\t\t// countriesCodes,\r\n\t\t\t\t\tcontinents,\r\n\t\t\t\t\t// continentsCodes,\r\n\t\t\t\t\t// ciceses,\r\n\t\t\t\t\tcicesesCodes,\r\n\t\t\t\t\tseeas,\r\n\t\t\t\t\tseeasCodes,\r\n\t\t\t\t\tprotectionStatuses,\r\n\t\t\t\t\t// protectionStatusesCodes,\r\n\t\t\t\t\tvaluationMethods,\r\n\t\t\t\t\t// valuationMethodsCodes,\r\n\t\t\t\t\tresultsCount,\r\n\t\t\t\t} = filterObject;\r\n\r\n\t\t\t\t// dat[\"id\"] = s.id;\r\n\t\t\t\tdat[\"User\"] = s.user;\r\n\t\t\t\tdat[\"Date/time\"] = moment(s.createdOn).format(\"Do-MMM-yyyy HH:mm:ss\");\r\n\t\t\t\tdat[\"Valuation Rows(s)\"] = resultsCount;\r\n\t\t\t\tdat[\"Biome/Ecozone code\"] = Array.isArray(\r\n\t\t\t\t\tbiomeV2EcosystemV2EcozonesCodes\r\n\t\t\t\t)\r\n\t\t\t\t\t? biomeV2EcosystemV2EcozonesCodes.join(\";\")\r\n\t\t\t\t\t: biomeV2EcosystemV2EcozonesCodes;\r\n\t\t\t\tdat[\"Biome/Ecozone\"] = Array.isArray(biomeV2EcosystemV2Ecozones)\r\n\t\t\t\t\t? biomeV2EcosystemV2Ecozones.join(\";\")\r\n\t\t\t\t\t: biomeV2EcosystemV2Ecozones;\r\n\t\t\t\tdat[\"Countries\"] = Array.isArray(countries)\r\n\t\t\t\t\t? countries.join(\";\")\r\n\t\t\t\t\t: countries;\r\n\t\t\t\tdat[\"Continent\"] = Array.isArray(continents)\r\n\t\t\t\t\t? continents.join(\";\")\r\n\t\t\t\t\t: continents;\r\n\t\t\t\tdat[\"Protection Status\"] = Array.isArray(protectionStatuses)\r\n\t\t\t\t\t? protectionStatuses.join(\";\")\r\n\t\t\t\t\t: protectionStatuses;\r\n\t\t\t\tdat[\"TEEB code\"] = Array.isArray(ecosystemServicesCodes)\r\n\t\t\t\t\t? ecosystemServicesCodes.join(\";\")\r\n\t\t\t\t\t: ecosystemServicesCodes;\r\n\t\t\t\tdat[\"TEEB\"] = Array.isArray(ecosystemServices)\r\n\t\t\t\t\t? ecosystemServices.join(\";\")\r\n\t\t\t\t\t: ecosystemServices;\r\n\t\t\t\tdat[\"CICES\"] = Array.isArray(cicesesCodes)\r\n\t\t\t\t\t? cicesesCodes.join(\";\")\r\n\t\t\t\t\t: cicesesCodes;\r\n\t\t\t\tdat[\"SEEA code\"] = Array.isArray(seeasCodes)\r\n\t\t\t\t\t? seeasCodes.join(\";\")\r\n\t\t\t\t\t: seeasCodes;\r\n\t\t\t\tdat[\"SEEA\"] = Array.isArray(seeas) ? seeas.join(\";\") : seeas;\r\n\t\t\t\tdat[\"Valuation method\"] = Array.isArray(valuationMethods)\r\n\t\t\t\t\t? valuationMethods.join(\";\")\r\n\t\t\t\t\t: valuationMethods;\r\n\t\t\t\tdat[\"Free Text Search\"] = freeText;\r\n\t\t\t\t// data.push(dat);\r\n\t\t\t\t// } else {\r\n\t\t\t\t// \treturn null;\r\n\t\t\t\t// }\r\n\t\t\t\treturn dat;\r\n\t\t\t});\r\n\t\t\treturn data;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useFilterQuery = () => {\r\n\tconst filterQuery = useContext(FilterQueryContext);\r\n\tif (filterQuery == null) {\r\n\t\tthrow new Error(\"useFilterQuery() called outside of a filterQuery hook?\");\r\n\t}\r\n\treturn filterQuery;\r\n};\r\n\r\nexport { FilterQueryProvider, useFilterQuery };\r\n","import { useState } from \"react\";\r\nimport { Pagination } from \"semantic-ui-react\";\r\n\r\ninterface IProps {\r\n\tsetActivePage: Function;\r\n\ttotalPages: number;\r\n\tcurrentPage: number;\r\n}\r\nconst EsvdPagination = (props: IProps) => {\r\n\tconst { currentPage, setActivePage, totalPages } = props;\r\n\tconst [boundaryRange] = useState(1);\r\n\tconst [siblingRange] = useState(1);\r\n\tconst [showFirstAndLastNav] = useState(true);\r\n\tconst [showEllipsis] = useState(true);\r\n\tconst [showPreviousAndNextNav] = useState(true);\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tsetActivePage(activePage || 1);\r\n\t\t\t}}\r\n\t\t\tsize=\"mini\"\r\n\t\t\tsiblingRange={siblingRange}\r\n\t\t\ttotalPages={totalPages}\r\n\t\t\tellipsisItem={showEllipsis ? undefined : null}\r\n\t\t\tfirstItem={showFirstAndLastNav ? undefined : null}\r\n\t\t\tlastItem={showFirstAndLastNav ? undefined : null}\r\n\t\t\tprevItem={showPreviousAndNextNav ? undefined : null}\r\n\t\t\tnextItem={showPreviousAndNextNav ? undefined : null}\r\n\t\t/>\r\n\t);\r\n\t// }\r\n};\r\n\r\nexport default EsvdPagination;\r\n","import React from \"react\";\r\nimport { CSVLink } from \"react-csv\";\r\nimport { Button, Card, Progress } from \"semantic-ui-react\";\r\nimport moment from \"moment\";\r\nimport { useFilterQuery } from \"../../providers/FilterQueryProvider\";\r\nimport { useReferenceInfo } from \"../../providers/ReferenceInfoProvider\";\r\n\r\nconst FilterQueryButton = () => {\r\n\tconst { getFilterQueriesJSON } = useFilterQuery();\r\n\tconst { currentInfo } = useReferenceInfo();\r\n\tconst csvLinkRef = React.useRef();\r\n\tconst [csvData, setCsvData] = React.useState([]);\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [filename, setFilename] = React.useState(\"\");\r\n\r\n\tconst downloadFilterQueries = async () => {\r\n\t\tsetFilename(\r\n\t\t\t`Esvd_filter_queries_${moment().format(\"Do-MMM-yyyy_HH-mm-ss\")}_${\r\n\t\t\t\tcurrentInfo?.version\r\n\t\t\t}.csv`\r\n\t\t);\r\n\r\n\t\tsetIsLoading(true);\r\n\t\tconst data = await getFilterQueriesJSON();\r\n\t\tsetCsvData(data);\r\n\t\tsetIsLoading(false);\r\n\t\tif (csvLinkRef?.current) {\r\n\t\t\tcsvLinkRef.current.link.click();\r\n\t\t}\r\n\t\t// });\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t downloadFilterQueries()}\r\n\t\t\t\tdisabled={isLoading}\r\n\t\t\t\tclassName={`${isLoading ? \"invisible\" : \"\"}`}\r\n\t\t\t/>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default FilterQueryButton;\r\n","import moment from \"moment\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { Card, Grid, Header, Label, List } from \"semantic-ui-react\";\r\nimport { FilterQuery } from \"../../models/FilterQuery\";\r\nimport { useFilterQuery } from \"../../providers/FilterQueryProvider\";\r\nimport { LIMIT } from \"../../shared/Literals\";\r\nimport LoadingOverlay from \"../../shared/LoadingOverlay\";\r\nimport EsvdPagination from \"../esvdPanel/EsvdPagination\";\r\nimport FilterQueryButton from \"./FilterQueryButton\";\r\n\r\n// interface IProps {\r\n// \tonSelectionChanged: Function;\r\n// \theaderText: string;\r\n// }\r\n\r\nconst FilterQueryList = () => {\r\n\tconst { getTotalCount, getFilterQueries } = useFilterQuery();\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [currentPage, setCurrentPage] = React.useState(1);\r\n\tconst [totalFilterQueries, setTotalFilterQueries] = useState(0);\r\n\tconst [filterQueries, setFilterQueries] = useState([]);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetIsLoading(true);\r\n\t\t(async () => {\r\n\t\t\tvar filtersCnt = await getTotalCount();\r\n\t\t\tsetTotalFilterQueries(filtersCnt);\r\n\t\t})();\r\n\r\n\t\t(async () => {\r\n\t\t\tvar filters = await getFilterQueries();\r\n\t\t\tsetFilterQueries(filters);\r\n\t\t\tsetIsLoading(false);\r\n\t\t})();\r\n\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{filterQueries.map((s, i) => {\r\n\t\t\t\t\t\tconst { filterObject } = s;\r\n\t\t\t\t\t\tif (filterObject) {\r\n\t\t\t\t\t\t\tconst {\r\n\t\t\t\t\t\t\t\tbiomeV2EcosystemV2Ecozones,\r\n\t\t\t\t\t\t\t\t// biomeEcosystems,\r\n\t\t\t\t\t\t\t\tecosystemServices,\r\n\t\t\t\t\t\t\t\tfreeText,\r\n\t\t\t\t\t\t\t\tcountries,\r\n\t\t\t\t\t\t\t\tcontinents,\r\n\t\t\t\t\t\t\t\tciceses,\r\n\t\t\t\t\t\t\t\tseeas,\r\n\t\t\t\t\t\t\t\tprotectionStatuses,\r\n\t\t\t\t\t\t\t\tvaluationMethods,\r\n\t\t\t\t\t\t\t\tresultsCount,\r\n\t\t\t\t\t\t\t} = filterObject;\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{`User: ${s.user}`}\r\n\t\t\t\t\t\t\t\t\t{`Valuation Rows(s): ${\r\n\t\t\t\t\t\t\t\t\t\tresultsCount || 0\r\n\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{`Date: ${moment(s.createdOn).format(\r\n\t\t\t\t\t\t\t\t\t\t\t\"DD-MM-YYYY HH:mm:ss\"\r\n\t\t\t\t\t\t\t\t\t\t)}`}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{/* {biomeEcosystems &&\r\n\t\t\t\t\t\t\t\t\t\t\t`Biome/Ecosystems: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\tArray.isArray(biomeEcosystems)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? biomeEcosystems.join(\";\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: biomeEcosystems\r\n\t\t\t\t\t\t\t\t\t\t\t}\\n`}\r\n\t\t\t\t\t\t\t\t\t\t{biomeEcosystems &&
} */}\r\n\t\t\t\t\t\t\t\t\t\t{biomeV2EcosystemV2Ecozones &&\r\n\t\t\t\t\t\t\t\t\t\t\t` Biome/Ecozone: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\tArray.isArray(biomeV2EcosystemV2Ecozones)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? biomeV2EcosystemV2Ecozones.join(\";\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: biomeV2EcosystemV2Ecozones\r\n\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t{ecosystemServices &&\r\n\t\t\t\t\t\t\t\t\t\t\t` TEEB: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\tArray.isArray(ecosystemServices)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? ecosystemServices.join(\";\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: ecosystemServices\r\n\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t{ecosystemServices &&
}\r\n\t\t\t\t\t\t\t\t\t\t{countries &&\r\n\t\t\t\t\t\t\t\t\t\t\t` Countries: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\tArray.isArray(countries)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? countries.join(\";\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: countries\r\n\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t{countries &&
}\r\n\t\t\t\t\t\t\t\t\t\t{continents &&\r\n\t\t\t\t\t\t\t\t\t\t\t` Continent: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\tArray.isArray(continents)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? continents.join(\";\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: continents\r\n\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t{continents &&
}\r\n\t\t\t\t\t\t\t\t\t\t{protectionStatuses &&\r\n\t\t\t\t\t\t\t\t\t\t\t` Protection Status: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\tArray.isArray(protectionStatuses)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? protectionStatuses.join(\";\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: protectionStatuses\r\n\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t{protectionStatuses &&
}\r\n\t\t\t\t\t\t\t\t\t\t{ciceses &&\r\n\t\t\t\t\t\t\t\t\t\t\t` CICES: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\tArray.isArray(ciceses) ? ciceses.join(\";\") : ciceses\r\n\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t{ciceses &&
}\r\n\t\t\t\t\t\t\t\t\t\t{seeas &&\r\n\t\t\t\t\t\t\t\t\t\t\t` SEEA: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\tArray.isArray(seeas) ? seeas.join(\";\") : seeas\r\n\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t{seeas &&
}\r\n\t\t\t\t\t\t\t\t\t\t{valuationMethods &&\r\n\t\t\t\t\t\t\t\t\t\t\t` Valuation Method: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\tArray.isArray(valuationMethods)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? valuationMethods.join(\";\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: valuationMethods\r\n\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t{valuationMethods &&
}\r\n\t\t\t\t\t\t\t\t\t\t{freeText && ` Free Text Search: ${freeText}`}\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})}\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\tfunction setPage(activePage: string | number | undefined) {\r\n\t\tsetIsLoading(true);\r\n\t\tsetCurrentPage(Number(activePage));\r\n\t\t(async () => {\r\n\t\t\tvar filters = await getFilterQueries({\r\n\t\t\t\tparams: {\r\n\t\t\t\t\toffset: activePage ? Number(activePage) - 1 : 0,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\tsetFilterQueries(filters);\r\n\t\t\tsetIsLoading(false);\r\n\t\t})();\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tSaved Filter Queries\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{`${\r\n\t\t\t\t\t\t\tLIMIT * currentPage < totalFilterQueries\r\n\t\t\t\t\t\t\t\t? LIMIT * currentPage\r\n\t\t\t\t\t\t\t\t: totalFilterQueries\r\n\t\t\t\t\t\t} of ${totalFilterQueries}`}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t{renderContent()}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default FilterQueryList;\r\n","import React from \"react\";\r\nimport { Grid, Container } from \"semantic-ui-react\";\r\nimport { actions, resources } from \"../../shared/Literals\";\r\n\r\nimport FilterQueryList from \"./FilterQueryList\";\r\nimport FilterQueryButton from \"./FilterQueryButton\";\r\nimport Can from \"../../accessControls/Can\";\r\n// import { FilterQuery } from \"../../models/FilterQuery\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst FilterQueriesDownloadsBoard = (props: any) => {\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{/* \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t */}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\treturn (\r\n\t\t renderContent()}\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default FilterQueriesDownloadsBoard;\r\n","import { ErrorMessage, Field, Formik } from \"formik\";\r\nimport React, { Fragment } from \"react\";\r\nimport { Form, Label, Card, Grid } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport EsvdInputInline from \"../../shared/InputInline\";\r\nimport NumberInputInline from \"../../shared/InputInlineNumber\";\r\nimport { initReferenceInfo } from \"../../shared/Literals\";\r\nimport SelectDropdown from \"../../shared/SelectDropdown\";\r\nimport { ReferenceInfo } from \"../../models/ReferenceInfo\";\r\nimport { useReferenceInfo } from \"../../providers/ReferenceInfoProvider\";\r\nimport { getMonthList } from \"../../EsvdFunctions\";\r\nimport { TreeType } from \"../../models/ecosystemService\";\r\n\r\nconst VersionEntry = () => {\r\n\tconst formikRef = React.useRef();\r\n\tconst { saveReferenceInfo, getCurrentVersionInfo, currentInfo } =\r\n\t\tuseReferenceInfo();\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [referenceInfo] = React.useState(initReferenceInfo);\r\n\tconst [monthId, setMonthId] = React.useState(new Date().getMonth());\r\n\r\n\tconst clearReferenceInfo = () => {\r\n\t\tformikRef.current?.resetForm();\r\n\t\tsetMonthId(new Date().getMonth());\r\n\t};\r\n\r\n\tconst renderButtons = (values: any) => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t clearReferenceInfo()}>\r\n\t\t\t\t\t\t\tClear\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tSave\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t};\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t
Current Database Version: {currentInfo?.version}
\r\n\t\t\t\t
\r\n\t\t\t\t {\r\n\t\t\t\t\t\thandleFormSubmit(values, setErrors, resetForm);\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t{({\r\n\t\t\t\t\t\tvalues,\r\n\t\t\t\t\t\t// handleChange,\r\n\t\t\t\t\t\thandleSubmit,\r\n\t\t\t\t\t\tisValid,\r\n\t\t\t\t\t\tisSubmitting,\r\n\t\t\t\t\t\tdirty,\r\n\t\t\t\t\t\terrors,\r\n\t\t\t\t\t}) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetMonthId(value);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{errors.error && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{renderButtons(values)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\tconst handleFormSubmit: Function = (\r\n\t\tvalues: ReferenceInfo,\r\n\t\tsetErrors: Function,\r\n\t\tresetForm: Function\r\n\t) => {\r\n\t\tsetIsLoading(true);\r\n\t\tvalues.subversion = values.subversion || 0;\r\n\t\tvalues.fromCitation = false;\r\n\t\tsaveReferenceInfo(values)\r\n\t\t\t.then((res: any) => {\r\n\t\t\t\tclearReferenceInfo();\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t\tgetCurrentVersionInfo();\r\n\t\t\t})\r\n\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t

{\"Database Version\"}

\r\n\t\t\t
\r\n\r\n\t\t\t{renderContent()}\r\n\t\t
\r\n\t);\r\n};\r\nconst validationSchema: any = Yup.object({\r\n\t[\"year\"]: Yup.number()\r\n\t\t.typeError(\"Year must be a number\")\r\n\t\t.required(\"Year is required\")\r\n\t\t.positive(`Year must be a positive number.`)\r\n\t\t.min(1950, `Year must be grater than or equal to 1950.`)\r\n\t\t.test(\r\n\t\t\t\"len\",\r\n\t\t\t`Year is not a valid year.`,\r\n\t\t\t(val: any) => !val || (val && val.toString().length === 4)\r\n\t\t),\r\n\t[\"version\"]: Yup.number()\r\n\t\t// .nullable(false)\r\n\t\t.typeError(\"Version is required\")\r\n\t\t.required(\"Version is required\")\r\n\t\t.positive(`Version must be a positive number.`)\r\n\t\t.min(1, `Version must be grater than or equal to 1.`),\r\n\t[\"subversion\"]: Yup.number()\r\n\t\t.nullable(true)\r\n\t\t// .positive(`Subversion must be a positive number.`)\r\n\t\t.min(0, `Subversion must be grater than or equal to 0.`),\r\n});\r\n\r\nexport default VersionEntry;\r\n","import { ErrorMessage, Field, Formik } from \"formik\";\r\nimport React, { Fragment } from \"react\";\r\nimport { Form, Label, Card, Grid } from \"semantic-ui-react\";\r\n// import * as Yup from \"yup\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport EsvdInputInline from \"../../shared/InputInline\";\r\nimport { initReferenceInfo } from \"../../shared/Literals\";\r\nimport { ReferenceInfo } from \"../../models/ReferenceInfo\";\r\nimport { useReferenceInfo } from \"../../providers/ReferenceInfoProvider\";\r\n\r\nconst CitationEntry = () => {\r\n\tconst formikRef = React.useRef();\r\n\tconst { saveReferenceInfo, getCurrentVersionInfo, currentInfo } =\r\n\t\tuseReferenceInfo();\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [referenceInfo] = React.useState(initReferenceInfo);\r\n\r\n\tconst clearReferenceInfo = () => {\r\n\t\tformikRef.current?.resetForm();\r\n\t};\r\n\r\n\tconst renderButtons = (values: any) => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t clearReferenceInfo()}>\r\n\t\t\t\t\t\t\tClear\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tSave\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t};\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t
Current Citation text: {currentInfo?.referenceText}
\r\n\t\t\t\t
\r\n\t\t\t\t {\r\n\t\t\t\t\t\thandleFormSubmit(values, setErrors, resetForm);\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t{({ values, handleSubmit, isValid, isSubmitting, dirty, errors }) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{errors.error && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t{renderButtons(values)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\tconst handleFormSubmit: Function = (\r\n\t\tvalues: ReferenceInfo,\r\n\t\tsetErrors: Function,\r\n\t\tresetForm: Function\r\n\t) => {\r\n\t\tsetIsLoading(true);\r\n\t\tvalues.subversion = values.subversion || 0;\r\n\t\tvalues.fromCitation = true;\r\n\t\tsaveReferenceInfo(values)\r\n\t\t\t.then((res: any) => {\r\n\t\t\t\tclearReferenceInfo();\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t\tgetCurrentVersionInfo();\r\n\t\t\t})\r\n\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t

{\"Citation text\"}

\r\n\t\t\t
\r\n\r\n\t\t\t{renderContent()}\r\n\t\t
\r\n\t);\r\n};\r\n// const validationSchema: any = Yup.object({\r\n// \t// [\"month\"]: Yup.number(),\r\n// \t// .nullable(false)\r\n// \t// .required(\"Month is required\")\r\n// \t// .positive(`Month must be a positive number.`)\r\n// \t// .min(0, `Month must be grater than or equal to 0.`),\r\n// \t[\"year\"]: Yup.number()\r\n// \t\t.typeError(\"Year must be a number\")\r\n// \t\t.required(\"Year is required\")\r\n// \t\t.positive(`Year must be a positive number.`)\r\n// \t\t.min(1950, `Year must be grater than or equal to 1950.`)\r\n// \t\t.test(\r\n// \t\t\t\"len\",\r\n// \t\t\t`Year is not a valid year.`,\r\n// \t\t\t(val: any) => !val || (val && val.toString().length === 4)\r\n// \t\t),\r\n// \t[\"version\"]: Yup.number()\r\n// \t\t// .nullable(false)\r\n// \t\t.typeError(\"Version is required\")\r\n// \t\t.required(\"Version is required\")\r\n// \t\t.positive(`Version must be a positive number.`)\r\n// \t\t.min(1, `Version must be grater than or equal to 1.`),\r\n// \t[\"subversion\"]: Yup.number()\r\n// \t\t.nullable(true)\r\n// \t\t// .positive(`Subversion must be a positive number.`)\r\n// \t\t.min(0, `Subversion must be grater than or equal to 0.`),\r\n// });\r\n\r\nexport default CitationEntry;\r\n","import React, { useEffect } from \"react\";\r\nimport { Button, Modal } from \"semantic-ui-react\";\r\n\r\nexport function myModalReducer(state: any, action: any) {\r\n\tswitch (action.type) {\r\n\t\tcase \"close\":\r\n\t\t\treturn { open: false };\r\n\t\tcase \"open\":\r\n\t\t\treturn { open: true, size: action.size };\r\n\t\tdefault:\r\n\t\t\tthrow new Error(\"Unsupported action...\");\r\n\t}\r\n}\r\n\r\nconst MyModal = ({\r\n\ttitle,\r\n\tbody,\r\n\topened,\r\n\tsetOpened,\r\n\tsetConfirmation,\r\n\tneedsAction = true,\r\n}: {\r\n\ttitle: string;\r\n\tbody: string;\r\n\topened: boolean;\r\n\tsetOpened: Function;\r\n\tsetConfirmation: Function;\r\n\tneedsAction?: boolean;\r\n}) => {\r\n\tconst [state, dispatch] = React.useReducer(myModalReducer, {\r\n\t\topen: false,\r\n\t\tsize: \"small\",\r\n\t});\r\n\r\n\tconst { open, size } = state;\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {\r\n\t\t\tif (setOpened) {\r\n\t\t\t\tsetOpened(false);\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n\tuseEffect(() => {\r\n\t\tif (opened) dispatch({ type: \"open\", size: \"small\" });\r\n\t}, [opened]);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t dispatch({ type: \"close\" })}>\r\n\t\t\t\t{title}\r\n\t\t\t\t\r\n\t\t\t\t\t

{body}

\r\n\t\t\t\t
\r\n\t\t\t\t{needsAction ? (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tdispatch({ type: \"close\" });\r\n\t\t\t\t\t\t\t\tsetOpened && setOpened(false);\r\n\t\t\t\t\t\t\t\tsetConfirmation && setConfirmation(false);\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tNo\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tdispatch({ type: \"close\" });\r\n\t\t\t\t\t\t\t\tsetOpened && setOpened(false);\r\n\t\t\t\t\t\t\t\tsetConfirmation && setConfirmation(true);\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tYes\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t) : null}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default MyModal;\r\n","import { ErrorMessage, Field, Formik } from \"formik\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport { Form, Label, Card, Grid } from \"semantic-ui-react\";\r\n// import * as Yup from \"yup\";\r\nimport agent from \"../../api/agent\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport EsvdInputInline from \"../../shared/InputInline\";\r\nimport MyModal from \"../../layouts/Modals\";\r\n// import { initReferenceInfo } from \"../../shared/Literals\";\r\n// import { ReferenceInfo } from \"../../models/ReferenceInfo\";\r\n\r\ninterface IValuationid {\r\n\tvaluationid?: string | number;\r\n\terror?: string;\r\n}\r\n\r\nconst initValuation: IValuationid = { valuationid: \"\" };\r\n\r\nconst DeleteValuation = () => {\r\n\tconst formiRef = React.useRef();\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [valuationToDelete] = React.useState(initValuation);\r\n\tconst [opened, setOpened] = useState(false);\r\n\tconst [isModalConfirmed, setIsModalConfirmed] = useState(false);\r\n\tconst [delItem, setDelItem] = useState(initValuation);\r\n\tconst [isActionNeeded, setisActionNeeded] = useState(true);\r\n\tconst [modalMessage, setModalMessage] = useState(null);\r\n\r\n\tconst clearForm = () => {\r\n\t\tformiRef.current?.resetForm();\r\n\t\tsetDelItem(initValuation);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (isModalConfirmed) {\r\n\t\t\tsetIsModalConfirmed(false);\r\n\t\t\t(async () => {\r\n\t\t\t\tif (delItem) {\r\n\t\t\t\t\tsetOpened(false);\r\n\t\t\t\t\tawait deleteValuation(delItem);\r\n\t\t\t\t}\r\n\t\t\t})()\r\n\t\t\t\t.then((res: any) => {\r\n\t\t\t\t\tsetOpened(true);\r\n\t\t\t\t\tsetModalMessage(\"Valuation deleted successfully.\");\r\n\r\n\t\t\t\t\tsetisActionNeeded(false);\r\n\t\t\t\t\tclearForm();\r\n\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tsetOpened(true);\r\n\t\t\t\t\tsetisActionNeeded(false);\r\n\t\t\t\t\tsetModalMessage(err || null);\r\n\t\t\t\t});\r\n\t\t}\r\n\t\treturn () => {};\r\n\t}, [isModalConfirmed, delItem]);\r\n\r\n\tconst renderButtons = (values: any) => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t clearForm()}>\r\n\t\t\t\t\t\t\tClear\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tDelete\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t};\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t
\r\n\t\t\t\t {\r\n\t\t\t\t\t\thandleFormSubmit(values, setErrors, resetForm);\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t{({ values, handleSubmit, isValid, isSubmitting, dirty, errors }) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{errors.error && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t{renderButtons(values)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\tconst deleting = (valuation: IValuationid) => {\r\n\t\tsetOpened(true);\r\n\t\tsetisActionNeeded(true);\r\n\t\tsetModalMessage(\"Are you sure you want to delete?\");\r\n\t\tsetDelItem(valuation);\r\n\t};\r\n\r\n\tconst deleteValuation = async (valuation: IValuationid) => {\r\n\t\ttry {\r\n\t\t\tconst response = await agent.Esvds.delete(\r\n\t\t\t\tNumber(valuation.valuationid ?? 0)\r\n\t\t\t);\r\n\r\n\t\t\treturn response;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleFormSubmit: Function = (\r\n\t\tvalues: IValuationid,\r\n\t\tsetErrors: Function,\r\n\t\tresetForm: Function\r\n\t) => {\r\n\t\tif (!values.valuationid) {\r\n\t\t\tsetErrors({\r\n\t\t\t\terror: ErrorHandler(\"Please enter Valuation Id to delete.\"),\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tdeleting(values);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t

{\"Delete Valuation\"}

\r\n\t\t\t\t
\r\n\r\n\t\t\t\t{renderContent()}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default DeleteValuation;\r\n","import * as React from \"react\";\r\nimport { Grid, Container } from \"semantic-ui-react\";\r\nimport { actions, resources } from \"../../shared/Literals\";\r\n\r\nimport Can from \"../../accessControls/Can\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\nimport VersionEntry from \"./VersionEntry\";\r\nimport CitationEntry from \"./CitationEntry\";\r\nimport DeleteValuation from \"./DeleteValuation\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst SettingsMain = () => {\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t renderContent()}\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default SettingsMain;\r\n","import { ErrorMessage, Form, Formik } from \"formik\";\r\nimport React, { Fragment } from \"react\";\r\nimport { Card, Label } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\nimport EsvdInput from \"../../shared/Input\";\r\nimport { User } from \"../../models/user\";\r\nimport WelcomeHeader from \"../../shared/WelcomeHeader\";\r\nimport { QueryString } from \"../../models/EsvdQueryFilters\";\r\nimport { PASSWORD } from \"../../shared/Literals\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport { useAuth } from \"../../providers/AuthProvider\";\r\nimport LoginsContainer from \"./LoginsContainer\";\r\n\r\nexport interface IProps {\r\n\tresetpassword: Function;\r\n\tuser: User;\r\n\tlocation: any | null;\r\n}\r\n\r\nconst ResetPassword = (props: IProps) => {\r\n\tconst { resetpassword, setToken } = useAuth();\r\n\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [isReset, setIsReset] = React.useState(false);\r\n\tconst [subheadText, setsubheadText] = React.useState(\r\n\t\t\"Enter New Password To Reset\"\r\n\t);\r\n\tconst [queryString] = React.useState(\r\n\t\tObject.fromEntries(new URLSearchParams(props.location.search))\r\n\t);\r\n\r\n\tconst resetCompleted = () => {\r\n\t\tsetIsReset(!isReset);\r\n\t\tsetsubheadText(\"Reset successful.\");\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\tif (queryString.username && queryString.code) {\r\n\t\t\tsetToken();\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t

Welcome to the ESVD

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{isReset ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tPassword reset successful. Click here{\" \"}\r\n\t\t\t\t\t\t\tto login.\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{subheadText}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t{({ handleSubmit, isValid, isSubmitting, dirty, errors }) => (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tSave\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tLogin?\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else return ;\r\n\t};\r\n\r\n\tconst handleFormSubmit = (\r\n\t\tvalues: { code: string; userid: string; password: string; error: null },\r\n\t\tsetErrors: Function\r\n\t) => {\r\n\t\t//add query string userid and code to form values\r\n\t\t//get details from url query string\r\n\t\t//https://stackoverflow.com/a/56780570/5367889\r\n\t\t//TODO: encode the userid fon the server before sending and then decode it here\r\n\t\tconst queryString: QueryString = Object.fromEntries(\r\n\t\t\tnew URLSearchParams(props.location.search)\r\n\t\t);\r\n\t\tconst params = { ...values, ...queryString };\r\n\t\tsetIsLoading(true);\r\n\t\tresetpassword(params)\r\n\t\t\t.then((res: any) => {\r\n\t\t\t\t// setLoading(false);\r\n\t\t\t\tresetCompleted();\r\n\t\t\t})\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t\t\t// setLoading(false);\r\n\t\t\t});\r\n\t\tsetIsLoading(false);\r\n\t};\r\n\r\n\treturn {renderContent()};\r\n\t// }\r\n};\r\n\r\nconst validationSchema = Yup.object({\r\n\tpassword: Yup.string()\r\n\t\t.trim()\r\n\t\t.min(PASSWORD.min_len, PASSWORD.msg)\r\n\t\t.required(\"Password is required\"),\r\n\tconfirmpassword: Yup.string()\r\n\t\t.oneOf([Yup.ref(\"password\"), null], \"Passwords must match\")\r\n\t\t.required(\"Confirm Password is required\"),\r\n});\r\n\r\nexport default ResetPassword;\r\n","import ResetPassword, { IProps } from \"./ResetPassword\";\r\n\r\nconst ResetPasswordWrapper = (props: IProps) => {\r\n\treturn ;\r\n};\r\n\r\nexport default ResetPasswordWrapper;\r\n","import { Field } from \"formik\";\r\nimport React, { useEffect } from \"react\";\r\n// import * as Yup from \"yup\";\r\nimport { purposeOfAccessList, sectorsList } from \"../../shared/Literals\";\r\nimport { SelectDropdown } from \"../../shared/SingleSelect\";\r\nimport EsvdInputInline from \"../../shared/InputInline\";\r\n\r\nconst UserAdditionalInfo = (props: any) => {\r\n\tconst { user } = props;\r\n\tconst [sectorOtherShow, setSectorOtherShow] = React.useState(false);\r\n\tconst [purposeOtherShow, setPurposeOtherShow] =\r\n\t\tReact.useState(false);\r\n\tconst [selectedSector, setSelectedSector] = React.useState(\r\n\t\tuser !== null && user !== undefined ? user?.sector : \"\"\r\n\t);\r\n\tconst [selectedPurpose, setSelectedPurpose] = React.useState(\r\n\t\tuser !== null && user !== undefined ? user?.purposeOfAccess : \"\"\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (user) {\r\n\t\t\tconst { sector, purposeOfAccess } = user;\r\n\t\t\tsector && setSectorOtherShow(sector.toLowerCase() === \"other\");\r\n\t\t\tpurposeOfAccess &&\r\n\t\t\t\tsetPurposeOtherShow(purposeOfAccess.toLowerCase() === \"other\");\r\n\t\t}\r\n\t}, [user]);\r\n\tconst setSector = (value: string) => {\r\n\t\tsetSelectedSector(value);\r\n\t\tvalue && setSectorOtherShow(value.toLowerCase() === \"other\");\r\n\t};\r\n\tconst setPurposeOfAccess = (value: string) => {\r\n\t\tsetSelectedPurpose(value);\r\n\t\tvalue && setPurposeOtherShow(value.toLowerCase() === \"other\");\r\n\t};\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{sectorOtherShow ? (\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t{purposeOtherShow ? (\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn <>{renderContent()};\r\n};\r\n\r\nexport default UserAdditionalInfo;\r\n","import { ErrorMessage, Form, Formik } from \"formik\";\r\nimport React, { Fragment } from \"react\";\r\nimport { Label } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\nimport EsvdInput from \"../../shared/Input\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { useAuth } from \"../../providers/AuthProvider\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport EsvdInputInline from \"../../shared/InputInline\";\r\nimport UserAdditionalInfo from \"./UserAdditionalInfo\";\r\n\r\nconst AccountDetails = (props: any) => {\r\n\tconst { user, updateUser } = useAuth();\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\t// const [sectorOtherShow, setSectorOtherShow] = React.useState(false);\r\n\t// const [purposeOtherShow, setPurposeOtherShow] =\r\n\tReact.useState(false);\r\n\t// const [selectedSector, setSelectedSector] = React.useState(\r\n\t// \tuser !== null && user !== undefined ? user?.sector : \"\"\r\n\t// );\r\n\t// const [selectedPurpose, setSelectedPurpose] = React.useState(\r\n\t// \tuser !== null && user !== undefined ? user?.purposeOfAccess : \"\"\r\n\t// );\r\n\r\n\tconst renderContent = () => {\r\n\t\t// const { isSigned, isLoading, subheadText } = this.state;\r\n\t\tif (user !== undefined && user !== null) {\r\n\t\t\tconst {\r\n\t\t\t\tid,\r\n\t\t\t\tdisplayName,\r\n\t\t\t\torganization,\r\n\t\t\t\tsector,\r\n\t\t\t\tsectorOther,\r\n\t\t\t\tpurposeOfAccess,\r\n\t\t\t\tpurposeOfAccessOther,\r\n\t\t\t\temail,\r\n\t\t\t\tuserName,\r\n\t\t\t} = user;\r\n\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t{({ handleSubmit, isValid, isSubmitting, dirty, errors }) => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{/* \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{sectorOtherShow ? (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{purposeOtherShow ? (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)} */}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tSave\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t//a login user shouldn't see the signup page.\r\n\t\t//Therefore is a logged user access the signup route, go to home\r\n\t\t// history.push(\"/\");\r\n\t\t// return null;\r\n\t\telse return ;\r\n\t};\r\n\r\n\tconst handleFormSubmit = (\r\n\t\tvalues: {\r\n\t\t\tid: string | null;\r\n\t\t\tdisplayName: string;\r\n\t\t\torganization: string;\r\n\t\t\tsector: string;\r\n\t\t\tsectorOther?: string;\r\n\t\t\tpurposeOfAccess: string;\r\n\t\t\tpurposeOfAccessOther?: string;\r\n\t\t\temail: string;\r\n\t\t\tusername: string;\r\n\t\t\tpassword: string;\r\n\t\t\terror: null;\r\n\t\t},\r\n\t\tsetErrors: Function\r\n\t) => {\r\n\t\tvalues.id = user?.id === null || user?.id === undefined ? null : user.id;\r\n\t\tconst { sector, purposeOfAccess } = values;\r\n\t\tif (sector && sector.toLowerCase() !== \"other\") {\r\n\t\t\tvalues.sectorOther = \"\";\r\n\t\t}\r\n\t\tif (purposeOfAccess && purposeOfAccess.toLowerCase() !== \"other\") {\r\n\t\t\tvalues.purposeOfAccessOther = \"\";\r\n\t\t}\r\n\t\tsetIsLoading(true);\r\n\t\tupdateUser(values)\r\n\t\t\t.then((res: any) => {\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t\tprops.setIsEdit && props.setIsEdit(false);\r\n\t\t\t})\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\treturn <>{renderContent()};\r\n};\r\nconst validationSchema = Yup.object({\r\n\tdisplayName: Yup.string().required(\"Display name is required\"),\r\n\torganization: Yup.string().required(\"Organization is required\"),\r\n\tsector: Yup.string().required(\"Sector is required\"),\r\n\tsectorOther: Yup.string().when([\"sector\"], {\r\n\t\tis: (sector: string) => sector && sector.toLowerCase() === \"other\",\r\n\t\tthen: Yup.string().required(\"Sector description is required\"),\r\n\t}),\r\n\tpurposeOfAccess: Yup.string().required(\"Purpose of access is required\"),\r\n\tpurposeOfAccessOther: Yup.string().when([\"purposeOfAccess\"], {\r\n\t\tis: (purposeOfAccess: string) =>\r\n\t\t\tpurposeOfAccess && purposeOfAccess.toLowerCase() === \"other\",\r\n\t\tthen: Yup.string().required(\"Purpose description is required\"),\r\n\t}),\r\n});\r\n\r\nexport default AccountDetails;\r\n\r\n/**\r\n * Validation for a field based on the value of another field\r\n * \r\n * export const VALIDATION_SCHEMA = Yup.object().shape({\r\n 'referenceMonth' : Yup.number().required(YUP_DEFAULT_ERROR_VALUE),\r\n 'openingDate' : Yup.string().when(['referenceMonth', 'openingDate'], {\r\n is: (referenceMonth, openingDate) => \r\n referenceMonth !== `${new Date(openingDate).getMonth()}`,\r\n then: Yup.string().required('Select right month')\r\n }),\r\n}, [['referenceMonth', 'openingDate']])\r\n * \r\n */\r\n","import React from \"react\";\r\n\r\ninterface IProps {\r\n\ttitleText: string;\r\n\tlogoText?: string | null;\r\n\taccentText?: string | null;\r\n\tsubheadText?: string | null;\r\n\tshowButton?: any;\r\n}\r\nconst WelcomeHeader = (props: IProps) => {\r\n\tconst { titleText, logoText, accentText, subheadText, showButton } = props;\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t

\r\n\t\t\t\t\t{titleText}{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{logoText}\r\n\t\t\t\t\t\t{accentText}\r\n\t\t\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t

{subheadText}

\r\n\t\t\t\t{showButton && showButton}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default WelcomeHeader;\r\n","import React from \"react\";\r\nimport { Card } from \"semantic-ui-react\";\r\nimport { Redirect } from \"react-router\";\r\nimport { useAuth } from \"../../providers/AuthProvider\";\r\n\r\nconst UserProfileDetails = () => {\r\n\tconst { user } = useAuth();\r\n\r\n\tconst renderContent = () => {\r\n\t\tif (user) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tDisplay name: \r\n\t\t\t\t\t\t{user && user.displayName}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tUsername: \r\n\t\t\t\t\t\t{user && user.userName}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tEmail: \r\n\t\t\t\t\t\t{user && user.email}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tOrganization: \r\n\t\t\t\t\t\t{user && user.organization}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tSector: \r\n\t\t\t\t\t\t{user && user.sector}\r\n\t\t\t\t\t\t{user && user.sector === \"Other\" && `: ${user.sectorOther}`}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tPurpose of access: \r\n\t\t\t\t\t\t{user && user.purposeOfAccess}\r\n\t\t\t\t\t\t{user &&\r\n\t\t\t\t\t\t\tuser.purposeOfAccess === \"Other\" &&\r\n\t\t\t\t\t\t\t`: ${user.purposeOfAccessOther}`}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\t} else return ;\r\n\t};\r\n\r\n\treturn <>{renderContent()};\r\n};\r\n\r\nexport default UserProfileDetails;\r\n","import { useEffect, useState } from \"react\";\r\nimport { Button, Card } from \"semantic-ui-react\";\r\nimport { actions, resources } from \"../../shared/Literals\";\r\n\r\nimport Can from \"../../accessControls/Can\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\nimport AccountDetails from \"./AccountDetails\";\r\nimport { useActiveMenu } from \"../../providers/ActiveMenuProvider\";\r\nimport WelcomeHeader from \"../../shared/WelcomeHeader\";\r\nimport UserProfileDetails from \"./UserProfileDetails\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst UserProfile = () => {\r\n\tconst [isEdit, setIsEdit] = useState(false);\r\n\tconst { setActiveItem } = useActiveMenu();\r\n\r\n\tuseEffect(() => {\r\n\t\tsetActiveItem(resources.userProfile.name);\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t setIsEdit(false)}\r\n\t\t\t\t\t\t\t\t\tsize=\"tiny\"\r\n\t\t\t\t\t\t\t\t\tclassName=\"ui right floated\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t setIsEdit(true)}\r\n\t\t\t\t\t\t\t\t\tsize=\"tiny\"\r\n\t\t\t\t\t\t\t\t\tclassName=\"ui right floated\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t{isEdit ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t setIsEdit(false)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"tiny\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"ui right floated\"\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t setIsEdit(true)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"tiny\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"ui right floated\"\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{isEdit ? (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\treturn (\r\n\t\t renderContent()}\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default UserProfile;\r\n","export const data: any[] = [\r\n {\r\n label: \"2 -- Coral reefs\",\r\n options: [\r\n {\r\n id: 2,\r\n value: 2,\r\n label: \"Coral reefs\",\r\n sortOrder: 1,\r\n path: \"2\",\r\n isSub: false,\r\n code: \"2\",\r\n checked: true,\r\n },\r\n {\r\n id: 71,\r\n value: 71,\r\n label: \"Barrier reefs\",\r\n sortOrder: 2,\r\n path: \"2/2.1\",\r\n isSub: true,\r\n code: \"2.1\",\r\n },\r\n {\r\n id: 70,\r\n value: 70,\r\n label: \"Atolls\",\r\n sortOrder: 2,\r\n path: \"2/2.2\",\r\n isSub: true,\r\n code: \"2.2\",\r\n },\r\n {\r\n id: 69,\r\n value: 69,\r\n label: \"Fringing reefs\",\r\n sortOrder: 2,\r\n path: \"2/2.3\",\r\n isSub: true,\r\n code: \"2.3\",\r\n },\r\n {\r\n id: 68,\r\n value: 68,\r\n label: \"Patch reefs\",\r\n sortOrder: 2,\r\n path: \"2/2.4\",\r\n isSub: true,\r\n code: \"2.4\",\r\n },\r\n {\r\n id: 75,\r\n value: 75,\r\n label: \"Other (coral reefs)\",\r\n sortOrder: 2,\r\n path: \"2/2.5\",\r\n isSub: true,\r\n code: \"2.5\",\r\n },\r\n ],\r\n },\r\n {\r\n label: \"3 -- Coastal systems (incl. wetlands)\",\r\n options: [\r\n {\r\n id: 3,\r\n value: 3,\r\n label: \"Coastal systems (incl. wetlands)\",\r\n sortOrder: 1,\r\n path: \"3\",\r\n isSub: false,\r\n code: \"3\",\r\n },\r\n {\r\n id: 67,\r\n value: 67,\r\n label: \"Sand dunes, beaches, rocky shores\",\r\n sortOrder: 2,\r\n path: \"3/3.1\",\r\n isSub: true,\r\n code: \"3.1\",\r\n },\r\n {\r\n id: 76,\r\n value: 76,\r\n label: \"Kelp forests\",\r\n sortOrder: 2,\r\n path: \"3/3.11\",\r\n isSub: true,\r\n code: \"3.11\",\r\n },\r\n {\r\n id: 77,\r\n value: 77,\r\n label: \"Other (coastal systems)\",\r\n sortOrder: 2,\r\n path: \"3/3.12\",\r\n isSub: true,\r\n code: \"3.12\",\r\n },\r\n {\r\n id: 65,\r\n value: 65,\r\n label: \"Tidal marshes\",\r\n sortOrder: 2,\r\n path: \"3/3.2\",\r\n isSub: true,\r\n code: \"3.2\",\r\n },\r\n {\r\n id: 64,\r\n value: 64,\r\n label: \"Salt marshes\",\r\n sortOrder: 2,\r\n path: \"3/3.3\",\r\n isSub: true,\r\n code: \"3.3\",\r\n },\r\n {\r\n id: 63,\r\n value: 63,\r\n label: \"Mangroves\",\r\n sortOrder: 2,\r\n path: \"3/3.4\",\r\n isSub: true,\r\n code: \"3.4\",\r\n },\r\n {\r\n id: 62,\r\n value: 62,\r\n label: \"Lagoons\",\r\n sortOrder: 2,\r\n path: \"3/3.5\",\r\n isSub: true,\r\n code: \"3.5\",\r\n },\r\n {\r\n id: 61,\r\n value: 61,\r\n label: \"Estuaries\",\r\n sortOrder: 2,\r\n path: \"3/3.6\",\r\n isSub: true,\r\n code: \"3.6\",\r\n },\r\n {\r\n id: 60,\r\n value: 60,\r\n label: \"Unvegetated sediment\",\r\n sortOrder: 2,\r\n path: \"3/3.7\",\r\n isSub: true,\r\n code: \"3.7\",\r\n },\r\n {\r\n id: 59,\r\n value: 59,\r\n label: \"Shellfish reefs\",\r\n sortOrder: 2,\r\n path: \"3/3.8\",\r\n isSub: true,\r\n code: \"3.8\",\r\n },\r\n {\r\n id: 66,\r\n value: 66,\r\n label: \"Seagrass beds\",\r\n sortOrder: 2,\r\n path: \"3/3.9\",\r\n isSub: true,\r\n code: \"3.9\",\r\n },\r\n ],\r\n },\r\n];\r\n\r\nexport const userProfileGridHeaderColumns: any[] = [\r\n {\r\n key: \"displayName\",\r\n title: \"Display Name\",\r\n dataKey: \"displayName\",\r\n width: 250,\r\n resizable: true,\r\n sortable: false,\r\n },\r\n { key: \"userName\", title: \"Username\", dataKey: \"userName\", width: 250,\r\n resizable: true,\r\n sortable: false },\r\n {\r\n key: \"email\", title: \"Email\", dataKey: \"email\", width: 300,\r\n resizable: true,\r\n sortable: true, },\r\n {\r\n key: \"registrationDate\",\r\n title: \"Registration Date\",\r\n dataKey: \"registrationDate\",\r\n width: 200,\r\n resizable: true,\r\n sortable: false,\r\n dataType: \"date\"\r\n },\r\n {\r\n key: \"numberOfSignIn\",\r\n title: \"No. Of SignIn\",\r\n dataKey: \"numberOfSignIn\",\r\n width: 100,\r\n resizable: true,\r\n sortable: false,\r\n },\r\n {\r\n key: \"lastSignInDate\",\r\n title: \"Last SignIn Date\",\r\n dataKey: \"lastSignInDate\",\r\n width: 200,\r\n resizable: true,\r\n sortable: false,\r\n dataType: \"date\"\r\n },\r\n { key: \"sector\", title: \"Sector\", dataKey: \"sector\", width: 180,\r\n resizable: true,\r\n sortable: false },\r\n // { key: \"id\", title: \"id\", dataKey: \"id\", width: 200 },\r\n {\r\n key: \"organization\",\r\n title: \"Organization\",\r\n dataKey: \"organization\",\r\n width: 200,\r\n resizable: true,\r\n sortable: false,\r\n },\r\n {\r\n key: \"purposeOfAccess\",\r\n title: \"Purpose Of Access\",\r\n dataKey: \"purposeOfAccess\",\r\n width: 150,\r\n resizable: true,\r\n sortable: false,\r\n },\r\n];","import React from \"react\";\r\nimport { CSVLink } from \"react-csv\";\r\nimport { Button, Card, Progress } from \"semantic-ui-react\";\r\nimport moment from \"moment\";\r\n// import { useFilterQuery } from \"../../providers/FilterQueryProvider\";\r\nimport { useReferenceInfo } from \"../../providers/ReferenceInfoProvider\";\r\nimport { useAuth } from \"../../providers/AuthProvider\";\r\nimport { User } from \"../../models/user\";\r\n\r\ninterface IProp {\r\n\tsortBy: any;\r\n}\r\n\r\nconst UserProfilesButton = (props: IProp) => {\r\n\tconst { currentInfo } = useReferenceInfo();\r\n\tconst { getUsers } = useAuth();\r\n\tconst csvLinkRef = React.useRef();\r\n\tconst [csvData, setCsvData] = React.useState([]);\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [filename, setFilename] = React.useState(\"\");\r\n\r\n\tconst downloadUserProfiles = async () => {\r\n\t\tconst { sortBy } = props;\r\n\t\tsetFilename(\r\n\t\t\t`Esvd_user_profiles_${moment().format(\"Do-MMM-yyyy_HH-mm-ss\")}_${\r\n\t\t\t\tcurrentInfo?.version\r\n\t\t\t}.csv`\r\n\t\t);\r\n\r\n\t\tsetIsLoading(true);\r\n\t\tconst data = await getUsers({\r\n\t\t\tparams: {\r\n\t\t\t\tsortColumn: sortBy.key,\r\n\t\t\t\tisDescend: sortBy.order === \"asc\" ? false : true,\r\n\t\t\t},\r\n\t\t});\r\n\t\tconst dat = data.map((user: User) => {\r\n\t\t\tconst us: any = {};\r\n\t\t\tus[\"Display name\"] = user.displayName;\r\n\t\t\tus[\"Username\"] = user.userName;\r\n\t\t\tus[\"Email\"] = user.email;\r\n\t\t\tus[\"Registration Date\"] =\r\n\t\t\t\tmoment(user.registrationDate) > moment(\"01-Jan-0001\")\r\n\t\t\t\t\t? moment(user.registrationDate).format(\"DD-MM-YYYY HH:mm:ss\")\r\n\t\t\t\t\t: \"\";\r\n\t\t\tus[\"Number Of SignIn\"] = user.numberOfSignIn;\r\n\t\t\tus[\"Last SignIn Date\"] =\r\n\t\t\t\tmoment(user.lastSignInDate) > moment(\"01-Jan-0001\")\r\n\t\t\t\t\t? moment(user.lastSignInDate).format(\"DD-MM-YYYY HH:mm:ss\")\r\n\t\t\t\t\t: \"\";\r\n\t\t\tif (user.sector && user.sector.toLowerCase() === \"other\") {\r\n\t\t\t\tuser.sector = `${user.sectorOther}`;\r\n\t\t\t}\r\n\t\t\tus[\"sector\"] = user.sector;\r\n\t\t\tus[\"Organization\"] = user.organization;\r\n\t\t\tif (\r\n\t\t\t\tuser.purposeOfAccess &&\r\n\t\t\t\tuser.purposeOfAccess.toLowerCase() === \"other\"\r\n\t\t\t) {\r\n\t\t\t\tuser.purposeOfAccess = `${user.purposeOfAccessOther}`;\r\n\t\t\t}\r\n\t\t\tus[\"Purpose Of Access\"] = user.purposeOfAccess;\r\n\t\t\treturn us;\r\n\t\t});\r\n\t\tsetCsvData(dat);\r\n\t\tsetIsLoading(false);\r\n\t\tif (csvLinkRef?.current) {\r\n\t\t\tcsvLinkRef.current.link.click();\r\n\t\t}\r\n\t\t// });\r\n\t};\r\n\r\n\t// const progress = () => {\r\n\t// \tif (count === 0) return 0;\r\n\t// \tlet pro = 0;\r\n\t// \tlet nextOffset = 0;\r\n\t// \twhile (nextOffset < count) {\r\n\t// \t\tpro = Math.ceil(((nextOffset + 1) / count) * 100);\r\n\t// \t\tnextOffset++;\r\n\t// \t}\r\n\t// \treturn pro;\r\n\t// };\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t downloadUserProfiles()}\r\n\t\t\t\tdisabled={isLoading}\r\n\t\t\t\tclassName={`${isLoading ? \"invisible\" : \"\"}`}\r\n\t\t\t/>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default UserProfilesButton;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport Table, { AutoResizer } from \"react-base-table\";\r\nimport \"react-base-table/styles.css\";\r\nimport { useAuth } from \"../../providers/AuthProvider\";\r\nimport { User } from \"../../models/user\";\r\nimport { userProfileGridHeaderColumns } from \"../../tests/data\";\r\nimport moment from \"moment\";\r\nimport { Card, Dimmer, Header, Loader } from \"semantic-ui-react\";\r\nimport UserProfilesButton from \"./UserProfilesButton\";\r\nimport { sortReactTableData } from \"../../EsvdFunctions\";\r\nimport LoadingOverlay, { LoadingButton } from \"../../shared/LoadingOverlay\";\r\n\r\nconst UserProfileTable = () => {\r\n\tconst { getUsers } = useAuth();\r\n\tconst [users, setUsers] = useState([]);\r\n\tconst [isDescend, setisDescend] = useState(false);\r\n\tconst [isLoading, setisLoading] = useState(false);\r\n\tconst [sortBy, setsortBy] = useState({\r\n\t\tkey: \"registrationDate\",\r\n\t\torder: \"asc\",\r\n\t});\r\n\tconst [bodyArray, setBodyArray] = useState([]);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetisLoading(true);\r\n\t\t(async () => {\r\n\t\t\tvar filters = await getUsers({\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tsortColumn: sortBy.key,\r\n\t\t\t\t\tisDescend: sortBy.order === \"asc\" ? false : true,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\tconst items = filters.map((user: User, i: number) => {\r\n\t\t\t\tuser.id = `${i + 1}`;\r\n\t\t\t\tuser.registrationDate = moment(\"01-Jan-0001\")\r\n\t\t\t\t\t? moment(user.registrationDate).format(\"D-MMM-yyyy HH:mm:ss\")\r\n\t\t\t\t\t: \"\";\r\n\t\t\t\tuser.lastSignInDate =\r\n\t\t\t\t\tmoment(user.lastSignInDate) > moment(\"01-Jan-0001\")\r\n\t\t\t\t\t\t? moment(user.lastSignInDate).format(\"D-MMM-yyyy HH:mm:ss\")\r\n\t\t\t\t\t\t: \"\";\r\n\t\t\t\tif (user.sector && user.sector.toLowerCase() === \"other\") {\r\n\t\t\t\t\tuser.sector = `${user.sectorOther}`;\r\n\t\t\t\t}\r\n\t\t\t\tif (\r\n\t\t\t\t\tuser.purposeOfAccess &&\r\n\t\t\t\t\tuser.purposeOfAccess.toLowerCase() === \"other\"\r\n\t\t\t\t) {\r\n\t\t\t\t\tuser.purposeOfAccess = `${user.purposeOfAccessOther}`;\r\n\t\t\t\t}\r\n\t\t\t\treturn user;\r\n\t\t\t});\r\n\t\t\tsetUsers(items);\r\n\t\t\tsetBodyArray(items);\r\n\t\t\tsetisLoading(false);\r\n\t\t})();\r\n\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {};\r\n\t}, [users]);\r\n\r\n\tuseEffect(() => {\r\n\t\t//sort the items without returning to the server since all users are loaded at page load\r\n\t\tconst { key, order } = sortBy;\r\n\t\tsetisDescend(order === \"asc\" ? false : true);\r\n\t\tconst sorted = sortReactTableData(isDescend, users, key);\r\n\t\tsetUsers(sorted);\r\n\t\tsetBodyArray(sorted);\r\n\t\treturn () => {};\r\n\t}, [sortBy]);\r\n\tconst onColumnSort = async (sort: any) => {\r\n\t\tsetsortBy(sort);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tUser Profiles\r\n\t\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{({ width, height }) => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\nexport default UserProfileTable;\r\n","import React from \"react\";\r\nimport { Grid } from \"semantic-ui-react\";\r\nimport { actions, resources } from \"../../shared/Literals\";\r\n\r\nimport FilterQueryList from \"./FilterQueryList\";\r\nimport FilterQueryButton from \"./FilterQueryButton\";\r\nimport Can from \"../../accessControls/Can\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\n// import { FilterQueryProvider } from \"../../providers/FilterQueryProvider\";\r\nimport UserProfileTable from \"./UserProfileTable\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst UserProfileDownloadsBoard = () => {\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\t// render() {\r\n\treturn (\r\n\t\t renderContent()}\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t);\r\n\t// }\r\n};\r\n\r\nexport default UserProfileDownloadsBoard; // connect(null, { fetchFilterQueries })(UserProfileDownloadsBoard);\r\n","import React from \"react\";\r\nimport { Card } from \"semantic-ui-react\";\r\n\r\nconst StudiesReadMe = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t

Read Me

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tEnter and save information about a study and its valuations in the\r\n\t\t\t\t\t\tcards to the left.\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tClicking on a saved study in the list in the card below loads the\r\n\t\t\t\t\t\tstudy and its valuation for continued editing.\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tTo make a study and valuations become publicly available, mark a\r\n\t\t\t\t\t\tstudy ‘complete’ to publish.\r\n\t\t\t\t\t
  • \r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default StudiesReadMe;\r\n","import React from \"react\";\r\nimport { Grid, Container } from \"semantic-ui-react\";\r\nimport { connect } from \"react-redux\";\r\nimport { actions, initStudy, resources } from \"../../shared/Literals\";\r\nimport StudyEntry from \"./StudyEntry\";\r\nimport StudyList from \"./StudyList\";\r\nimport { Study } from \"../../models/Study\";\r\nimport Valuations from \"./Valuations\";\r\nimport StudiesReadMe from \"./StudiesReadMe\";\r\n// import {\r\n// \tfetchUserStudies,\r\n// \tsetIsEditor,\r\n// \tresetStudies,\r\n// } from \"../../actions/studyActions\";\r\nimport Can from \"../../accessControls/Can\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\nimport { useValuations } from \"../../providers/ValuationsProvider\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\n// interface IProps {\r\n// \tfetchUserStudies: Function;\r\n// \tresetStudies: Function;\r\n// \tsetIsEditor: Function;\r\n// }\r\n\r\n// interface IState {\r\n// \tselectedStudy: Study;\r\n// \tclearValuationUi: boolean;\r\n// }\r\nconst StudyBoard = () => {\r\n\tconst [studies, setStudies] = React.useState([]);\r\n\tconst [selectedStudy, setSelectedStudy] = React.useState(initStudy);\r\n\tconst { setIsEditor, getUserStudies } = useValuations();\r\n\r\n\tReact.useEffect(() => {\r\n\t\tgetUserStudies();\r\n\t\tsetIsEditor(false);\r\n\t}, []);\r\n\t// state: IState = {\r\n\t// \tselectedStudy: initStudy,\r\n\t// \tclearValuationUi: false, //this notifies the Valuations component to reset the fields and show list if not already showing\r\n\t// };\r\n\r\n\t// componentDidMount() {\r\n\t// \t// this.props.resetStudies();\r\n\t// \t// this.props.setIsEditor();\r\n\t// \t// this.props.fetchUserStudies();\r\n\t// \tthis.setSelectedStudy(initStudy);\r\n\t// }\r\n\t// setSelectedStudy = (study: Study) => {\r\n\t// \tthis.setState(() => ({ selectedStudy: study }));\r\n\t// };\r\n\r\n\tconst clearStudy = () => {\r\n\t\tsetSelectedStudy(initStudy);\r\n\t\t// this.setState(() => ({\r\n\t\t// \tselectedStudy: initStudy,\r\n\t\t// \tclearValuationUi: true,\r\n\t\t// }));\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\t// const { selectedStudy, clearValuationUi } = this.state;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t setSelectedStudy(study)}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t// \tthis.setState(() => ({ clearValuationUi: false }))\r\n\t\t\t\t\t\t// }\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t setSelectedStudy(study)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t// \tthis.setState(() => ({ clearValuationUi: false }))\r\n\t\t\t\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\treturn (\r\n\t\t renderContent()}\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t); // {this.renderContent()};\r\n};\r\n\r\n// const mapStateToProps = (state: any) => {\r\n// return { user: state.user };\r\n// };\r\n\r\nexport default StudyBoard;\r\n\r\n// connect(null, { fetchUserStudies, setIsEditor, resetStudies })(\r\n// \tStudyBoard\r\n// );\r\n","import React from \"react\";\r\nimport { ValuationsProvider } from \"../../providers/ValuationsProvider\";\r\n\r\nimport StudyBoard from \"./StudyBoard\";\r\n\r\nconst StudyBoardWrapper = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default StudyBoardWrapper;\r\n","import React, { Fragment } from \"react\";\r\nimport Dropzone from \"react-dropzone\";\r\nimport { useField } from \"formik\";\r\nimport { Button, Form, Label, List } from \"semantic-ui-react\";\r\n\r\nexport interface IFile {\r\n\tlastModified?: number;\r\n\tlastModifiedDate?: string;\r\n\tname: string;\r\n\tpath?: string;\r\n\tpreview?: string;\r\n\ttype?: string;\r\n}\r\n\r\nconst DropZoneField = ({\r\n\tname,\r\n\tonSelectionChange,\r\n\tvalue,\r\n\taccept,\r\n\tcustomHeight = false,\r\n}: {\r\n\tname: any;\r\n\tonSelectionChange: Function;\r\n\taccept: string | null;\r\n\tcustomHeight: boolean;\r\n\tvalue: File[];\r\n}) => {\r\n\tlet files: File[] = value;\r\n\r\n\tconst removeFile = (index: number, e: any) => {\r\n\t\te.preventDefault();\r\n\t\tArray.isArray(files) &&\r\n\t\t\tonSelectionChange(files.filter((val: any, i: number) => i !== index));\r\n\t};\r\n\treturn (\r\n\t\t
\r\n\t\t\t{files && Array.isArray(files) && files.length < 2 && (\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t// do nothing if no files\r\n\t\t\t\t\t\t\t\tif (acceptedFiles.length === 0) {\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tfiles = [...files, ...acceptedFiles];\r\n\t\t\t\t\t\t\t\tonSelectionChange &&\r\n\t\t\t\t\t\t\t\t\tonSelectionChange(\r\n\t\t\t\t\t\t\t\t\t\tfiles.map(\r\n\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\tfl: File //fl\r\n\t\t\t\t\t\t\t\t\t\t\t) => fl\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t{({ getRootProps, getInputProps }) => (\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{(!files || files.length === 0) && (\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\t\t\t\t\tClick here to select a file from your computer containing\r\n\t\t\t\t\t\t\t\t\t\t\tyour dataset\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\t{files && Array.isArray(files) && files.length > 0 && (\r\n\t\t\t\t//
\r\n\t\t\t\t\r\n\t\t\t\t\t{files.map((file, i) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{file.name}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t))}\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t
\r\n\t);\r\n};\r\n\r\ninterface Props {\r\n\tname: string;\r\n\tonSelectionChange: Function;\r\n\tcustomHeight: boolean;\r\n\tvalue: File[];\r\n\taccept: string | null;\r\n}\r\n\r\nconst EsvdDropZoneField = (props: Props) => {\r\n\tconst [field, meta] = useField(props.name);\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t{meta.touched && meta.error ? (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{meta.error}\r\n\t\t\t\t\t\r\n\t\t\t\t) : null}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default EsvdDropZoneField;\r\n","import React from \"react\";\r\n\r\ninterface IProps {\r\n\tinvalidEntries: any | any[];\r\n\twithJoin?: boolean;\r\n\tdelimiter?: string;\r\n\tisFatal?: boolean;\r\n}\r\nconst InvalidItems = (props: IProps) => {\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
  • \r\n\t\t\t\t{props.withJoin\r\n\t\t\t\t\t? Object.keys(props.invalidEntries)\r\n\t\t\t\t\t\t\t.map(\r\n\t\t\t\t\t\t\t\t(key: any, i: number) => `${key}: ${props.invalidEntries[key]}`\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t.join(props.delimiter || \"; \")\r\n\t\t\t\t\t: Object.keys(props.invalidEntries).map((key: any, i: number) => (\r\n\t\t\t\t\t\t\t
  • {`ValueID: ${key}: ${props.invalidEntries[key]}`}
  • \r\n\t\t\t\t\t ))}\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default InvalidItems;\r\n","import React, { useContext } from \"react\";\r\n// import * as signalR from \"@microsoft/signalr\";\r\n// import { EsvdDataStatistics } from \"../models/EsvdDataStatistics\";\r\n// import agent from \"../api/agent\";\r\n\r\ninterface IValue {\r\n\tsetUploading: Function;\r\n\tsetFileName: Function;\r\n\tuploading: boolean | undefined;\r\n\tesvdInserted?: number;\r\n\tesvdUpdated?: number;\r\n\tuploadedEsvdCount?: number;\r\n\t// esvdsInFile?: number;\r\n\t// setEsvdsInFile: Function;\r\n\tloading: boolean;\r\n\tsetLoading: Function;\r\n\tfilename: string | undefined;\r\n}\r\n\r\nconst UploadInfoContext = React.createContext(null);\r\n\r\n// The UploadInfoProvider is responsible for UploadInfo management\r\nconst UploadInfoProvider = ({ children }: { children: any }) => {\r\n\tconst [uploading, setUploading] = React.useState(false);\r\n\tconst [filename, setFileName] = React.useState();\r\n\tconst [loading, setLoading] = React.useState(false);\r\n\tconst [esvdInserted] = React.useState(0);\r\n\tconst [uploadedEsvdCount] = React.useState(0);\r\n\r\n\tconst [esvdUpdated] = React.useState(0);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useUploadInfo = () => {\r\n\tconst uploadInfo = useContext(UploadInfoContext);\r\n\tif (uploadInfo == null) {\r\n\t\tthrow new Error(\"useUploadInfo() called outside of a uploadInfo hook?\");\r\n\t}\r\n\treturn uploadInfo;\r\n};\r\n\r\nexport { UploadInfoProvider, useUploadInfo };\r\n","import React, { useEffect } from \"react\";\r\nimport { Card, Header, Statistic } from \"semantic-ui-react\";\r\nimport * as XLSX from \"xlsx\";\r\nimport moment from \"moment\";\r\nimport { EsvdColumnMapping, ExcelHeaders } from \"../../shared/Literals\";\r\nimport InvalidItems from \"./InvalidItems\";\r\nimport { useUploadInfo } from \"../../providers/UploadInfoProvider\";\r\n\r\nconst ValidateDataset = (props: any) => {\r\n\tconst { uploading, loading, setLoading, filename, setFileName } =\r\n\t\tuseUploadInfo();\r\n\tconst { file, setData, data, setIsValidData, isValidData } = props;\r\n\r\n\tconst [duplicateValues, setDuplicateValues] = React.useState(null);\r\n\tconst [noEsvdMasterSheet, setNoEsvdMasterSheet] =\r\n\t\tReact.useState(false);\r\n\tconst [invalidCodedDateEntries, setInvalidCodedDateEntries] =\r\n\t\tReact.useState(null);\r\n\tconst [invalidReviewdDateEntries, setInvalidReviewdDateEntries] =\r\n\t\tReact.useState(null);\r\n\r\n\tconst [noStudyIdEntries, setNoStudyIdEntries] = React.useState(null);\r\n\tconst [noValueIdEntries, setNoValueIdEntries] = React.useState(null);\r\n\r\n\tconst [invalidLatLngEntries, setInvalidLatLngEntries] =\r\n\t\tReact.useState(null);\r\n\r\n\tconst [dupBiomesCodes, setDupBiomesCodes] = React.useState(null);\r\n\r\n\tconst [dupTEEBsCodes, setDupTEEBsCodes] = React.useState(null);\r\n\r\n\tconst [dupTEEBsubCodes, setDupTEEBsubCodes] = React.useState(null);\r\n\r\n\tconst [dupCICESCodes, setDupCICESCodes] = React.useState(null);\r\n\tconst [dupEcosystemsCodes, setDupEcosystemsCodes] = React.useState(null);\r\n\tconst [dupEcozonesCodes, setDupEcozonesCodes] = React.useState(null);\r\n\tconst [dupSeeasCodes, setDupSeeasCodes] = React.useState(null);\r\n\tconst [labelColumnErrors, setLabelColumnErrors] = React.useState<\r\n\t\tany[] | null\r\n\t>(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tresetDups();\r\n\t\tif (file) {\r\n\t\t\tsetLoading(true);\r\n\t\t\tsetFileName(file.name);\r\n\t\t\tprocess(file);\r\n\t\t} else {\r\n\t\t\tsetFileName(\"\");\r\n\t\t}\r\n\t}, [file]);\r\n\r\n\tconst process = (file: any) => {\r\n\t\ttry {\r\n\t\t\tsetLoading(true);\r\n\t\t\t/* Boilerplate to set up FileReader */\r\n\t\t\tconst reader = new FileReader();\r\n\r\n\t\t\tconst rABS = !!reader.readAsBinaryString;\r\n\t\t\treader.onload = (e: any) => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t/* Parse data */\r\n\t\t\t\t\tconst bstr = e.target.result;\r\n\r\n\t\t\t\t\tconst wb = XLSX.read(bstr, {\r\n\t\t\t\t\t\ttype: rABS ? \"binary\" : \"array\",\r\n\t\t\t\t\t\tcellText: false,\r\n\t\t\t\t\t\tcellDates: true,\r\n\t\t\t\t\t});\r\n\t\t\t\t\t// /* Get first worksheet */\r\n\t\t\t\t\t// const wsname = wb.SheetNames[\"ESVD\"];\r\n\t\t\t\t\t// if (wsname !== \"maindata\") {\r\n\t\t\t\t\t// \tthrow new Error(\"First sheet in the excel must be 'maindata.'\");\r\n\t\t\t\t\t// }\r\n\t\t\t\t\tconst esvdSheetName =\r\n\t\t\t\t\t\twb.SheetNames.find((x) => x.startsWith(\"ESVD MASTER\")) || undefined;\r\n\t\t\t\t\tif (esvdSheetName === undefined) {\r\n\t\t\t\t\t\tsetIsValidData(false);\r\n\t\t\t\t\t\tsetNoEsvdMasterSheet(true);\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet labelColumnError: any[] | null = null;\r\n\t\t\t\t\tconst excelSheetHeaders: string[] = wb.SheetNames;\r\n\t\t\t\t\tconst codeSheetHeaders: string[] = Object.keys(ExcelHeaders).map(\r\n\t\t\t\t\t\t(k) => k\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tfor (const ch of codeSheetHeaders) {\r\n\t\t\t\t\t\tconst srch: string | undefined =\r\n\t\t\t\t\t\t\tch === \"esvds\"\r\n\t\t\t\t\t\t\t\t? wb.SheetNames.find((x) => x.startsWith(\"ESVD MASTER\"))\r\n\t\t\t\t\t\t\t\t: excelSheetHeaders.find(\r\n\t\t\t\t\t\t\t\t\t\t(x) =>\r\n\t\t\t\t\t\t\t\t\t\t\tExcelHeaders[`${ch}`].label.toLowerCase().trim() ===\r\n\t\t\t\t\t\t\t\t\t\t\tx.toLowerCase().trim()\r\n\t\t\t\t\t\t\t\t );\r\n\r\n\t\t\t\t\t\tif (!srch) {\r\n\t\t\t\t\t\t\tif (!ch.startsWith(\"ESVD MASTER\")) {\r\n\t\t\t\t\t\t\t\tif (!labelColumnError) {\r\n\t\t\t\t\t\t\t\t\t//initialize labelColumnError\r\n\t\t\t\t\t\t\t\t\tlabelColumnError = [];\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tlabelColumnError.push(\r\n\t\t\t\t\t\t\t\t\t`Sheet with label \"${\r\n\t\t\t\t\t\t\t\t\t\tExcelHeaders[`${ch}`].label\r\n\t\t\t\t\t\t\t\t\t}\" is missing from the upload file.`\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t//check the column headers inside the selected sheet if it exists\r\n\t\t\t\t\t\t\tconst errorColumns = checkColumnHeaders(\r\n\t\t\t\t\t\t\t\twb,\r\n\t\t\t\t\t\t\t\tsrch,\r\n\t\t\t\t\t\t\t\tExcelHeaders[`${ch}`].columns\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tif (errorColumns) {\r\n\t\t\t\t\t\t\t\t//initialize labelColumnError\r\n\t\t\t\t\t\t\t\tif (!labelColumnError) {\r\n\t\t\t\t\t\t\t\t\tlabelColumnError = [];\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tlabelColumnError.push(\r\n\t\t\t\t\t\t\t\t\t`Sheet with label ${srch} is missing the following column headings: ${errorColumns.join(\r\n\t\t\t\t\t\t\t\t\t\t\", \"\r\n\t\t\t\t\t\t\t\t\t)}. If they are included, they must be the top row.`\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (labelColumnError) {\r\n\t\t\t\t\t\tsetIsValidData(false);\r\n\t\t\t\t\t\tsetLabelColumnErrors(labelColumnError);\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst mapped = getESVDJson(wb, esvdSheetName.trim());\r\n\r\n\t\t\t\t\t//get stats on data\r\n\t\t\t\t\tconst items: any = {};\r\n\t\t\t\t\tconst duplicateValueIds: any = {};\r\n\t\t\t\t\tconst invalidCodedDate: any = {};\r\n\t\t\t\t\tconst invalidReviewedDate: any = {};\r\n\t\t\t\t\tconst noValueId: any = {};\r\n\t\t\t\t\tconst noStudyId: any = {};\r\n\t\t\t\t\tconst duplicateBiomesCodes: any = {};\r\n\t\t\t\t\tconst duplicateEcosystemsCodes: any = {};\r\n\t\t\t\t\tconst duplicateEcozonesCodes: any = {};\r\n\t\t\t\t\tconst duplicateTEEBsCodes: any = {};\r\n\t\t\t\t\tconst duplicateTEEBsubCodes: any = {};\r\n\t\t\t\t\tconst duplicateCICESCodes: any = {};\r\n\t\t\t\t\tconst duplicateSeeasCodes: any = {};\r\n\t\t\t\t\tconst invalidLatLng: any = {};\r\n\t\t\t\t\tmapped.forEach((x: any, i: number) => {\r\n\t\t\t\t\t\t//excel row index\r\n\t\t\t\t\t\tconst rowIndex = i + 1 + 1; //first 1 caters for header and second 1 caters forzero-based index\r\n\r\n\t\t\t\t\t\t//check for unique ValueIds\r\n\t\t\t\t\t\tif (x.valueid) {\r\n\t\t\t\t\t\t\tif (items[`${x.valueid}`]) {\r\n\t\t\t\t\t\t\t\titems[`${x.valueid}`].push(rowIndex);\r\n\t\t\t\t\t\t\t\t//mark value as a duplicate\r\n\t\t\t\t\t\t\t\tduplicateValueIds[`${x.valueid}`] =\r\n\t\t\t\t\t\t\t\t\t`ValueID: ${x.valueid}, Rows:` + items[`${x.valueid}`];\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\titems[`${x.valueid}`] = [rowIndex];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check for duplicate biome codes in one cell\r\n\t\t\t\t\t\tif (x.biomecode) {\r\n\t\t\t\t\t\t\tconst biomes: string[] = [];\r\n\t\t\t\t\t\t\tconst codeSplit = x.biomecode.toString().split(\";\");\r\n\t\t\t\t\t\t\tcodeSplit.forEach((arr: string) => {\r\n\t\t\t\t\t\t\t\tif (biomes.includes(arr.trim())) {\r\n\t\t\t\t\t\t\t\t\t//means it's duplicate\r\n\t\t\t\t\t\t\t\t\tif (!duplicateBiomesCodes[`${x.valueid}`]) {\r\n\t\t\t\t\t\t\t\t\t\t// \tduplicateBiomesCodes[`${x.valueid}`].push(arr.trim());\r\n\t\t\t\t\t\t\t\t\t\t// } else {\r\n\t\t\t\t\t\t\t\t\t\tduplicateBiomesCodes[`${x.valueid}`] = [arr.trim()];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tbiomes.push(arr.trim());\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t//join after removing duplicates if any\r\n\t\t\t\t\t\t\tx.biomecode = biomes.join(\"; \");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check for duplicate Ecozone codes in one cell\r\n\t\t\t\t\t\tif (x.ecozonecode) {\r\n\t\t\t\t\t\t\tconst codes: string[] = [];\r\n\t\t\t\t\t\t\tconst codeSplit = x.ecozonecode.toString().split(\";\");\r\n\t\t\t\t\t\t\tcodeSplit.forEach((arr: string) => {\r\n\t\t\t\t\t\t\t\tif (codes.includes(arr.trim())) {\r\n\t\t\t\t\t\t\t\t\tif (!duplicateEcozonesCodes[`${x.valueid}`]) {\r\n\t\t\t\t\t\t\t\t\t\t// \tduplicateEcozonesCodes[`${x.valueid}`].push(arr.trim());\r\n\t\t\t\t\t\t\t\t\t\t// } else {\r\n\t\t\t\t\t\t\t\t\t\tduplicateEcozonesCodes[`${x.valueid}`] = [arr.trim()];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tcodes.push(arr.trim());\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t//join after removing duplicates if any\r\n\t\t\t\t\t\t\tx.ecozonecode = codes.join(\"; \");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check for duplicate Ecosystem codes in one cell\r\n\t\t\t\t\t\tif (x.ecosystemcode) {\r\n\t\t\t\t\t\t\tconst codes: string[] = [];\r\n\t\t\t\t\t\t\tconst codeSplit = x.ecosystemcode.toString().split(\";\");\r\n\t\t\t\t\t\t\tcodeSplit.forEach((arr: string) => {\r\n\t\t\t\t\t\t\t\tif (codes.includes(arr.trim())) {\r\n\t\t\t\t\t\t\t\t\tif (!duplicateEcosystemsCodes[`${x.valueid}`]) {\r\n\t\t\t\t\t\t\t\t\t\t// \tduplicateEcosystemsCodes[`${x.valueid}`].push(arr.trim());\r\n\t\t\t\t\t\t\t\t\t\t// } else {\r\n\t\t\t\t\t\t\t\t\t\tduplicateEcosystemsCodes[`${x.valueid}`] = [arr.trim()];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tcodes.push(arr.trim());\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t//join after removing duplicates if any\r\n\t\t\t\t\t\t\tx.ecosystemcode = codes.join(\"; \");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check for duplicate teebs codes in one cell\r\n\t\t\t\t\t\tcheckDuplicateCodes(\r\n\t\t\t\t\t\t\tx,\r\n\t\t\t\t\t\t\t\"EcosystemServiceCode\".toLocaleLowerCase(),\r\n\t\t\t\t\t\t\tduplicateTEEBsCodes\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t//check for duplicate sub teebs codes in one cell\r\n\t\t\t\t\t\tcheckDuplicateCodes(\r\n\t\t\t\t\t\t\tx,\r\n\t\t\t\t\t\t\t\"EcosystemSubServiceCode\".toLocaleLowerCase(),\r\n\t\t\t\t\t\t\tduplicateTEEBsubCodes\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t//check for duplicate Cices codes in one cell\r\n\t\t\t\t\t\tcheckDuplicateCodes(\r\n\t\t\t\t\t\t\tx,\r\n\t\t\t\t\t\t\t\"CicesCode\".toLocaleLowerCase(),\r\n\t\t\t\t\t\t\tduplicateCICESCodes\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tcheckDuplicateCodes(\r\n\t\t\t\t\t\t\tx,\r\n\t\t\t\t\t\t\t\"SeeaCode\".toLocaleLowerCase(),\r\n\t\t\t\t\t\t\tduplicateSeeasCodes\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t//check for valid coded date\r\n\t\t\t\t\t\tif (x.codeddate) {\r\n\t\t\t\t\t\t\tlet cdate = moment(x.codeddate, \"DD-MM-YYYY\", true);\r\n\t\t\t\t\t\t\t!cdate.isValid() &&\r\n\t\t\t\t\t\t\t\t(invalidCodedDate[\r\n\t\t\t\t\t\t\t\t\t`${x.valueid}`\r\n\t\t\t\t\t\t\t\t] = `${x.codeddate} at row: ${rowIndex}`);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check for valid review date\r\n\t\t\t\t\t\tif (x.revieweddate) {\r\n\t\t\t\t\t\t\tlet rdate = moment(x.revieweddate, \"DD-MM-YYYY\", true);\r\n\t\t\t\t\t\t\t!rdate.isValid() &&\r\n\t\t\t\t\t\t\t\t(invalidReviewedDate[\r\n\t\t\t\t\t\t\t\t\t`${x.valueid}`\r\n\t\t\t\t\t\t\t\t] = `${x.revieweddate} at row: ${rowIndex}`);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check if studyid doesn't exist\r\n\t\t\t\t\t\tif (!x.studyid) {\r\n\t\t\t\t\t\t\tnoStudyId[`${x.valueid}`] = `row ${rowIndex}`;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check if valueid doesn't exist\r\n\t\t\t\t\t\tif (!x.valueid) {\r\n\t\t\t\t\t\t\tnoValueId[`${rowIndex}`] = `Row# ${rowIndex}`;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check validity of lat/lng\r\n\t\t\t\t\t\t//The numbers are in decimal degrees format and range from -90 to 90 for latitude and -180 to 180 for longitude.\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\tx.latitude > 90 ||\r\n\t\t\t\t\t\t\tx.latitude < -90 ||\r\n\t\t\t\t\t\t\tx.longitude > 180 ||\r\n\t\t\t\t\t\t\tx.longitude < -180\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tinvalidLatLng[\r\n\t\t\t\t\t\t\t\t`${x.valueid}`\r\n\t\t\t\t\t\t\t] = `latitude: ${x.latitude}, longitude: ${x.longitude}`;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (Object.keys(invalidLatLng).length > 0) {\r\n\t\t\t\t\t\tsetInvalidLatLngEntries(invalidLatLng);\r\n\t\t\t\t\t\tsetIsValidData(false);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetInvalidLatLngEntries(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateValueIds).length > 0) {\r\n\t\t\t\t\t\tsetDuplicateValues(duplicateValueIds);\r\n\t\t\t\t\t\tsetIsValidData(false);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDuplicateValues(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(invalidCodedDate).length > 0) {\r\n\t\t\t\t\t\tsetInvalidCodedDateEntries(invalidCodedDate);\r\n\t\t\t\t\t\tsetIsValidData(false);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetInvalidCodedDateEntries(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(invalidReviewedDate).length > 0) {\r\n\t\t\t\t\t\tsetInvalidReviewdDateEntries(invalidReviewedDate);\r\n\t\t\t\t\t\tsetIsValidData(false);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetInvalidReviewdDateEntries(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(noStudyId).length > 0) {\r\n\t\t\t\t\t\tsetNoStudyIdEntries(noStudyId);\r\n\t\t\t\t\t\tsetIsValidData(false);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetNoStudyIdEntries(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(noValueId).length > 0) {\r\n\t\t\t\t\t\tsetNoValueIdEntries(noValueId);\r\n\t\t\t\t\t\tsetIsValidData(false);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetNoValueIdEntries(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateBiomesCodes).length > 0) {\r\n\t\t\t\t\t\tsetDupBiomesCodes(duplicateBiomesCodes);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDupBiomesCodes(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateEcozonesCodes).length > 0) {\r\n\t\t\t\t\t\tsetDupEcozonesCodes(duplicateEcozonesCodes);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDupEcozonesCodes(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateEcosystemsCodes).length > 0) {\r\n\t\t\t\t\t\tsetDupEcosystemsCodes(duplicateEcosystemsCodes);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDupEcosystemsCodes(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateTEEBsCodes).length > 0) {\r\n\t\t\t\t\t\tsetDupTEEBsCodes(duplicateTEEBsCodes);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDupTEEBsCodes(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateTEEBsubCodes).length > 0) {\r\n\t\t\t\t\t\tsetDupTEEBsubCodes(duplicateTEEBsubCodes);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDupTEEBsubCodes(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateCICESCodes).length > 0) {\r\n\t\t\t\t\t\tsetDupCICESCodes(duplicateCICESCodes);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDupCICESCodes(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateSeeasCodes).length > 0) {\r\n\t\t\t\t\t\tsetDupSeeasCodes(duplicateSeeasCodes);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDupSeeasCodes(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst jsonDataset: any = {};\r\n\t\t\t\t\tjsonDataset.esvds = mapped;\r\n\r\n\t\t\t\t\t//StudyBibliographies\r\n\t\t\t\t\tlet temp: any = {};\r\n\t\t\t\t\tmapped.forEach((m) => {\r\n\t\t\t\t\t\tif (!temp[`${m.studyid}`]) {\r\n\t\t\t\t\t\t\ttemp[`${m.studyid}`] = {\r\n\t\t\t\t\t\t\t\tstudyid: m.studyid,\r\n\t\t\t\t\t\t\t\tauthors: m.authors,\r\n\t\t\t\t\t\t\t\tyear: m.year,\r\n\t\t\t\t\t\t\t\ttitle: m.title,\r\n\t\t\t\t\t\t\t\treference: m.reference,\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tjsonDataset.studybibliographies = Object.values(temp);\r\n\r\n\t\t\t\t\t//ScaleOfStudySites\r\n\t\t\t\t\ttemp = {};\r\n\t\t\t\t\tmapped.forEach((m) => {\r\n\t\t\t\t\t\tif (!temp[`${m.scaleofstudysitecode}`]) {\r\n\t\t\t\t\t\t\ttemp[`${m.scaleofstudysitecode}`] = {\r\n\t\t\t\t\t\t\t\tcode: m.scaleofstudysitecode,\r\n\t\t\t\t\t\t\t\tname: m.scaleofstudysitetext,\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tjsonDataset.scaleOfstudysites = Object.values(temp);\r\n\r\n\t\t\t\t\tjsonDataset.ecosystemconditions = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tExcelHeaders.ecosystemcondition.label\r\n\t\t\t\t\t);\r\n\t\t\t\t\tjsonDataset.cices = getExcelTabJson(wb, ExcelHeaders.cices.label);\r\n\r\n\t\t\t\t\tjsonDataset.biomesecosystems = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tExcelHeaders.biomes.label\r\n\t\t\t\t\t);\r\n\t\t\t\t\tjsonDataset.biomesecozones = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tExcelHeaders.biomesV2.label\r\n\t\t\t\t\t);\r\n\t\t\t\t\tjsonDataset.seeas = getExcelTabJson(wb, ExcelHeaders.seeas.label);\r\n\t\t\t\t\tjsonDataset.teebs = getExcelTabJson(wb, ExcelHeaders.teebs.label);\r\n\t\t\t\t\tjsonDataset.valuationmethods = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tExcelHeaders.valuationmethods.label\r\n\t\t\t\t\t);\r\n\t\t\t\t\tjsonDataset.continents = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tExcelHeaders.continents.label\r\n\t\t\t\t\t);\r\n\t\t\t\t\tjsonDataset.protectionstatus = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tExcelHeaders.protectionstatus.label\r\n\t\t\t\t\t);\r\n\t\t\t\t\tjsonDataset.countries = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tExcelHeaders.countries.label\r\n\t\t\t\t\t);\r\n\t\t\t\t\tjsonDataset.currencies = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tExcelHeaders.currencies.label\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tjsonDataset.valueMeasure = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tExcelHeaders.valueMeasure.label\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tjsonDataset.valueChange = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tExcelHeaders.valueChange.label\r\n\t\t\t\t\t);\r\n\t\t\t\t\t// ScaleOfStudySites; from Scale_Text column in ESVD\r\n\r\n\t\t\t\t\t/* Update state */\r\n\t\t\t\t\tsetData({\r\n\t\t\t\t\t\tuploaddata: jsonDataset,\r\n\t\t\t\t\t\tesvdCount: mapped.length,\r\n\t\t\t\t\t\tfilename: file.name,\r\n\t\t\t\t\t});\r\n\t\t\t\t} catch (err: any) {\r\n\t\t\t\t\t// setLoading(false);\r\n\t\t\t\t}\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t};\r\n\t\t\t// const file = this.state.file;\r\n\t\t\tif (rABS) reader.readAsBinaryString(file);\r\n\t\t\telse reader.readAsArrayBuffer(file);\r\n\t\t} catch (err: any) {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getESVDJson(wb: XLSX.WorkBook, sheetName: string) {\r\n\t\tconst ws = wb.Sheets[sheetName];\r\n\t\t/* Convert array of arrays */\r\n\t\t//https://docs.sheetjs.com/docs/api/utilities/\r\n\t\tconst dat = XLSX.utils.sheet_to_json(ws, {\r\n\t\t\t// header: 1,\r\n\t\t\tblankrows: false,\r\n\t\t\traw: true,\r\n\t\t\tdefval: \"\",\r\n\t\t\tdateNF: 'd\"/\"m\"/\"yyyy',\r\n\t\t\t// range: 1000,\r\n\t\t});\r\n\r\n\t\t// remove rows without valueIds\r\n\t\tconst filtered = dat.filter((x: any) => x.ValueID || x.StudyID);\r\n\r\n\t\tconst mapped = filtered.map((row: any, i) => {\r\n\t\t\tconst item: any = {};\r\n\t\t\tObject.entries(EsvdColumnMapping).map(([key, value]) => {\r\n\t\t\t\titem[`${value.toLocaleLowerCase()}`] = row[key];\r\n\t\t\t});\r\n\t\t\treturn item;\r\n\t\t});\r\n\t\treturn mapped;\r\n\t}\r\n\r\n\tfunction getExcelTabJson(wb: XLSX.WorkBook, sheetName: string) {\r\n\t\tconst ws = wb.Sheets[sheetName];\r\n\t\t/* Convert array of arrays */\r\n\t\t//https://docs.sheetjs.com/docs/api/utilities/\r\n\t\tconst dat = XLSX.utils.sheet_to_json(ws, {\r\n\t\t\t// header: 1,\r\n\t\t\tblankrows: false,\r\n\t\t\traw: true,\r\n\t\t\tdefval: \"\",\r\n\t\t\tdateNF: 'd\"/\"m\"/\"yyyy',\r\n\t\t\t// range: 1000,\r\n\t\t});\r\n\r\n\t\tconst datt: any = dat.map((d: any, i) => {\r\n\t\t\tconst newObj: any = {};\r\n\t\t\tfor (const key in d) {\r\n\t\t\t\tif (key.startsWith(\"__EMPTY\")) {\r\n\t\t\t\t\tdelete d[key];\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tnewObj[`${key.toLocaleLowerCase()}`] = d[key];\r\n\t\t\t}\r\n\t\t\treturn newObj;\r\n\t\t});\r\n\t\treturn datt;\r\n\t}\r\n\r\n\tfunction checkColumnHeaders(\r\n\t\twb: XLSX.WorkBook,\r\n\t\tsheetName: string,\r\n\t\texpectedHeaders: string[]\r\n\t): string[] | null {\r\n\t\tconst ws = wb.Sheets[sheetName];\r\n\t\t/* Convert array of arrays */\r\n\t\t//https://docs.sheetjs.com/docs/api/utilities/\r\n\t\t//This takes each used column in the sheet and uses the first cell value as object keys\r\n\t\t//So eg if the sheet has Code and Name as the values in the top rowa, they are used as keys for all the remaining rows and\r\n\t\t//all rows apart from the top row are converted to object array ie [{code:\"1...\", Name:\"1...\"}, {code:\"2...\", Name:\"2...\"}...]\r\n\t\tconst dat: any[] = XLSX.utils.sheet_to_json(ws, {\r\n\t\t\t// header: 1,\r\n\t\t\tblankrows: false,\r\n\t\t\traw: true,\r\n\t\t\tdefval: \"\",\r\n\t\t\tdateNF: 'd\"/\"m\"/\"yyyy',\r\n\t\t});\r\n\r\n\t\tconst errorColumns: string[] = [];\r\n\t\t//Due the above explanation, since we want to ascertain if the sheet contains the expected headers we have passed in the first row\r\n\t\t//we pick on the first element of the object array (the first element will represent the first row in the sheet)\r\n\t\t//and check if any keys in it matches our expected headers. If so, then it is valid and we return true. Else it's invalid and we return false\r\n\r\n\t\tconst firstObjectKeys: string[] = Object.keys(dat[0]);\r\n\t\tfor (const txt of expectedHeaders) {\r\n\t\t\tif (\r\n\t\t\t\t!firstObjectKeys.find(\r\n\t\t\t\t\t(x) => x.toLowerCase().trim() === txt.toLowerCase().trim()\r\n\t\t\t\t)\r\n\t\t\t) {\r\n\t\t\t\terrorColumns.push(txt);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn errorColumns.length === 0 ? null : errorColumns;\r\n\t}\r\n\r\n\tconst checkDuplicateCodes = (\r\n\t\trowItem: any,\r\n\t\tkeyName: string,\r\n\t\tdupCodesHolder: any\r\n\t) => {\r\n\t\tif (rowItem[keyName]) {\r\n\t\t\tconst codes: string[] = [];\r\n\t\t\tconst codeSplit = rowItem[keyName].toString().split(\";\");\r\n\t\t\tcodeSplit.forEach((arr: string) => {\r\n\t\t\t\tif (codes.includes(arr.trim())) {\r\n\t\t\t\t\tif (!dupCodesHolder[`${rowItem.valueid}`]) {\r\n\t\t\t\t\t\t// \tdupCodesHolder[`${rowItem.valueid}`].push(arr.trim());\r\n\t\t\t\t\t\t// } else {\r\n\t\t\t\t\t\tdupCodesHolder[`${rowItem.valueid}`] = [arr.trim()];\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcodes.push(arr.trim());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t//join after removing duplicates if any\r\n\t\t\trowItem[keyName] = codes.join(\"; \");\r\n\t\t}\r\n\t};\r\n\r\n\tconst resetDups = () => {\r\n\t\tsetDupCICESCodes(null);\r\n\t\tsetDupEcosystemsCodes(null);\r\n\t\tsetDupEcozonesCodes(null);\r\n\t\tsetDupSeeasCodes(null);\r\n\t\tsetDuplicateValues(null);\r\n\t\tsetDupBiomesCodes(null);\r\n\t\tsetDupTEEBsCodes(null);\r\n\t\tsetDupTEEBsubCodes(null);\r\n\t\tsetInvalidCodedDateEntries(null);\r\n\t\tsetInvalidReviewdDateEntries(null);\r\n\t\tsetNoStudyIdEntries(null);\r\n\t\tsetNoValueIdEntries(null);\r\n\t\tsetInvalidLatLngEntries(null);\r\n\t\tsetData({});\r\n\t\tsetNoEsvdMasterSheet(false);\r\n\t\tsetIsValidData(true);\r\n\t\tsetLabelColumnErrors(null);\r\n\t};\r\n\r\n\tconst renderDataReport = () => {\r\n\t\tconst { uploaddata } = data;\r\n\t\tconst { esvds } = uploaddata || {};\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{/* \r\n\t\t\t\t\t\tMax file size: 10Mb\r\n\t\t\t\t\t
*/}\r\n\t\t\t\t\t{/*
*/}\r\n\t\t\t\t\t{((!loading && file) || !uploading) && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tFile details{\" \"}\r\n\t\t\t\t\t\t\t{!isValidData && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t*Please fix the red higlights below before you can proceed.\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{!uploading && (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{(esvds && `Uploaded file name: ${filename}`) ||\r\n\t\t\t\t\t\t\t\t(filename &&\r\n\t\t\t\t\t\t\t\t\tesvds === undefined &&\r\n\t\t\t\t\t\t\t\t\t!loading &&\r\n\t\t\t\t\t\t\t\t\t\"Invalid data format. Please verify.\")}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{esvds && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{esvds.length} valuations\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t{noEsvdMasterSheet && (\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t)}\r\n\t\t\t\t{labelColumnErrors && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{labelColumnErrors &&\r\n\t\t\t\t\t\t\t\t\"Incorrect sheet names and/or column labels.\"}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{labelColumnErrors && (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{labelColumnErrors.map((key: any, i: number) => (\r\n\t\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{duplicateValues && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{duplicateValues &&\r\n\t\t\t\t\t\t\t\t`${\r\n\t\t\t\t\t\t\t\t\tObject.keys(duplicateValues).length\r\n\t\t\t\t\t\t\t\t} duplicate valuation studies found.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{duplicateValues && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{invalidCodedDateEntries && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{invalidCodedDateEntries &&\r\n\t\t\t\t\t\t\t\t`${\r\n\t\t\t\t\t\t\t\t\tObject.keys(invalidCodedDateEntries).length\r\n\t\t\t\t\t\t\t\t} entries with invalid\r\n\t\t\t\t\t\tcoded date found.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{invalidCodedDateEntries && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{invalidReviewdDateEntries && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{invalidReviewdDateEntries &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(invalidReviewdDateEntries).length} entries with\r\n\t\t\t\t\t\tinvalid reviewed date found.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{invalidReviewdDateEntries && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{noStudyIdEntries && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{noStudyIdEntries &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(noStudyIdEntries).length} entries with\r\n\t\t\t\t\t\tno study Ids.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{noStudyIdEntries && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{noValueIdEntries && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{noValueIdEntries &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(noValueIdEntries).length} entries with\r\n\t\t\t\t\t\tno value Ids.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{noValueIdEntries && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{invalidLatLngEntries && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{invalidLatLngEntries &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(invalidLatLngEntries).length} entries with\r\n\t\t\t\t\t\tinvalid latitutes and longitudes. Numbers range from -90 to 90 for latitude and -180 to 180 for longitude.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{invalidLatLngEntries && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{dupBiomesCodes && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{dupBiomesCodes &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(dupBiomesCodes).length} entries with\r\n\t\t\t\t\t\tduplicate biome codes.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{dupBiomesCodes && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{dupEcozonesCodes && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{dupEcozonesCodes &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(dupEcozonesCodes).length} entries with\r\n\t\t\t\t\t\tduplicate Ecozones codes.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{dupEcozonesCodes && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{dupEcosystemsCodes && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{dupEcosystemsCodes &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(dupEcosystemsCodes).length} entries with\r\n\t\t\t\t\t\tduplicate Ecosystems codes.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{dupEcosystemsCodes && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{dupTEEBsCodes && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{dupTEEBsCodes &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(dupTEEBsCodes).length} entries with\r\n\t\t\t\t\t\tduplicate TEEB codes.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{dupTEEBsCodes && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{dupTEEBsubCodes && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{dupTEEBsubCodes &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(dupTEEBsubCodes).length} entries with\r\n\t\t\t\t\t\tduplicate Sub TEEB codes.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{dupTEEBsubCodes && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{dupCICESCodes && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{dupCICESCodes &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(dupCICESCodes).length} entries with\r\n\t\t\t\t\t\tduplicate CICES codes.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{dupCICESCodes && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{dupSeeasCodes && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{dupSeeasCodes &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(dupSeeasCodes).length} entries with\r\n\t\t\t\t\t\tduplicate SEEAs codes.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{dupSeeasCodes && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\treturn <>{renderDataReport()};\r\n};\r\n\r\nexport default ValidateDataset;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\n// import _ from \"lodash\";\r\nimport * as signalR from \"@microsoft/signalr\";\r\nimport { useAuth } from \"./AuthProvider\";\r\n\r\ninterface IValue {\r\n\tvslGridHub?: signalR.HubConnection | null;\r\n}\r\n\r\nconst VslGridHubContext = React.createContext(null);\r\n\r\nconst VslGridHubProvider = ({ children }: { children: any }) => {\r\n\tconst { getToken } = useAuth();\r\n\tconst [vslGridHub, setVslGridHub] = useState(\r\n\t\tnull\r\n\t);\r\n\r\n\tconst createHubConnection = () => {\r\n\t\tconst url = `${process.env.REACT_APP_API_URL}/UploadNotificationHub`;\r\n\t\tconst hubCon = new signalR.HubConnectionBuilder()\r\n\t\t\t.withUrl(url, { accessTokenFactory: () => getToken() }) //this helps to populate the user details in the signalr hub: username etc\r\n\t\t\t.withAutomaticReconnect()\r\n\t\t\t.build();\r\n\t\treturn hubCon;\r\n\t};\r\n\r\n\tfunction notifyVslHubClients() {\r\n\t\tconst vh = createHubConnection();\r\n\t\tif (vh) {\r\n\t\t\tvh.start()\r\n\t\t\t\t.then(() => vh.invoke(\"VslClientExit\"))\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tvh.stop();\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tuseEffect(() => {\r\n\t\tconst vh = createHubConnection();\r\n\t\tsetVslGridHub(vh);\r\n\t\treturn () => {\r\n\t\t\tnotifyVslHubClients();\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useVslGridHub = () => {\r\n\tconst vslH = useContext(VslGridHubContext);\r\n\tif (vslH == null) {\r\n\t\tthrow new Error(\"useVsl() called outside of its hook.\");\r\n\t}\r\n\treturn vslH;\r\n};\r\n\r\nexport { VslGridHubProvider, useVslGridHub };\r\n","import React, { useEffect } from \"react\";\r\nimport {\r\n\tButton,\r\n\tCard,\r\n\tDimmer,\r\n\tForm,\r\n\tGrid,\r\n\tLabel,\r\n\tLoader,\r\n\tProgress,\r\n} from \"semantic-ui-react\";\r\nimport { ErrorMessage, Formik } from \"formik\";\r\n// import * as signalR from \"@microsoft/signalr\";\r\nimport moment from \"moment\";\r\nimport agent from \"../../api/agent\";\r\nimport EsvdDropZoneField from \"../../shared/DropZone\";\r\nimport ValidateDataset from \"./ValidateDataset\";\r\nimport { useUploadInfo } from \"../../providers/UploadInfoProvider\";\r\nimport { EsvdDataStatistics } from \"../../models/EsvdDataStatistics\";\r\nimport { useVslGridHub } from \"../../providers/VslGridHubProvider\";\r\n\r\nconst UploadStatus = {\r\n\tSuccess: \"Success\",\r\n\tFailure: \"Failure\",\r\n\tSuccessWithWarning: \"SuccessWithWarning\",\r\n};\r\n\r\nconst EsvdUploadDataset = () => {\r\n\tconst { uploading, setUploading, loading, setLoading } = useUploadInfo();\r\n\tconst { vslGridHub } = useVslGridHub();\r\n\tconst [data, setData] = React.useState({});\r\n\t//this indicates the error is fatal and must be fixed before proceeding with upload\r\n\tconst [isValidData, setIsValidData] = React.useState(true);\r\n\r\n\tconst [esvdCurrentUploadInfo, setEsvdCurrentUploadInfo] =\r\n\t\tReact.useState(null);\r\n\r\n\tconst [esvdLastUploadInfo, setEsvdLastUploadInfo] =\r\n\t\tReact.useState(null);\r\n\r\n\tconst [progress, setProgress] = React.useState(0);\r\n\tconst [file, setFile] = React.useState(null);\r\n\tconst [uploadStatus, setUploadStatus] = React.useState(\r\n\t\tUploadStatus.Success\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\t//get info about the last upload\r\n\t\t(async () => {\r\n\t\t\tvar uploadStats: EsvdDataStatistics =\r\n\t\t\t\tawait agent.UploadLists.GetLastUploadStatistics();\r\n\t\t\tsetEsvdLastUploadInfo(uploadStats);\r\n\t\t})();\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (\r\n\t\t\tesvdCurrentUploadInfo?.uploadedSuccessfully &&\r\n\t\t\tesvdCurrentUploadInfo.statusText?.startsWith(\"Zero Valuation Display\")\r\n\t\t) {\r\n\t\t\tsetUploadStatus(UploadStatus.SuccessWithWarning);\r\n\t\t} else if (esvdCurrentUploadInfo?.uploadedSuccessfully) {\r\n\t\t\tsetUploadStatus(UploadStatus.Success);\r\n\t\t} else {\r\n\t\t\tsetUploadStatus(UploadStatus.Failure);\r\n\t\t}\r\n\t\treturn () => {};\r\n\t}, [esvdCurrentUploadInfo]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (vslGridHub) {\r\n\t\t\tif (vslGridHub.state === \"Disconnected\") {\r\n\t\t\t\tvslGridHub.start();\r\n\t\t\t}\r\n\t\t\tvslGridHub.on(\"EsvdUploadProgress\", (uploadInfo: EsvdDataStatistics) => {\r\n\t\t\t\tsetEsvdCurrentUploadInfo(uploadInfo);\r\n\t\t\t\tsetUploading(uploadInfo.uploading);\r\n\t\t\t\tif (uploadInfo.esvdTotalCount) {\r\n\t\t\t\t\tconst pro = !uploadInfo.uploading\r\n\t\t\t\t\t\t? 100\r\n\t\t\t\t\t\t: Math.floor(\r\n\t\t\t\t\t\t\t\t((((uploadInfo.esvdInserted || 0) +\r\n\t\t\t\t\t\t\t\t\t(uploadInfo?.esvdUpdated || 0)) /\r\n\t\t\t\t\t\t\t\t\t(parseInt(uploadInfo?.esvdTotalCount) || 1)) *\r\n\t\t\t\t\t\t\t\t\t100) |\r\n\t\t\t\t\t\t\t\t\t1\r\n\t\t\t\t\t\t );\r\n\t\t\t\t\tsetProgress(pro);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}, [vslGridHub]);\r\n\r\n\tconst resetDups = () => {\r\n\t\tsetData({});\r\n\t\tsetProgress(0);\r\n\t\tsetEsvdCurrentUploadInfo(null);\r\n\t};\r\n\r\n\tconst onDrop = (evt: any) => {\r\n\t\tsetLoading(true);\r\n\t\tevt.stopPropagation();\r\n\t\tevt.preventDefault();\r\n\t\tconst files = evt.dataTransfer.files;\r\n\t\tif (files && files[0]) {\r\n\t\t\tsetLoading(true);\r\n\t\t\tsetFile(files[0]);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleFormSubmit = async (values: any, setErrors: Function) => {\r\n\t\tsetUploading(true);\r\n\r\n\t\tagent.UploadLists.uploadJson({\r\n\t\t\tjsonDataset: JSON.stringify(data.uploaddata),\r\n\t\t\tfilename: data.filename,\r\n\t\t\tesvdCount: data.esvdCount,\r\n\t\t})\r\n\t\t\t.then((res) => {\r\n\t\t\t\tsetFile(null);\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tsetFile(file);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetUploading(false);\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t});\r\n\t\tsetErrors(null);\r\n\t};\r\n\r\n\tconst renderFormik = () => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t {\r\n\t\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t{({\r\n\t\t\t\t\t\thandleSubmit,\r\n\t\t\t\t\t\tisValid,\r\n\t\t\t\t\t\tisSubmitting,\r\n\t\t\t\t\t\tdirty,\r\n\t\t\t\t\t\terrors,\r\n\t\t\t\t\t\ttouched,\r\n\t\t\t\t\t}) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t

Current upload stats

\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{esvdCurrentUploadInfo?.uploadedEsvdCount ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{uploadStatus === UploadStatus.Failure && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{esvdCurrentUploadInfo?.uploadFailed &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Error message: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(esvdCurrentUploadInfo?.uploadFailed &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"There are errors. Click on 'Copy error' and paste for details\") ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{esvdCurrentUploadInfo?.uploadFailed && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigator.clipboard.writeText(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tesvdCurrentUploadInfo?.uploadFailed || \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"reset\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: \"2rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"12rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tCopy error\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{uploadStatus === UploadStatus.SuccessWithWarning && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{`Message: Done but with Zero Valuation_Display: some valuations have their Valuation_Display set to 0. Click on 'Copy message' and paste for details\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigator.clipboard.writeText(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tesvdCurrentUploadInfo?.statusText || \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"reset\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: \"2rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"12rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tCopy message\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tLast upload stats.\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{`Total valuations: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tesvdLastUploadInfo?.esvdTotalCount || 0\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t{esvdLastUploadInfo?.uploadedSuccessfully === false && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{`Error message: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(esvdLastUploadInfo?.uploadFailed &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"There are errors. Click on 'Copy error' and paste for details\") ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{esvdLastUploadInfo?.uploadFailed && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigator.clipboard.writeText(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tesvdLastUploadInfo?.uploadFailed || \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"reset\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: \"2rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"12rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tCopy error\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{!uploading && (\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tresetDups();\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetLoading(true);\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetFile(d[0]);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tvalue={[]}\r\n\t\t\t\t\t\t\t\t\t\t\taccept=\".xlsx\"\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{esvdLastUploadInfo?.uploadFailed && (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{!uploading && file && !loading && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t{uploading && file && !loading && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\tvslGridHub && vslGridHub.invoke(\"CancelEsvdUpload\");\r\n\t\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\t\t// console.log(error);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tCancel Upload\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{renderFormik()}\r\n\t\t\t{(!uploading || !loading) && (\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default EsvdUploadDataset;\r\n","import React from \"react\";\r\nimport { Grid, Container } from \"semantic-ui-react\";\r\nimport { actions, resources } from \"../../shared/Literals\";\r\n\r\nimport Can from \"../../accessControls/Can\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\n// import EsvdUploadDataset from \"./EsvdUploadDataset\";\r\nimport EsvdUploadDataset from \"./EsvdUploadDataset\";\r\nimport { VslGridHubProvider } from \"../../providers/VslGridHubProvider\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst UploadDatasetBoard = (props: any) => {\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\treturn (\r\n\t\t renderContent()}\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default UploadDatasetBoard;\r\n","//column implementation\r\n\r\nimport { ItemLabels } from \"../shared/Literals\";\r\nimport {\r\n ColumnStructure,\r\n DisplayColumnStructure,\r\n SummaryStatsColumnStructure,\r\n} from \"./columnStructure\";\r\n\r\n/**\r\n * isFlat: values are concatenated into one column instead of having separate column for each value.\r\n * separator: the separator to use when concatenating the values.\r\n * isMulti: the the property may produce multiple columns dynamically.\r\n */\r\n//This is also used for columns in the downloaded excel sheet\r\nexport const ColumnTemplate: ColumnStructure = {\r\n valueId: \"ValueId\",\r\n studyCode: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"StudyId\",\r\n dbField: \"studyCode\",\r\n },\r\n },\r\n // esvdFlatBiomes: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"Biomes\",\r\n // dbField: \"esvdFlatBiomes\",\r\n // },\r\n // },\r\n // esvdFlatBiomeCodes: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"Biome_Codes\",\r\n // dbField: \"esvdFlatBiomeCodes\",\r\n // },\r\n // },\r\n esvdFlatBiomeV2s: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"ESVD2.0_Biome\",\r\n dbField: \"esvdFlatBiomeV2s\",\r\n },\r\n },\r\n esvdFlatBiomeV2Codes: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"ESVD2.0_Biome_Codes\",\r\n dbField: \"esvdFlatBiomeV2Codes\",\r\n },\r\n },\r\n biomes: {\r\n maxLen: 0,\r\n isMulti: true,\r\n specs: {\r\n caption: \"ESVD2.0_Biome_\",\r\n dbField: \"name\",\r\n separator: \";\",\r\n flatten: false,\r\n baseColumn: \"esvdFlatBiomeV2s\",\r\n },\r\n },\r\n\r\n esvdFlatEcozones: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"ESVD2.0_Ecozones\",\r\n dbField: \"esvdFlatEcozones\",\r\n },\r\n },\r\n esvdFlatEcozoneCodes: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"ESVD2.0_Ecozone_Codes\",\r\n dbField: \"esvdFlatEcozoneCodes\",\r\n },\r\n },\r\n ecozones: {\r\n maxLen: 0,\r\n isMulti: true,\r\n specs: {\r\n caption: \"ESVD2.0_Ecozone_\",\r\n dbField: \"name\",\r\n separator: \";\",\r\n flatten: false,\r\n baseColumn: \"esvdFlatEcozones\",\r\n },\r\n },\r\n esvdFlatEcosystemV2s: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"ESVD2.0_Ecosystems\",\r\n dbField: \"esvdFlatEcosystemV2s\",\r\n },\r\n },\r\n esvdFlatEcosystemV2Codes: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"ESVD2.0_Ecosystem_Codes\",\r\n dbField: \"esvdFlatEcosystemV2Codes\",\r\n },\r\n },\r\n ecosystems: {\r\n maxLen: 0,\r\n isMulti: true,\r\n specs: {\r\n caption: \"ESVD2.0_Ecosystem_\",\r\n dbField: \"name\",\r\n separator: \";\",\r\n flatten: false,\r\n baseColumn: \"esvdFlatEcosystemV2s\",\r\n },\r\n },\r\n //for multi column entries use array to indicate that it's multi column\r\n ecosystemDescription: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Ecosystem Text\",\r\n dbField: \"ecosystemDescription\",\r\n },\r\n },\r\n \r\n // ecosystemServiceDescription: \"ES Text\",\r\n /**\r\n * The structure of ecosystem services demands treat.\r\n * Since the columns have those for subservices embeded,\r\n * we also process the subservices column while processing the services.\r\n * Unless there's a need for change\r\n */\r\n ecosystemServiceDescription: {\r\n isSimple: true,\r\n // isHide: true,\r\n spec: {\r\n caption: \"ES_Text\",\r\n dbField: \"ecosystemServiceDescription\",\r\n },\r\n },\r\n esvdFlatEcosystemServiceCodes: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"TEEB_ES\",\r\n dbField: \"esvdFlatEcosystemServiceCodes\",\r\n },\r\n },\r\n esvdFlatEcosystemSubServiceCodes: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"TEEB_SubES\",\r\n dbField: \"esvdFlatEcosystemSubServiceCodes\",\r\n },\r\n },\r\n ecosystemServices: {\r\n maxLen: 0,\r\n isMulti: true,\r\n specs: {\r\n caption: \"ES_\",\r\n dbField: \"name\",\r\n flatten: false,\r\n baseColumn: \"esvdFlatEcosystemServices\", \r\n },\r\n },\r\n esvdFlatCICESCodes: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"CICES\",\r\n dbField: \"esvdFlatCICESCodes\",\r\n },\r\n },\r\n esvdFlatSEEAMain: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"SEEA\",\r\n dbField: \"esvdFlatSEEAMain\",\r\n },\r\n },\r\n esvdFlatCountries: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Countries\",\r\n dbField: \"esvdFlatCountries\",\r\n },\r\n },\r\n esvdFlatCountryCodes: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Country_Codes\",\r\n dbField: \"esvdFlatCountryCodes\",\r\n },\r\n },\r\n countryCodes: {\r\n maxLen: 0,\r\n isMulti: true,\r\n specs: {\r\n caption: \"Country_Code_\",\r\n dbField: \"isoCode\",\r\n flatten: false,\r\n separator: \";\",\r\n baseColumn: \"esvdFlatCountryCodes\",\r\n },\r\n },\r\n countries: {\r\n maxLen: 0,\r\n isMulti: true,\r\n specs: {\r\n caption: \"Country_\",\r\n dbField: \"name\",\r\n flatten: false,\r\n baseColumn: \"esvdFlatCountries\",\r\n },\r\n },\r\n continent: \"Continent\",\r\n scaleOfStudySite: \"Scale Of Site\",\r\n studyLocation: \"Study Location\",\r\n protectionStatus: \"Protection Status\",\r\n siteArea: \"Site Area\",\r\n siteAreaUnit: \"Site Area Unit\",\r\n siteAreaInHectares: \"Site Area In Hectares\",\r\n siteLength: \"Site Length\",\r\n siteLengthUnit: \"Site Length Unit\",\r\n siteLengthKm: \"Site Length Km\",\r\n siteCondition: \"Site Condition\",\r\n ecosystemCondition: \"Ecosystem Condition\",\r\n latitude: \"Latitude\",\r\n longitude: \"Longitude\",\r\n esvdFlatValuationMethodCodes: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Valuation Methods\",\r\n dbField: \"esvdFlatValuationMethodCodes\",\r\n },\r\n },\r\n valuationMethods: {\r\n maxLen: 0,\r\n isMulti: true,\r\n specs: {\r\n caption: \"Valuation_Method_\",\r\n dbField: \"acronym\",\r\n flatten: false,\r\n baseColumn: \" esvdFlatValuationMethodCodes\",\r\n },\r\n },\r\n esvdFlatValueMeasureCodes: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Value_Measure\",\r\n dbField: \"esvdFlatValueMeasureCodes\",\r\n },\r\n },\r\n valueChange: \"Value_Change\",\r\n valuedChange: \"Valued Change\",\r\n originalValue: \"Original Value\",\r\n currency: \"Currency\",\r\n valueYear: \"Value Year\",\r\n spatialUnit: \"Spatial Unit\",\r\n temporalUnit: \"Temporal Unit\",\r\n presentValueYear: \"Present Value Year\",\r\n presentValueDiscountRate: \"Present Value Discount Rate\",\r\n beneficiaryUnit: \"Beneficiary Unit\",\r\n numberOfBeneficiaries: \"Number Of Beneficiaries\",\r\n typeOfBeneficiary: \"Type Of Beneficiary\",\r\n intPerHectarePerYear: \"Int$ Per Hectare Per Year\",\r\n authors: \"Authors\",\r\n title: \"Title\",\r\n reference: \"Reference\",\r\n yearOfPublication: \"Year_Pub\",\r\n notes: \"Notes\",\r\n secondaryDataSources: \"Secondary Data Sources\",\r\n // esvdFlatCoders: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"Coded_By\",\r\n // dbField: \"esvdFlatCoders\",\r\n // },\r\n // },\r\n // codedDate: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"Coded Date\",\r\n // dbField: \"codedDate\",\r\n // isDate: { format: \"DD-MMM-YYYY\" },\r\n // },\r\n // },\r\n // esvdFlatReviewers: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"Reviewer\",\r\n // dbField: \"esvdFlatReviewers\",\r\n // },\r\n // },\r\n // reviewedDate: \"ReviewedDate\",\r\n reviewed: \"Reviewed\",\r\n inclExcl: \"Incl_Excl\",\r\n inclExclText: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"inclExcl\",\r\n dbField: \"inclExclText\",\r\n },\r\n },\r\n // esvdFlatValueMeasures: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"Value_Measure\",\r\n // dbField: \"esvdFlatValueMeasures\",\r\n // },\r\n // },\r\n\r\n // inclExclComments: \"inclExclComments\",\r\n};\r\n\r\nexport const SummaryStatsColumnTemplate: SummaryStatsColumnStructure = {\r\n valueId: \"ValueId\",\r\n\r\n biomeV2EcosystemV2Ecozones: {\r\n maxLen: 0,\r\n isMulti: true,\r\n specs: [\r\n {\r\n caption: ItemLabels.biomeCode,\r\n dbField: \"code\",\r\n separator: \";\",\r\n flatten: true,\r\n },\r\n {\r\n caption: ItemLabels.biome,\r\n dbField: \"name\",\r\n separator: \";\",\r\n flatten: true,\r\n },\r\n ],\r\n },\r\n ecosystemServices: {\r\n maxLen: 0,\r\n isMulti: true,\r\n specs: [\r\n {\r\n caption: ItemLabels.teebCode,\r\n dbField: \"code\",\r\n flatten: true,\r\n },\r\n {\r\n caption: ItemLabels.teeb,\r\n dbField: \"name\",\r\n flatten: true,\r\n },\r\n ],\r\n },\r\n\r\n intPerHectarePerYear: ItemLabels.Int_Per_Hectare_Per_Year,\r\n inclExcl:ItemLabels.InclExcl\r\n};\r\n\r\n//These columns show when you filter the valuations\r\nexport const DisplayColumnTemplate: DisplayColumnStructure = {\r\n // valueId: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"ValueID\",\r\n // dbField: \"valueId\",\r\n // width: 100,\r\n // // sortable: true,\r\n // },\r\n // },\r\n // studyCode: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"StudyID\",\r\n // dbField: \"studyId\",\r\n // width: 80,\r\n // // sortable: true,\r\n // },\r\n // },\r\n // esvdFlatBiomes: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"Biomes\",\r\n // dbField: \"esvdFlatBiomes\",\r\n // width: 200,\r\n // },\r\n // },\r\n // esvdFlatEcosystems: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"Ecosystems\",\r\n // dbField: \"esvdFlatEcosystems\",\r\n // width: 200,\r\n // },\r\n // },\r\n esvdFlatBiomeV2s: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Biomes\",\r\n dbField: \"esvdFlatBiomeV2s\",\r\n width: 200,\r\n },\r\n },\r\n esvdFlatEcozones: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Ecozones\",\r\n dbField: \"esvdFlatEcozones\",\r\n width: 200,\r\n },\r\n },\r\n esvdFlatEcosystemV2s: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Ecosystems\",\r\n dbField: \"esvdFlatEcosystemV2s\",\r\n width: 200,\r\n },\r\n },\r\n esvdFlatEcosystemServices: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"TEEB services\",\r\n dbField: \"esvdFlatEcosystemServices\",\r\n width: 200,\r\n },\r\n },\r\n\r\n esvdFlatCICESs: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"CICES services\",\r\n dbField: \"esvdFlatCICESs\",\r\n width: 200,\r\n },\r\n },\r\n\r\n esvdFlatSEEAMain: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"SEEA services\",\r\n dbField: \"esvdFlatSEEAMain\",\r\n width: 200,\r\n },\r\n },\r\n // originalValue: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"Original Value\",\r\n // dbField: \"originalValue\",\r\n // width: 200,\r\n // },\r\n // },\r\n intPerHectarePerYear: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Value 2020 $/ha/yr\",\r\n dbField: \"intPerHectarePerYear\",\r\n width: 150,\r\n align:\"right\",\r\n // sortable: true,\r\n },\r\n },\r\n\r\n esvdFlatValuationMethods: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Valuation Method\",\r\n dbField: \"esvdFlatValuationMethods\",\r\n width: 200,\r\n },\r\n },\r\n esvdFlatCountries: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Countries\",\r\n dbField: \"esvdFlatCountries\",\r\n width: 200,\r\n },\r\n },\r\n studyLocation: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Location Name\",\r\n dbField: \"studyLocation\",\r\n width: 150,\r\n },\r\n },\r\n scaleOfStudySite: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Study/Site Scale\",\r\n dbField: \"scaleOfStudySite\",\r\n width: 150,\r\n },\r\n },\r\n\r\n siteAreaInHectares: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Site Area (ha)\",\r\n dbField: \"siteAreaInHectares\",\r\n width: 150,\r\n align:\"right\",\r\n },\r\n },\r\n ecosystemCondition: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Ecosystem Condition\",\r\n dbField: \"ecosystemCondition\",\r\n width: 150,\r\n },\r\n },\r\n protectionStatus: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Protection Status\",\r\n dbField: \"protectionStatus\",\r\n width: 150,\r\n },\r\n },\r\n typeOfBeneficiary: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Beneficiaries\",\r\n dbField: \"typeOfBeneficiary\",\r\n width: 150,\r\n },\r\n },\r\n reference: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Bibliographic Reference\",\r\n dbField: \"reference\",\r\n width: 200,\r\n },\r\n },\r\n // reviewedDate: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"Reviewed Date\",\r\n // dbField: \"reviewedDate\",\r\n // width: 150,\r\n // isDate: { format: \"DD-MM-YYYY\" },\r\n // },\r\n // },\r\n reviewed: {\r\n isSimple: true,\r\n spec: {\r\n caption: \"Reviewed\",\r\n dbField: \"reviewed\",\r\n width: 150,\r\n },\r\n },\r\n // siteLengthKm: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"Site Length (km)\",\r\n // dbField: \"siteLengthKm\",\r\n // width: 150,\r\n // },\r\n // },\r\n // esvdFlatValueMeasureCodes: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"Value_Measure\",\r\n // dbField: \"esvdFlatValueMeasureCodes\",\r\n // },\r\n // },\r\n // valueChange: {\r\n // isSimple: true,\r\n // spec: {\r\n // caption: \"Value_Change\",\r\n // dbField: \"valueChange\",\r\n // },\r\n // },\r\n // valueChange: \"ValueChange\"\r\n};\r\n","import jsPDF from \"jspdf\";\r\nimport moment from \"moment\";\r\n// import autoTable from \"jspdf-autotable\";\r\n// import { APP_NAME } from \"../../shared/Literals\";\r\nimport adviceLogo from \"../../images/esvd_logo_large.jpg\";\r\nimport { CurrentReferenceInfo } from \"../../models/ReferenceInfo\";\r\n// import riceAdviceImage from \"./RiceAdviceImage\";\r\n\r\n//https://github.com/simonbengtsson/jsPDF-AutoTable#styles\r\n\r\nconst MakePDF = (currentVersion: CurrentReferenceInfo) => {\r\n\r\n \r\n const pdf = new jsPDF(\"p\", \"pt\", \"letter\"); // Default export is a4 paper, portrait, using milimeters for units\r\n \r\n \r\n let currentYPos = 50;\r\n //use this to track didDrawCell rows\r\n // let rowIndex = -1;\r\n\r\n const startX = 40;\r\n const endX = pdf.internal.pageSize.getWidth() - 40;\r\n\r\n // const spaceBetweenSections = 25;\r\n // const spaceBeforeHeaderLine = 30;\r\n const spaceBetweenHeaderContent = 5;\r\n //Good resource for two tables on same row:https://stackoverflow.com/a/41698113/5367889\r\n //https://stackoverflow.com/a/52675932/5367889\r\n // var startingPage = pdf.getCurrentPageInfo().pageNumber;\r\n // const styles = {\r\n // fontSize: 10,\r\n // lineColor: 255,\r\n // fontStyle: \"normal\", // normal, bold, italic, bolditalic\r\n // fillColor: false, // false for transparent or a color as described below\r\n // textColor: 20,\r\n // halign: \"left\", // left, center, right\r\n // valign: \"top\", // top, middle, bottom\r\n // // cellPadding: 2,\r\n // };\r\n\r\n //logo\r\n const logo = new Image();\r\n logo.addEventListener(\"load\", function (img: any) {\r\n\r\n \r\n const logoHeight = img.target.height;\r\n pdf.addImage(logo, \"jpg\", startX - 5, 20,img.target.width, logoHeight);\r\n //main header text\r\n // currentYPos += 40;\r\n pdf.text(\"Ecosystem Services Valuation Database (ESVD)\", startX + img.target.width + 20, currentYPos - 5);\r\n currentYPos += logoHeight - 25;\r\n\r\n \r\n pdf.setDrawColor(0, 0, 0);\r\n pdf.setLineWidth(0.5);\r\n pdf.line(startX, currentYPos, endX, currentYPos);\r\n currentYPos += spaceBetweenHeaderContent + 20;\r\n //header text\r\n pdf.setFontSize(12);\r\n pdf.text(\"Database Version\", startX, currentYPos);\r\n currentYPos += spaceBetweenHeaderContent + 10;\r\n pdf.setFontSize(10);\r\n pdf.text(currentVersion.version, startX, currentYPos);\r\n\r\n currentYPos += spaceBetweenHeaderContent + 20;\r\n pdf.setFontSize(12);\r\n pdf.text(\"Correct Citation\", startX, currentYPos);\r\n currentYPos += spaceBetweenHeaderContent + 10;\r\n const splitText = pdf.splitTextToSize(currentVersion.referenceText || \"\", 600)\r\n pdf.setFontSize(10);\r\n //pdf.text(splitText, startX, currentYPos);\r\n // console.log(splitText);\r\n for (let i = 0; i < splitText.length; i++) {\r\n pdf.text(splitText[i], startX, currentYPos);\r\n currentYPos += spaceBetweenHeaderContent + 5;\r\n }\r\n // currentYPos += 600;\r\n currentYPos += spaceBetweenHeaderContent + 20;\r\n pdf.setFontSize(10);\r\n pdf.text(\"ESVD Database: https://esvd.net\", startX, currentYPos);\r\n currentYPos += spaceBetweenHeaderContent + 10;\r\n pdf.text(\"ESVD Website: https://esvd.info\", startX, currentYPos);\r\n \r\n pdf.save(`Esvd_Citation_${moment().format(\r\n \"Do-MMM-yyyy_HH-mm-ss\"\r\n )}_Database_Version_${currentVersion?.version}.pdf`);\r\n pdf.close();\r\n })\r\n \r\n logo.src = adviceLogo;\r\n \r\n \r\n};\r\n\r\nexport default MakePDF;\r\n","export default \"data:image/jpeg;base64,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\"","\r\n\r\nexport default function filterCheck(esvdQueryFilters: any): boolean {\r\n\tconst {\r\n\t\tisTeeb,\r\n\t\tparams: {\r\n\t\t\tcountries,\r\n\t\t\tprotectionStatuses,\r\n\t\t\tcontinents,\r\n\t\t\tvaluationMethods,\r\n\t\t\tecosystemServices,\r\n\t\t\t// biomeEcosystems,\r\n\t\t\tbiomeV2EcosystemV2Ecozones,\r\n\t\t\tseeas,\r\n\t\t\tciceses,\r\n\t\t\tfreeText,\r\n\t\t},\r\n\t} = esvdQueryFilters;\r\n\r\n\tif (\r\n\t\t(!countries || countries?.length === 0) &&\r\n\t\t(!protectionStatuses || protectionStatuses?.length === 0) &&\r\n\t\t(!continents || continents?.length === 0) &&\r\n\t\t(!valuationMethods || valuationMethods?.length === 0) &&\r\n\t\t(isTeeb === \"teeb\"\r\n\t\t\t? !ecosystemServices || ecosystemServices?.length === 0\r\n\t\t\t: isTeeb === \"cices\"\r\n\t\t\t\t? !ciceses || ciceses?.length === 0\r\n\t\t\t\t: true) &&\r\n\t\t// (!biomeEcosystems || biomeEcosystems?.length === 0) &&\r\n\t\t(!biomeV2EcosystemV2Ecozones || biomeV2EcosystemV2Ecozones?.length === 0) &&\r\n\t\t(!seeas || seeas?.length === 0) &&\r\n\t\t!freeText?.trim()\r\n\t) {\r\n\t\treturn false;\r\n\t} else {\r\n\t\treturn true;\r\n\t}\r\n}\r\n","import { defaultSort, IS_DESCEND_DEFAULT, LIMIT } from \"../shared/Literals\";\r\n\r\nexport interface Params {\r\n offset?: number;\r\n limit?: number;\r\n countries?: number[];\r\n protectionStatuses?: number[];\r\n continents?: number[];\r\n valuationMethods?: number[];\r\n ecosystemServices?: number[];\r\n seeas?: number[];\r\n ciceses?: number[];\r\n biomeEcosystems?: number[];\r\n biomeV2EcosystemV2Ecozones?: number[];\r\n freeText?: string;\r\n sortColumn?: string;\r\n isDescend?: boolean;\r\n}\r\n\r\n/**\r\n * use this to pass parameters to query functions as objects instead of passing them individually.\r\n * This helps to avoid the need to pass arguments in the exact order as they appear in the function signature.\r\n */\r\nexport interface EsvdQueryParams {\r\n isTeeb?: \"teeb\" | \"cices\" | null;\r\n params: Params;\r\n // activePage: number;\r\n saved?:boolean\r\n}\r\n\r\nexport const defaultEsvdParams:EsvdQueryParams={\r\n\t\tisTeeb: null,\r\n\t\tparams: {\r\n\t\t\tlimit: LIMIT,\r\n\t\t\toffset: 0,\r\n\t\t\tsortColumn: defaultSort.key,\r\n\t\t\tisDescend: IS_DESCEND_DEFAULT,\r\n },\r\n saved:false\r\n // activePage: 0,\r\n}\r\n \r\nexport interface EsvdQueryDataWithOffset {\r\n nextOffset: number;\r\n data: any[];\r\n}\r\n\r\nexport interface QueryString {\r\n username?: string;\r\n code?: string;\r\n}\r\n\r\nexport interface FreeTextQueryParams {\r\n freeText?: string | null;\r\n}\r\n\r\nexport interface FilterQueryParams {\r\n params: {\r\n offset?: number;\r\n limit?: number;\r\n freeText?: string;\r\n date?: string;\r\n };\r\n}\r\n\r\nexport interface UserQueryParams {\r\n params: {\r\n offset?: number;\r\n limit?: number;\r\n freeText?: string;\r\n emailConfirmed?: boolean;\r\n sortColumn?: string;\r\n isDescend?: boolean;\r\n };\r\n}\r\n","import React, { useContext, useEffect } from \"react\";\r\nimport { Button, Header, Modal } from \"semantic-ui-react\";\r\n\r\ninterface IOptions {\r\n\ttitle?: string;\r\n\tbody?: string;\r\n\tsetOpened?: Function;\r\n\tsetConfirmation?: Function;\r\n\tneedsAction?: boolean;\r\n\tcloseOnDimmerClick?: boolean;\r\n\tbasicModal?: boolean;\r\n\tcustomActions4BasicModal?: any;\r\n}\r\ninterface IState {\r\n\topen: boolean;\r\n\tsize?: \"small\" | \"mini\" | \"tiny\" | \"large\" | \"fullscreen\" | undefined;\r\n\tdisplayType?: \"confirmation\" | \"info\" | \"error\" | \"custom\" | null | undefined;\r\n\toptions?: IOptions;\r\n}\r\n\r\nexport function ContextModalReducer(state: IState, action: IState) {\r\n\tconst { open, size, options, displayType } = action;\r\n\tswitch (open) {\r\n\t\tcase false:\r\n\t\t\treturn {\r\n\t\t\t\topen: false,\r\n\t\t\t\tsize,\r\n\t\t\t\tdisplayType,\r\n\t\t\t\toptions,\r\n\t\t\t};\r\n\t\tcase true:\r\n\t\t\treturn {\r\n\t\t\t\topen: true,\r\n\t\t\t\tsize: action.size,\r\n\t\t\t\tdisplayType,\r\n\t\t\t\toptions,\r\n\t\t\t};\r\n\t\tdefault:\r\n\t\t\tthrow new Error(\"Unsupported action...\");\r\n\t}\r\n}\r\n\r\ninterface IValue {\r\n\tmodalState: IState;\r\n\tmodalDispatcher: React.Dispatch;\r\n}\r\n\r\nconst ModalContext = React.createContext(null);\r\n\r\nconst ModalWithContextProvider = ({ children }: { children: any }) => {\r\n\tconst [state, dispatch] = React.useReducer(ContextModalReducer, {\r\n\t\topen: false,\r\n\t\tsize: \"small\",\r\n\t\tdisplayType: null,\r\n\t\toptions: {},\r\n\t});\r\n\r\n\tconst { open, size, displayType, options } = state;\r\n\r\n\tconst {\r\n\t\ttitle,\r\n\t\tbody,\r\n\t\tsetConfirmation,\r\n\t\tcloseOnDimmerClick,\r\n\t\tbasicModal,\r\n\t\tcustomActions4BasicModal,\r\n\t} = options || {};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!open) {\r\n\t\t\tdispatch({ open: false });\r\n\t\t}\r\n\t}, [open]);\r\n\r\n\tconst actionContent = (displayType: string) => {\r\n\t\tswitch (displayType) {\r\n\t\t\tcase \"confirmation\":\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tdispatch({ open: false });\r\n\t\t\t\t\t\t\t\tsetConfirmation && setConfirmation(false);\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tNo\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tdispatch({ open: false });\r\n\t\t\t\t\t\t\t\tsetConfirmation && setConfirmation(true);\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tYes\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\tcase \"info\":\r\n\t\t\t\treturn (\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tdispatch({ open: false });\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\tClose\r\n\t\t\t\t\t\r\n\t\t\t\t\t// {\r\n\t\t\t\t\t// \t\tdispatch({ open: false });\r\n\t\t\t\t\t// \t}}>\r\n\t\t\t\t\t// \tClose\r\n\t\t\t\t\t// \r\n\t\t\t\t);\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{basicModal ? (\r\n\t\t\t\t dispatch({ open: false })}\r\n\t\t\t\t\t// onOpen={openModal}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
{title}
\r\n\t\t\t\t\t\t{body}\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{/* {(content.actions && content.actions()) || ( */}\r\n\t\t\t\t\t\t\t{(customActions4BasicModal && customActions4BasicModal()) || (\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tdispatch({ open: false });\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\tClose\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t dispatch({ open: false })}\r\n\t\t\t\t\tcloseOnDimmerClick={\r\n\t\t\t\t\t\tcloseOnDimmerClick === null || closeOnDimmerClick === undefined\r\n\t\t\t\t\t\t\t? true\r\n\t\t\t\t\t\t\t: closeOnDimmerClick\r\n\t\t\t\t\t}>\r\n\t\t\t\t\t{title}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{/*

{body}

*/}\r\n\t\t\t\t\t\t{body}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{displayType ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
{actionContent(displayType)}
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t) : null}\r\n\t\t\t\t\r\n\t\t\t)}\r\n\r\n\t\t\t\r\n\t\t\t\t{children}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst useModalWithContext = () => {\r\n\tconst activeMenu = useContext(ModalContext);\r\n\tif (activeMenu == null) {\r\n\t\tthrow new Error(\"useModalWithContext() called outside of a Modal hook?\");\r\n\t}\r\n\treturn activeMenu;\r\n};\r\n\r\nexport { ModalWithContextProvider, useModalWithContext };\r\n","import React, { useContext } from \"react\";\r\n// import _ from \"lodash\";\r\nimport agent from \"../api/agent\";\r\nimport { Country } from \"../models/country\";\r\nimport { Continent } from \"../models/continent\";\r\nimport { ProtectionStatus } from \"../models/protectionStatus\";\r\nimport { TreeType } from \"../models/ecosystemService\";\r\nimport { ValuationMethod } from \"../models/valuationMethods\";\r\n\r\ninterface IValue {\r\n\tloadLists: Function;\r\n\tgetEsvdv2: Function;\r\n\tlist: {\r\n\t\tcountries: Country[];\r\n\t\tcontinents: Continent[];\r\n\t\tprotectionStatuses: ProtectionStatus[];\r\n\t\tecosystemServices: TreeType[];\r\n\t\tciceses: TreeType[];\r\n\t\tsEEAs: TreeType[];\r\n\t\tbiomeV2EcosystemV2Ecozones: TreeType[];\r\n\t\tvaluationMethods: ValuationMethod[];\r\n\t\tbiomeEcosystems: TreeType[];\r\n\t};\r\n}\r\n\r\nconst ListsContext = React.createContext(null);\r\n\r\n// The ListsProvider is responsible for Lists management\r\nconst ListsProvider = ({ children }: { children: any }) => {\r\n\tconst [list, setList] = React.useState({});\r\n\r\n\tconst loadLists = async () => {\r\n\t\tconst [\r\n\t\t\tcountries,\r\n\t\t\tcontinents,\r\n\t\t\tprotectionStatuses,\r\n\t\t\tecosystemServices,\r\n\t\t\tciceses,\r\n\t\t\tsEEAs,\r\n\t\t\tbiomeV2EcosystemV2Ecozones,\r\n\t\t\tvaluationMethods,\r\n\t\t\tbiomeEcosystems,\r\n\t\t\tecosystemConditions,\r\n\t\t] = await Promise.all([\r\n\t\t\tagent.Countries.list(),\r\n\t\t\tagent.Continents.list(),\r\n\t\t\tagent.ProtectionStatuses.list(),\r\n\t\t\tagent.EcosystemServices.list(),\r\n\t\t\tagent.Ciceses.list(),\r\n\t\t\tagent.SEEAs.list(),\r\n\t\t\tagent.BiomeV2EcosystemV2Ecozones.list(),\r\n\t\t\tagent.ValuationMethods.list(),\r\n\t\t\tagent.BiomeEcosystems.list(),\r\n\t\t\tagent.EcosystemConditions.list(),\r\n\t\t]);\r\n\t\tconst lis: any = {};\r\n\r\n\t\tlis.countries = countries;\r\n\r\n\t\tlis.continents = continents;\r\n\r\n\t\tlis.protectionStatuses = protectionStatuses;\r\n\r\n\t\tlis.ecosystemServices = ecosystemServices;\r\n\r\n\t\tlis.ciceses = ciceses;\r\n\r\n\t\tlis.sEEAs = sEEAs;\r\n\r\n\t\tlis.biomeV2EcosystemV2Ecozones = biomeV2EcosystemV2Ecozones;\r\n\r\n\t\tlis.valuationMethods = valuationMethods;\r\n\r\n\t\tlis.biomeEcosystems = biomeEcosystems;\r\n\t\tlis.ecosystemConditions = ecosystemConditions;\r\n\t\tsetList({ ...lis });\r\n\t\treturn lis;\r\n\t};\r\n\r\n\tconst getEsvdv2 = async () => {\r\n\t\treturn await agent.BiomeV2EcosystemV2Ecozones.list();\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useLists = () => {\r\n\tconst lists = useContext(ListsContext);\r\n\tif (lists == null) {\r\n\t\tthrow new Error(\"useLists() called outside of a lists hook?\");\r\n\t}\r\n\treturn lists;\r\n};\r\n\r\nexport { ListsProvider, useLists };\r\n","import React, { Fragment } from \"react\";\r\nimport { Button, Checkbox, Grid, Progress } from \"semantic-ui-react\";\r\n\r\nimport {\r\n\tEsvdQueryDataWithOffset,\r\n\tEsvdQueryParams,\r\n} from \"../../models/EsvdQueryFilters\";\r\nimport { ColumnStructure } from \"../../models/columnStructure\";\r\nimport {\r\n\tbodyRowsFlattened,\r\n\tbuildTreeTypeQueryList,\r\n\tsetMultiColumnMaxLenFlattened,\r\n} from \"../../EsvdFunctions\";\r\nimport { ColumnTemplate } from \"../../models/columnTemplate\";\r\nimport { CSVLink } from \"react-csv\";\r\nimport { LIMIT } from \"../../shared/Literals\";\r\nimport agent from \"../../api/agent\";\r\nimport MakePDF from \"./MakePDF\";\r\nimport { CurrentReferenceInfo } from \"../../models/ReferenceInfo\";\r\nimport filterCheck from \"../../shared/FilterCheck\";\r\n\r\nimport { defaultEsvdParams } from \"../../models/EsvdQueryFilters\";\r\nimport { useModalWithContext } from \"../../layouts/ModalWithContext\";\r\nimport { useLists } from \"../../providers/ListsProvider\";\r\n\r\ninterface IProps {\r\n\tesvdQueryParams: EsvdQueryParams;\r\n\tfilename: string;\r\n\tButtonText: string;\r\n\tisFull?: boolean;\r\n\tcurrentVersion?: CurrentReferenceInfo | null;\r\n\tsaveQueryParams?: Function;\r\n}\r\n\r\nlet downloadPdf = false;\r\n\r\nconst EsvdExportEsvd = (props: IProps) => {\r\n\tconst { modalDispatcher } = useModalWithContext();\r\n\tconst { list } = useLists();\r\n\r\n\tconst {\r\n\t\tButtonText,\r\n\t\tfilename,\r\n\t\tesvdQueryParams,\r\n\t\tisFull,\r\n\t\tcurrentVersion,\r\n\t\tsaveQueryParams,\r\n\t} = props;\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [progress, setprogress] = React.useState(0);\r\n\tconst [isDownloadCitation, setisDownloadCitation] =\r\n\t\tReact.useState(false);\r\n\tconst [csvData, setcsvData] = React.useState([]);\r\n\r\n\tconst csvLinkRef: any | null = React.useRef<{ link: HTMLAnchorElement }>();\r\n\r\n\tconst noFilterPrompt = () => {\r\n\t\tmodalDispatcher({\r\n\t\t\topen: true,\r\n\t\t\tsize: \"small\",\r\n\t\t\tdisplayType: \"info\",\r\n\t\t\toptions: {\r\n\t\t\t\ttitle: \"Attention!\",\r\n\t\t\t\tbody: (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tThere are no valuations yet to download.\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tYou need to apply a filter and get the valuations first before\r\n\t\t\t\t\t\t\t\tyou can download.\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t),\r\n\t\t\t\tbasicModal: true,\r\n\t\t\t},\r\n\t\t});\r\n\t\t// const { openModal } = this.props;\r\n\t\t// openModal({\r\n\t\t// \ticon: \"exclamation\",\r\n\t\t// \theader: \"Attention!\",\r\n\t\t// \tcontent: (\r\n\t\t// \t\t\r\n\t\t// \t\t\t\r\n\t\t// \t\t\t\t

\r\n\t\t// \t\t\t\t\tThere are no valuations yet to download.\r\n\t\t// \t\t\t\t

\r\n\t\t// \t\t\t\t

\r\n\t\t// \t\t\t\t\tYou need to apply a filter and get the valuations first before you\r\n\t\t// \t\t\t\t\tcan download.\r\n\t\t// \t\t\t\t

\r\n\t\t// \t\t\t
\r\n\t\t// \t\t
\r\n\t\t// \t),\r\n\t\t// \tisOpen: true,\r\n\t\t// \tactions: null,\r\n\t\t// });\r\n\t};\r\n\r\n\tconst handleChange = (e: any, checkedState: any) => {\r\n\t\tdownloadPdf = checkedState.checked;\r\n\t\tsetisDownloadCitation(checkedState.checked);\r\n\t};\r\n\tconst showDownloadPrompt = () => {\r\n\t\tmodalDispatcher({\r\n\t\t\topen: true,\r\n\t\t\tsize: \"small\",\r\n\t\t\tdisplayType: \"info\",\r\n\t\t\toptions: {\r\n\t\t\t\ttitle: \"Attention!\",\r\n\t\t\t\tbody: (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tBy downloading data from this ESVD website you specifically\r\n\t\t\t\t\t\t\t\tagree to the Terms of Use.\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tYou are downloading data from Database Version:{\" \"}\r\n\t\t\t\t\t\t\t\t{currentVersion?.version}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tCorrect Citation: {currentVersion?.referenceText}\r\n\t\t\t\t\t\t\t

\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t),\r\n\t\t\t\tbasicModal: true,\r\n\t\t\t\tcustomActions4BasicModal: () => (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tif (!esvdQueryParams.saved && filterCheck(esvdQueryParams)) {\r\n\t\t\t\t\t\t\t\t\t//save query if not saved already\r\n\t\t\t\t\t\t\t\t\tsaveQueryParams && saveQueryParams({ ...esvdQueryParams });\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tmodalDispatcher({\r\n\t\t\t\t\t\t\t\t\topen: false,\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tif (currentVersion && downloadPdf) {\r\n\t\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\t\tcurrentVersion && MakePDF(currentVersion);\r\n\t\t\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\t\t\t// console.log(error);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tdownloadPdf = false;\r\n\t\t\t\t\t\t\t\tsetisDownloadCitation(false);\r\n\t\t\t\t\t\t\t\tsetIsLoading(true);\r\n\t\t\t\t\t\t\t\tconst params = {\r\n\t\t\t\t\t\t\t\t\tlimit: LIMIT,\r\n\t\t\t\t\t\t\t\t\toffset: 0,\r\n\t\t\t\t\t\t\t\t\tsortColumn: \"studyId\",\r\n\t\t\t\t\t\t\t\t\tisDescend: true,\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\tconst filta = isFull\r\n\t\t\t\t\t\t\t\t\t? { ...defaultEsvdParams, params }\r\n\t\t\t\t\t\t\t\t\t: esvdQueryParams;\r\n\t\t\t\t\t\t\t\tawait fetchFilteredEsvds(filta).then((r) => {\r\n\t\t\t\t\t\t\t\t\tconst cols: ColumnStructure = setMultiColumnMaxLenFlattened(\r\n\t\t\t\t\t\t\t\t\t\tr.data,\r\n\t\t\t\t\t\t\t\t\t\tColumnTemplate\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t// specify the key to delete from the columns in the downloaded csv\r\n\t\t\t\t\t\t\t\t\tconst keyToDelete: string = \"inclExclText\";\r\n\r\n\t\t\t\t\t\t\t\t\tconst body = bodyRowsFlattened(r.data, {\r\n\t\t\t\t\t\t\t\t\t\t...cols,\r\n\t\t\t\t\t\t\t\t\t\t[keyToDelete]: undefined,\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\tsetcsvData(body);\r\n\r\n\t\t\t\t\t\t\t\t\tif (csvLinkRef?.current) {\r\n\t\t\t\t\t\t\t\t\t\tcsvLinkRef.current.link.click();\r\n\t\t\t\t\t\t\t\t\t\tsetcsvData([]);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tDownload\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tmodalDispatcher({\r\n\t\t\t\t\t\t\t\t\topen: false,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t),\r\n\t\t\t},\r\n\t\t});\r\n\t};\r\n\r\n\tconst fetchFilteredEsvds = async (filters: EsvdQueryParams) => {\r\n\t\t/**\r\n\t\t * TODO: this will need to be refactored to update the query params in one place.\r\n\t\t */\r\n\r\n\t\t// const page = Number(isFreshFilter ? 1 : activePage);\r\n\r\n\t\tconst params = { ...filters.params };\r\n\t\tconst { ecosystemServices, biomeV2EcosystemV2Ecozones, ciceses } = params;\r\n\r\n\t\t// params.offset = page > 1 ? page - 1 : 0;\r\n\r\n\t\tif (ecosystemServices && ecosystemServices.length > 0) {\r\n\t\t\tparams.ecosystemServices = buildTreeTypeQueryList(\r\n\t\t\t\tecosystemServices,\r\n\t\t\t\tlist.ecosystemServices\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (biomeV2EcosystemV2Ecozones && biomeV2EcosystemV2Ecozones.length > 0) {\r\n\t\t\tparams.biomeV2EcosystemV2Ecozones = buildTreeTypeQueryList(\r\n\t\t\t\tbiomeV2EcosystemV2Ecozones,\r\n\t\t\t\tlist.biomeV2EcosystemV2Ecozones\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (ciceses && ciceses.length > 0) {\r\n\t\t\tparams.ciceses = buildTreeTypeQueryList(ciceses, list.ciceses);\r\n\t\t}\r\n\r\n\t\tconst qryfil = { ...filters, params: { ...params } };\r\n\r\n\t\tconst count = await agent.Esvds.esvdCount(qryfil);\r\n\t\tconst data: any[] = [];\r\n\t\tif (count > 0) {\r\n\t\t\tconst pages = Math.ceil(count / LIMIT);\r\n\t\t\tqryfil.params.limit = LIMIT;\r\n\t\t\tlet nextOffset = 0;\r\n\t\t\twhile (nextOffset < pages) {\r\n\t\t\t\tqryfil.params.offset = nextOffset;\r\n\t\t\t\tconst response = await agent.Esvds.list(qryfil);\r\n\t\t\t\tdata.push(...response);\r\n\t\t\t\tconst progres = Math.ceil(((nextOffset + 1) / pages) * 100);\r\n\t\t\t\tsetprogress(progres);\r\n\r\n\t\t\t\tnextOffset++;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { count, data };\r\n\t};\r\n\r\n\tconst handleClick = async () => {\r\n\t\tif (!isFull) {\r\n\t\t\tif (!filterCheck(esvdQueryParams)) {\r\n\t\t\t\tnoFilterPrompt();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tshowDownloadPrompt();\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t handleClick()}\r\n\t\t\t\tdisabled={isLoading}\r\n\t\t\t\tclassName={`${isLoading ? \"invisible\" : \"\"}`}\r\n\t\t\t/>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default EsvdExportEsvd;\r\n","import { Component, Fragment } from \"react\";\r\nimport { Grid } from \"semantic-ui-react\";\r\n\r\ninterface Props {\r\n\tconetent?: any;\r\n}\r\n\r\nexport const NoVslFilterGrid = (props: Props) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{props.conetent || (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\tYou need to select at least one filter before getting the\r\n\t\t\t\t\t\t\tvaluation studies.\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nclass NoFilterGrid extends Component {\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{this.props.conetent || (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tYou need to select at least one filter before getting the\r\n\t\t\t\t\t\t\t\tvaluations.\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tIf you want all valuations you can download the full ESVD as CSV\r\n\t\t\t\t\t\t\t\tat the bottom right.\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default NoFilterGrid;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport agent from \"../api/agent\";\r\nimport { trimOutliers } from \"../components/esvdStats/processStatsData\";\r\nimport {\r\n\tbodyRowsFlattened,\r\n\tbuildTreeTypeQueryList,\r\n\t// buildTreeTypeQueryListCices,\r\n\tdisplayBodyRowsObjects,\r\n\tdisplayHeaderTransform,\r\n\t// getMonthNameShort,\r\n\tsetDisplayMultiColumnMaxLens,\r\n\tsetMultiColumnMaxLenFlattened,\r\n\tsetMultiColumnMaxLensSummaryStats,\r\n\tsummaryStatsRowsObjects,\r\n} from \"../EsvdFunctions\";\r\nimport {\r\n\tColumnStructure,\r\n\tDisplayColumnStructure,\r\n\tSummaryStatsColumnStructure,\r\n} from \"../models/columnStructure\";\r\nimport {\r\n\tColumnTemplate,\r\n\tDisplayColumnTemplate,\r\n\tSummaryStatsColumnTemplate,\r\n} from \"../models/columnTemplate\";\r\nimport { Esvd, EsvdArray } from \"../models/esvd\";\r\nimport { EsvdMap } from \"../models/esvdMap\";\r\nimport { defaultEsvdParams, EsvdQueryParams } from \"../models/EsvdQueryFilters\";\r\n// import { EsvdSearchParams } from \"../models/EsvdQueryFilters\";\r\n// import { EsvdFilters } from \"../models/FilterQuery\";\r\n// import filterCheck from \"../shared/FilterCheck\";\r\n\r\nexport interface StatsResultData {\r\n\tbiomes: Esvd[] | null;\r\n\tecozones: Esvd[] | null;\r\n}\r\n\r\ninterface IValue {\r\n\tgetEsvds: Function;\r\n\tesvds: EsvdArray;\r\n\tgetEsvdsCount: Function;\r\n\tesvdCount: number;\r\n\tgetEsvdTotalCount: Function;\r\n\tesvdTotalCount: number;\r\n\r\n\tgetEsvdMapData: Function;\r\n\tmapData: EsvdMap[];\r\n\tgetEsvdMapCount: Function;\r\n\tesvdMapCount: number;\r\n\tgetEsvdTotalMapCount: Function;\r\n\tesvdTotalMapCount: number;\r\n\r\n\tclearEsvds: Function;\r\n\tsaveQueryParams: Function;\r\n\r\n\tgetPageData: Function;\r\n\tsetActivePage: Function;\r\n\tactivePage: number;\r\n\r\n\tsetShowMap: Function;\r\n\tshowMap: boolean;\r\n\tupdateQueryParams: Function;\r\n\tesvdQueryParams: EsvdQueryParams;\r\n\tgetEsvdsSummaryStats: Function;\r\n\tesvdsSummaryStats: StatsResultData | null;\r\n\tisMapBusy?: boolean | undefined;\r\n\tgetEsvdMapMarkerData: Function;\r\n\tsetIsMapBusy: Function;\r\n\r\n\tqueryParamsForSave: any;\r\n\tsetQueryParamsForSave: Function;\r\n\tgetStudyEsvds: Function;\r\n\tstudyEsvds: Esvd[];\r\n}\r\n\r\nconst EsvdValuationContext = React.createContext(null);\r\n\r\n// The EsvdValuationProvider is responsible for Esvd Valuation management\r\nconst EsvdValuationProvider = ({ children }: { children: any }) => {\r\n\tconst [esvds, setEsvds] = useState({\r\n\t\tesvdsAllCols: [],\r\n\t\theaderArray: [],\r\n\t\tbodyArray: [],\r\n\t});\r\n\tconst [studyEsvds, setStudyEsvds] = useState([]);\r\n\r\n\tconst [esvdCount, setEsvdCount] = useState(0);\r\n\tconst [esvdTotalCount, setEsvdTotalCount] = useState(0);\r\n\r\n\tconst [esvdMapCount, setEsvdMapCount] = useState(0);\r\n\tconst [esvdTotalMapCount, setEsvdTotalMapCount] = useState(0);\r\n\r\n\tconst [esvdsSummaryStats, setEsvdsSummaryStats] =\r\n\t\tuseState(null);\r\n\tconst [esvdQueryParams, setEsvdQueryParams] = useState({\r\n\t\t...defaultEsvdParams,\r\n\t});\r\n\tconst [queryParamsForSave, setQueryParamsForSave] = useState({});\r\n\r\n\tconst [showMap, setShowMap] = useState(false);\r\n\tconst [activePage, setActivePage] = useState(0);\r\n\tconst [isMapBusy, setIsMapBusy] = React.useState(false);\r\n\r\n\tuseState(false);\r\n\r\n\tconst updateQueryParams = (query: EsvdQueryParams) => {\r\n\t\t// if (!filterCheck(query)) {\r\n\t\tclearEsvds();\r\n\t\t// }\r\n\t\tsetEsvdQueryParams({ ...query, saved: false });\r\n\t};\r\n\r\n\tconst getEsvds = async (query: EsvdQueryParams) => {\r\n\t\ttry {\r\n\t\t\t// const count = await agent.Esvds.esvdCount(query);\r\n\t\t\t// setEsvdCount(count);\r\n\r\n\t\t\tconst response = await agent.Esvds.list(query);\r\n\t\t\tconst cols: DisplayColumnStructure = setDisplayMultiColumnMaxLens(\r\n\t\t\t\tresponse,\r\n\t\t\t\tDisplayColumnTemplate\r\n\t\t\t);\r\n\t\t\tconst heads = displayHeaderTransform(response, cols);\r\n\t\t\tconst body = displayBodyRowsObjects(response, cols);\r\n\r\n\t\t\tconst allCols: ColumnStructure = setMultiColumnMaxLenFlattened(\r\n\t\t\t\tresponse,\r\n\t\t\t\tColumnTemplate\r\n\t\t\t);\r\n\t\t\tconst items = bodyRowsFlattened(response, allCols);\r\n\r\n\t\t\t// return { esvdsAllCols: items, headerArray: heads, bodyArray: body };\r\n\t\t\tsetEsvds({ esvdsAllCols: items, headerArray: heads, bodyArray: body });\r\n\r\n\t\t\t// return response;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getEsvdsCount = async (query: EsvdQueryParams) => {\r\n\t\ttry {\r\n\t\t\tconst response = await agent.Esvds.esvdCount(query);\r\n\t\t\tsetEsvdCount(response);\r\n\t\t\t// return response;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getEsvdTotalCount = async () => {\r\n\t\ttry {\r\n\t\t\tconst response = await agent.Esvds.esvdTotalCount();\r\n\t\t\tsetEsvdTotalCount(response);\r\n\t\t\t// return response;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst clearEsvds = () => {\r\n\t\tsetEsvds({ esvdsAllCols: [], headerArray: [], bodyArray: [] });\r\n\t\tsetEsvdCount(0);\r\n\t\tsetEsvdsSummaryStats({ biomes: [], ecozones: [] });\r\n\t\tsetEsvdQueryParams({ ...defaultEsvdParams });\r\n\t\tsetEsvdMapCount(0);\r\n\t\tsetEsvdTotalMapCount(0);\r\n\t\tsetMapData([]);\r\n\t\tsetIsMapBusy(false);\r\n\t};\r\n\r\n\tconst saveQueryParams = async () => {\r\n\t\ttry {\r\n\t\t\tlet params: any = {};\r\n\t\t\t//remove empty or null properties\r\n\t\t\tfor (const [key, value] of Object.entries(queryParamsForSave)) {\r\n\t\t\t\tif (\r\n\t\t\t\t\t(Array.isArray(value) && value.length > 0) ||\r\n\t\t\t\t\t(typeof value === \"string\" &&\r\n\t\t\t\t\t\tvalue.trim() !== \"\" &&\r\n\t\t\t\t\t\tvalue !== null) ||\r\n\t\t\t\t\t(typeof value === \"number\" && value !== null)\r\n\t\t\t\t) {\r\n\t\t\t\t\tparams = { ...params, [key]: value };\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//do not save empty filters\r\n\t\t\tif (Object.keys(params).length === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tparams.resultsCount = await agent.Esvds.esvdCount(esvdQueryParams);\r\n\r\n\t\t\tawait agent.FilterQueries.create({\r\n\t\t\t\tfilterString: JSON.stringify(params),\r\n\t\t\t});\r\n\t\t\tsetEsvdQueryParams({ ...esvdQueryParams, saved: true });\r\n\t\t\t// return response;\r\n\t\t} catch (error: any) {\r\n\t\t\t//throw error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getEsvdsSummaryStats = async (\r\n\t\tquery: EsvdQueryParams\r\n\t): Promise => {\r\n\t\ttry {\r\n\t\t\tconst dat = await agent.EsvdStats.summaryStats(query);\r\n\t\t\tconst { biomes, ecozones } = dat;\r\n\t\t\tconst statsResultData: StatsResultData = {\r\n\t\t\t\tbiomes: biomes,\r\n\t\t\t\tecozones: ecozones,\r\n\t\t\t};\r\n\r\n\t\t\tsetEsvdsSummaryStats(statsResultData);\r\n\r\n\t\t\treturn statsResultData;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getPageData = async (\r\n\t\tquery: EsvdQueryParams,\r\n\t\tisFreshFilter: boolean,\r\n\t\tactivePage: number,\r\n\t\tlists: any\r\n\t) => {\r\n\t\tconst page = Number(isFreshFilter ? 1 : activePage);\r\n\r\n\t\t// const { queryFilters } = this.state;\r\n\t\tconst params = { ...query.params };\r\n\t\tconst { ecosystemServices, biomeV2EcosystemV2Ecozones, ciceses } = params;\r\n\r\n\t\tparams.offset = page > 1 ? page - 1 : 0;\r\n\r\n\t\tif (ecosystemServices && ecosystemServices.length > 0) {\r\n\t\t\tparams.ecosystemServices = buildTreeTypeQueryList(\r\n\t\t\t\tecosystemServices,\r\n\t\t\t\tlists.ecosystemServices\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (biomeV2EcosystemV2Ecozones && biomeV2EcosystemV2Ecozones.length > 0) {\r\n\t\t\tparams.biomeV2EcosystemV2Ecozones = buildTreeTypeQueryList(\r\n\t\t\t\tbiomeV2EcosystemV2Ecozones,\r\n\t\t\t\tlists.props.biomeV2EcosystemV2Ecozones\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (ciceses && ciceses.length > 0) {\r\n\t\t\tparams.ciceses = buildTreeTypeQueryList(ciceses, lists.props.ciceses);\r\n\t\t}\r\n\r\n\t\tawait getEsvds({ ...query, params: { ...params } });\r\n\t};\r\n\r\n\tconst [mapData, setMapData] = useState([]);\r\n\r\n\tconst getEsvdMapData = async (query: EsvdQueryParams) => {\r\n\t\ttry {\r\n\t\t\tsetIsMapBusy(true);\r\n\t\t\tawait getEsvdMapCount(query);\r\n\t\t\tconst data = await agent.EsvdMaps.esvdMapList(query);\r\n\t\t\tsetMapData(data);\r\n\r\n\t\t\tsetIsMapBusy(false);\r\n\t\t\t// }\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getEsvdTotalMapCount = async () => {\r\n\t\ttry {\r\n\t\t\tconst response = await agent.EsvdMaps.totalMapListCount();\r\n\t\t\tsetEsvdTotalMapCount(response);\r\n\t\t\t// return response;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getEsvdMapCount = async (query: EsvdQueryParams) => {\r\n\t\ttry {\r\n\t\t\tconst response = await agent.EsvdMaps.mapListCount(query);\r\n\t\t\tsetEsvdMapCount(response);\r\n\t\t\t// return response;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getEsvdMapMarkerData = async (valueIds: number[]) => {\r\n\t\ttry {\r\n\t\t\tconst esvd = await agent.EsvdMaps.markerDetails(valueIds);\r\n\r\n\t\t\treturn esvd;\r\n\t\t\t// }\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Get Esvds using studyId\r\n\t * @param query\r\n\t */\r\n\tconst getStudyEsvds = async (studyId: string) => {\r\n\t\ttry {\r\n\t\t\tconst response = await agent.StudyValutations.studyValuationApi(studyId);\r\n\r\n\t\t\tsetStudyEsvds(response);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useEsvdValuation = () => {\r\n\tconst esvdValuation = useContext(EsvdValuationContext);\r\n\tif (esvdValuation == null) {\r\n\t\tthrow new Error(\r\n\t\t\t\"useEsvdValuation() called outside of a esvdValuation hook?\"\r\n\t\t);\r\n\t}\r\n\treturn esvdValuation;\r\n};\r\n\r\nexport { EsvdValuationProvider, useEsvdValuation };\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Label } from \"semantic-ui-react\";\r\nimport filterCheck from \"../../shared/FilterCheck\";\r\nimport { ErrorMessage, Form, Formik } from \"formik\";\r\nimport NoFilterGrid from \"../../shared/NoFilterGrid\";\r\nimport { LoadingButton } from \"../../shared/LoadingOverlay\";\r\nimport {\r\n\tStatsResultData,\r\n\tuseEsvdValuation,\r\n} from \"../../providers/EsvdValuationProvider\";\r\n// import { useModal } from \"../../hooks/ModalHook\";\r\nimport { useLists } from \"../../providers/ListsProvider\";\r\nimport { useModalWithContext } from \"../../layouts/ModalWithContext\";\r\nimport { TreeType } from \"../../models/ecosystemService\";\r\nimport { buildTreeTypeQueryList } from \"../../EsvdFunctions\";\r\n\r\nconst SummaryStatsButton = () => {\r\n\tconst { getEsvdsSummaryStats, esvdQueryParams, saveQueryParams } =\r\n\t\tuseEsvdValuation();\r\n\t// const { openModal } = useModal();\r\n\tconst { list } = useLists();\r\n\tconst { modalDispatcher } = useModalWithContext();\r\n\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [exclusions, setExclusions] = useState([]);\r\n\t// const [opened, setOpened] = useState(false);\r\n\t// const [isActionNeeded, setisActionNeeded] = useState(false);\r\n\t// const [modalMessage, setModalMessage] = useState(\"\");\r\n\tconst [modalTitle] = useState(\r\n\t\t\"No summary stats available for your selections in the Biome/Ecozone filter\"\r\n\t);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (exclusions.length > 0 && modalDispatcher) {\r\n\t\t\tconst msg = `Due to lack of data, summary stats are not available for your selected filter:\r\n\t\t\t\t${exclusions.join(\",\\n\")}`;\r\n\r\n\t\t\tmodalDispatcher({\r\n\t\t\t\topen: true,\r\n\t\t\t\tsize: \"tiny\",\r\n\t\t\t\tdisplayType: \"info\",\r\n\t\t\t\toptions: {\r\n\t\t\t\t\ttitle: modalTitle,\r\n\t\t\t\t\tbody: msg,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\t}, [exclusions]);\r\n\r\n\t// useEffect(() => {\r\n\t// \tconsole.log(\r\n\t// \t\t`esvdQueryParams in stats: ${JSON.stringify(\r\n\t// \t\t\tesvdQueryParams.params.biomeV2EcosystemV2Ecozones\r\n\t// \t\t)}`\r\n\t// \t);\r\n\t// }, [esvdQueryParams]);\r\n\r\n\tconst checkStats = (summaryStats: StatsResultData) => {\r\n\t\t// console.log(MediaLayout);\r\n\t\tconst { biomes, ecozones } = summaryStats || {};\r\n\t\tconst startbiomes = esvdQueryParams.params.biomeV2EcosystemV2Ecozones;\r\n\t\tconst included: number[] = [];\r\n\t\tif (startbiomes && biomes && biomes.length > 0) {\r\n\t\t\tconst bio = biomes.reduce((a: number[], b: any): number[] => {\r\n\t\t\t\tconst ids = b.biomeV2EcosystemV2Ecozones.map((k: any) => k.id);\r\n\t\t\t\treturn [...a, ...ids];\r\n\t\t\t}, []);\r\n\t\t\tincluded.push(...bio);\r\n\t\t}\r\n\t\tif (startbiomes && ecozones && ecozones.length > 0) {\r\n\t\t\tconst bio = ecozones.reduce((a: number[], b: any): number[] => {\r\n\t\t\t\tconst ids = b.biomeV2EcosystemV2Ecozones.map((k: any) => k.id);\r\n\t\t\t\treturn [...a, ...ids];\r\n\t\t\t}, []);\r\n\t\t\tincluded.push(...bio);\r\n\t\t}\r\n\r\n\t\tconst uniqueIncluded = new Set(included);\r\n\t\tif (startbiomes && startbiomes.length > 0 && uniqueIncluded) {\r\n\t\t\tconst exclusionIds = startbiomes.filter(\r\n\t\t\t\t(p: number) => !uniqueIncluded.has(p)\r\n\t\t\t);\r\n\r\n\t\t\tconst { biomeV2EcosystemV2Ecozones } = list;\r\n\t\t\tconst excs = biomeV2EcosystemV2Ecozones\r\n\t\t\t\t.filter((f: any) => exclusionIds.includes(f.id))\r\n\t\t\t\t.sort((a: TreeType, b: TreeType) => Number(a.code) - Number(b.code))\r\n\t\t\t\t.map((n: any) => `${n.code}) ${n.label}`);\r\n\t\t\tsetExclusions([...excs]);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleClick = async (setErrors: Function) => {\r\n\t\tif (filterCheck(esvdQueryParams)) {\r\n\t\t\tsetIsLoading(true);\r\n\r\n\t\t\tif (!esvdQueryParams.saved && filterCheck(esvdQueryParams)) {\r\n\t\t\t\t//save query if not saved already\r\n\t\t\t\tsaveQueryParams && saveQueryParams({ ...esvdQueryParams });\r\n\t\t\t}\r\n\r\n\t\t\tconst params = { ...esvdQueryParams.params };\r\n\r\n\t\t\t//get the classifications in params and treefy them to include their sub items\r\n\t\t\tconst { ecosystemServices, biomeV2EcosystemV2Ecozones } = params;\r\n\r\n\t\t\tif (ecosystemServices && ecosystemServices.length > 0) {\r\n\t\t\t\tparams.ecosystemServices = buildTreeTypeQueryList(\r\n\t\t\t\t\tecosystemServices,\r\n\t\t\t\t\tlist.ecosystemServices\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif (biomeV2EcosystemV2Ecozones && biomeV2EcosystemV2Ecozones.length > 0) {\r\n\t\t\t\tparams.biomeV2EcosystemV2Ecozones = buildTreeTypeQueryList(\r\n\t\t\t\t\tbiomeV2EcosystemV2Ecozones,\r\n\t\t\t\t\tlist.biomeV2EcosystemV2Ecozones\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tconst qryfil = {\r\n\t\t\t\t...esvdQueryParams,\r\n\t\t\t\tparams,\r\n\t\t\t};\r\n\t\t\tconst stats = await getEsvdsSummaryStats(qryfil);\r\n\t\t\tcheckStats(stats);\r\n\t\t\tsetIsLoading(false);\r\n\t\t} else {\r\n\t\t\tmodalDispatcher({\r\n\t\t\t\topen: true,\r\n\t\t\t\tsize: \"small\",\r\n\t\t\t\tdisplayType: \"info\",\r\n\t\t\t\toptions: {\r\n\t\t\t\t\ttitle: \"Attention!\",\r\n\t\t\t\t\tbody: (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\tSummary statistics are based on your query/filter and result\r\n\t\t\t\t\t\t\t\t\t\tset of Valuation records.\r\n\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\tYou have 0 valuations at this moment. Therefore no summary\r\n\t\t\t\t\t\t\t\t\t\tstatistics can be calculated yet.\r\n\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t),\r\n\t\t\t\t\tbasicModal: true,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\t// openModal({\r\n\t\t\t// \ticon: \"exclamation\",\r\n\t\t\t// \theader: \"Attention!\",\r\n\t\t\t// \tmain: (\r\n\t\t\t// \t\t\r\n\t\t\t// \t\t\t\t\t

\r\n\t\t\t// \t\t\t\t\t\tSummary statistics are based on your query/filter and result\r\n\t\t\t// \t\t\t\t\t\tset of Valuation records.\r\n\t\t\t// \t\t\t\t\t

\r\n\t\t\t// \t\t\t\t\t
\r\n\t\t\t// \t\t\t\t\t

\r\n\t\t\t// \t\t\t\t\t\tYou have 0 valuations at this moment. Therefore no summary\r\n\t\t\t// \t\t\t\t\t\tstatistics can be calculated yet.\r\n\t\t\t// \t\t\t\t\t

\r\n\t\t\t// \t\t\t\t\r\n\t\t\t// \t\t\t}\r\n\t\t\t// \t\t/>\r\n\t\t\t// \t),\r\n\t\t\t// \tisOpen: true,\r\n\t\t\t// \tactions: null,\r\n\t\t\t// });\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t {\r\n\t\t\t\t\thandleClick(setErrors);\r\n\t\t\t\t}}>\r\n\t\t\t\t{({ handleSubmit, errors }) => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default SummaryStatsButton;\r\n","import React from \"react\";\r\nimport { Card, Item } from \"semantic-ui-react\";\r\nimport history from \"../../history\";\r\nimport { resources } from \"../../shared/Literals\";\r\nimport EsvdExportEsvd from \"./EsvdExportEsvd\";\r\n\r\nimport moment from \"moment\";\r\nimport { useReferenceInfo } from \"../../providers/ReferenceInfoProvider\";\r\nimport SummaryStatsButton from \"../esvdStats/SummaryStatsButton\";\r\nimport { useEsvdValuation } from \"../../providers/EsvdValuationProvider\";\r\nimport { defaultEsvdParams } from \"../../models/EsvdQueryFilters\";\r\nimport { ModalWithContextProvider } from \"../../layouts/ModalWithContext\";\r\n\r\nconst EsvdActionsPanel = () => {\r\n\tconst { currentInfo } = useReferenceInfo();\r\n\tconst { esvdQueryParams, saveQueryParams } = useEsvdValuation();\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

Actions

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{/* */}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t history.push(resources.suggestStudy.path)}>\r\n\t\t\t\t\t\tSuggest a Study\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default EsvdActionsPanel;\r\n","import agent from \"../api/agent\";\r\nimport { defaultEsvdParams, EsvdQueryParams } from \"../models/EsvdQueryFilters\";\r\nexport const ESVD_CREATE = \"ESVD_CREATE\";\r\nexport const ESVD_EDIT = \"ESVD_EDIT\";\r\nexport const ESVD_DELETE = \"ESVD_DELETE\";\r\nexport const ESVD_FETCH = \"ESVD_FETCH\";\r\nexport const ESVDS_FETCH = \"ESVDS_FETCH\";\r\nexport const ESVDS_FETCH_APPEND = \"ESVDS_FETCH_APPEND\";\r\n\r\nexport const RESET_ESVDS = \"RESET_ESVDS\";\r\nexport const RESET_ESVDS_APPENDED_FILTERED_DATA =\r\n \"RESET_ESVDS_APPENDED_FILTERED_DATA\";\r\n\r\nexport const ESVDS_IS_LOADING = \"ESVDS_IS_LOADING\";\r\nexport const ESVDS_IS_BACKGROUND_LOADING = \"ESVDS_IS_BACKGROUND_LOADING\";\r\nexport const ESVDS_ACTIVE_PAGE = \"ESVDS_ACTIVE_PAGE\";\r\nexport const ESVDS_QUERY_FILTERS = \"ESVDS_QUERY_FILTERS\";\r\nexport const ESVDS_FETCH_FILTERED_APPEND = \"ESVDS_FETCH_FILTERED_APPEND\";\r\nexport const ESVDS_FILTERED_IS_BACKGROUND_LOADING =\r\n \"ESVDS_FILTERED_IS_BACKGROUND_LOADING\";\r\n\r\n//action to reset state\r\nexport const resetEsvds = () => (dispatch: any) => {\r\n dispatch({ type: RESET_ESVDS });\r\n};\r\n\r\n//action to reset state\r\nexport const resetEsvdAppendedFilteredData = () => (dispatch: any) => {\r\n dispatch({ type: RESET_ESVDS_APPENDED_FILTERED_DATA });\r\n};\r\n\r\n/**\r\n * use this to get the full dataset in chunks specified by the limit arugument and append to full list\r\n * @param args\r\n * @returns\r\n */\r\n\r\nexport const fetchEsvds =\r\n (filters: EsvdQueryParams) => async (dispatch: any) => {\r\n try {\r\n const response = await agent.Esvds.list(filters);\r\n dispatch({\r\n type: ESVDS_FETCH,\r\n payload: response,\r\n });\r\n } catch (error: any) {\r\n throw error.response ? error.response.statusText : error.message;\r\n }\r\n };\r\n\r\nexport const showEsvdIsLoading =\r\n (isLoading: boolean) => async (dispatch: any) => {\r\n dispatch({\r\n type: ESVDS_IS_LOADING,\r\n payload: isLoading,\r\n });\r\n };\r\n\r\nexport const setActivePage =\r\n (page: string | number) => async (dispatch: any) => {\r\n dispatch({\r\n type: ESVDS_ACTIVE_PAGE,\r\n payload: page,\r\n });\r\n };\r\n\r\nexport const setEsvdQueryFilters =\r\n (filters: EsvdQueryParams = { ...defaultEsvdParams}) =>\r\n async (dispatch: any) => {\r\n dispatch({\r\n type: ESVDS_QUERY_FILTERS,\r\n payload: filters,\r\n });\r\n };\r\n","import React from \"react\";\r\nimport { Card, Item } from \"semantic-ui-react\";\r\n\r\nconst EsvdStatisticsPanel = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

About summary statistics

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tIn most cases, only a portion of the search results will be included\r\n\t\t\t\t\t\tin the calculation of summary statistics. These are value records\r\n\t\t\t\t\t\tthat: i) Could be standardised to a common set of\r\n\t\t\t\t\t\tunits (International dollars/hectare/year in 2020 price levels); ii){\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\tRefer to only 1 biome and/or ecozone and 1 ecosystem service\r\n\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t(i.e. values with multiple services or ecosystem types are not\r\n\t\t\t\t\t\tincluded) and iii) Do not use value transfer as a\r\n\t\t\t\t\t\tvaluation method.\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tAdditional summary statistics (number of value records used to\r\n\t\t\t\t\t\tcompute the mean, median, standard deviation, minimum, maximum) can\r\n\t\t\t\t\t\tbe viewed by hovering the mouse pointer over the results\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tA common outlier exclusion rule (OER) based on a standard boxplot\r\n\t\t\t\t\t\tgraph is used. The OER defines observations as outliers that are\r\n\t\t\t\t\t\teither located before the first quantile minus 1.5 times the\r\n\t\t\t\t\t\tinterquartile range or beyond the third quantile plus 1.5 times the\r\n\t\t\t\t\t\tinterquartile range on a logarithmic scale.\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tFor more information on the ESVD, see{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\there\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
  • \r\n\t\t\t\t
\r\n\t\t\t\t{/*

\r\n\t\t\t\t\tNote that this summary of values is for illustrative purposes,\r\n\t\t\t\t\tonly to provide an impression of the order of magnitude of the values\r\n\t\t\t\t\tobtained from the literature and to identify data gaps. It is not\r\n\t\t\t\t\tadvised to use these summary statistics for value transfers since the\r\n\t\t\t\t\tsummary statistics reflect the underlying ecological and\r\n\t\t\t\t\tsocio-economic contexts of diverse (but not necessarily\r\n\t\t\t\t\trepresentative) study sites.\r\n\t\t\t\t

*/}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default EsvdStatisticsPanel;\r\n","import { Component } from \"react\";\r\nimport { Card, Item } from \"semantic-ui-react\";\r\n\r\n// interface IProps {\r\n// mobile?: boolean;\r\n// }\r\n\r\nconst EsvdGetStartedPanel = () => {\r\n\t// const { mobile } = this.props;\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

GET STARTED

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t{/*
*/}\r\n\t\t\t\t
    \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tSet your search criteria in the “Filters” card to find value\r\n\t\t\t\t\t\trecords.\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tBrowse your results in the “Valuations” table below. The results can\r\n\t\t\t\t\t\tbe toggled between table format and a map display.\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tGenerate summary statistics, download data, or suggest a study using\r\n\t\t\t\t\t\tthe “Actions” card.\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\t{/* My Profile */}\r\n\t\t\t\t\t\tFor more information consult the \"About the ESVD\" section on the\r\n\t\t\t\t\t\tHome page and/or the{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tESVD.info\r\n\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\twebsite\r\n\t\t\t\t\t
  • \r\n\t\t\t\t
\r\n\t\t\t\t{/*
*/}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default EsvdGetStartedPanel;\r\n","import { useState, useEffect } from \"react\";\r\nimport Table, { AutoResizer } from \"react-base-table\";\r\nimport \"react-base-table/styles.css\";\r\nimport { defaultSort, IS_DESCEND_DEFAULT } from \"../../shared/Literals\";\r\nimport { useEsvdValuation } from \"../../providers/EsvdValuationProvider\";\r\n// import filterCheck from \"../../shared/FilterCheck\";\r\n\r\nconst EsvdTable = () => {\r\n\tconst { esvds, getEsvds, updateQueryParams, esvdQueryParams } =\r\n\t\tuseEsvdValuation();\r\n\tconst [isDescend, setIsDescend] = useState(IS_DESCEND_DEFAULT);\r\n\tconst [sort, setSort] = useState(defaultSort);\r\n\r\n\t// useEffect(() => {\r\n\t// \tif (filterCheck(esvdQueryParams)) {\r\n\t// \t\tgetEsvds(esvdQueryParams);\r\n\t// \t}\r\n\t// }, []);\r\n\r\n\tconst onColumnSort = async (sortBy: any) => {\r\n\t\tesvdQueryParams.params.sortColumn = sortBy;\r\n\t\tesvdQueryParams.params.isDescend = !isDescend;\r\n\t\tupdateQueryParams(esvdQueryParams);\r\n\t\tawait getEsvds(esvdQueryParams);\r\n\t\tsetSort(sortBy);\r\n\t\tsetIsDescend(!isDescend);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{({ width, height }) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n\t// }\r\n};\r\n\r\nexport default EsvdTable;\r\n","import React from \"react\";\r\nimport { Card, Grid } from \"semantic-ui-react\";\r\n\r\nimport EsvdPagination from \"./EsvdPagination\";\r\n// import { CurrentReferenceInfo } from \"../../models/ReferenceInfo\";\r\nimport { useEsvdValuation } from \"../../providers/EsvdValuationProvider\";\r\nimport { LIMIT } from \"../../shared/Literals\";\r\nimport EsvdTable from \"./EsvdTable\";\r\n\r\n// interface IProps {\r\n// \tfetchEsvdsCount?: any;\r\n// \tesvdCount?: number;\r\n// \tcurrentVersion?: CurrentReferenceInfo;\r\n// }\r\n\r\nconst EsvdTablePanel = () => {\r\n\tconst { esvdCount, activePage, setActivePage } = useEsvdValuation();\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n\t// }\r\n};\r\n\r\nexport default EsvdTablePanel;\r\n","import React, { useState } from \"react\";\r\n// import ReactDOM from \"react-dom\";\r\n// import { Header, Sidebar } from \"semantic-ui-react\";\r\n\r\nconst SidebarContext = React.createContext(null);\r\n\r\n// The ActiveMenuProvider is responsible for ActiveMenu management\r\nconst SidebarProvider = ({ children }: { children: any }) => {\r\n\tconst [visible, setVisible] = useState(false);\r\n\tconst [triggerElementId, setTriggerElementId] = useState(null);\r\n\tconst [sidebarContent, setSidebarContent] = useState();\r\n\r\n\tfunction openSidebar(content: any, elementId: any) {\r\n\t\tsetSidebarContent(content);\r\n\t\tsetVisible(true);\r\n\t\tsetTriggerElementId(elementId);\r\n\t}\r\n\r\n\tfunction toggleSidebar(content: any) {\r\n\t\tsetSidebarContent(visible ? null : content);\r\n\t\tsetVisible(!visible);\r\n\t}\r\n\r\n\tfunction closeSidebar(elementId: any) {\r\n\t\tif (elementId && triggerElementId) {\r\n\t\t\tif (triggerElementId !== elementId) return;\r\n\t\t}\r\n\t\tsetVisible(false);\r\n\t\tsetSidebarContent(null);\r\n\t\tsetTriggerElementId(null);\r\n\t}\r\n\r\n\tfunction changeContent(content: any) {\r\n\t\tsetSidebarContent(content);\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\nconst useSidebar = () => {\r\n\tconst modal = React.useContext(SidebarContext);\r\n\tif (modal == null) {\r\n\t\tthrow new Error(\"useSidebar() called outside of a modal hook?\");\r\n\t}\r\n\treturn modal;\r\n};\r\n\r\nexport { SidebarProvider, useSidebar };\r\n","import React, { useEffect } from \"react\";\r\n// import ReactDOM from \"react-dom\";\r\nimport { InfoWindowF, MarkerF } from \"@react-google-maps/api\";\r\nimport { useEsvdValuation } from \"../../providers/EsvdValuationProvider\";\r\n// import { Esvd } from \"../../models/esvd\";\r\nimport { Card, Divider } from \"semantic-ui-react\";\r\nimport { useSidebar } from \"../../hooks/SidebarHook\";\r\nimport { standardValueFormat } from \"../../EsvdFunctions\";\r\n\r\n//getEsvdMapMarkerData\r\nconst EsvdMapMarker = ({ markerData }: { markerData: any }) => {\r\n\tconst { getEsvdMapMarkerData } = useEsvdValuation();\r\n\tconst {\r\n\t\tvisible,\r\n\t\ttriggerElementId,\r\n\t\topenSidebar,\r\n\t\tcloseSidebar,\r\n\t\t// toggleSidebar,\r\n\t\t// changeContent,\r\n\t} = useSidebar();\r\n\r\n\tconst [showInfoWindow, setShowInfoWindow] = React.useState(false);\r\n\t// const [infoWindowHover, setInfoWindowHover] = React.useState(false);\r\n\r\n\t// const [esvds, setEsvds] = React.useState([]);\r\n\r\n\tconst handleMouseOver = async (e: any) => {\r\n\t\tsetShowInfoWindow(true);\r\n\t};\r\n\r\n\tconst handleMouseExit = (e: any) => {\r\n\t\tsetShowInfoWindow(false);\r\n\t};\r\n\r\n\tconst handleMouseClick = async (e: any) => {\r\n\t\t// toggleSidebar();\r\n\t\tif (visible && triggerElementId === markerData.valueIds[0]) {\r\n\t\t\tcloseSidebar(markerData.valueIds[0]);\r\n\t\t} else {\r\n\t\t\tconst esv = await getEsvdMapMarkerData(markerData.valueIds);\r\n\t\t\topenSidebar(tippers(esv), markerData.valueIds[0]);\r\n\t\t}\r\n\t};\r\n\t//https://medium.com/free-code-camp/how-to-change-javascript-google-map-marker-color-8a72131d1207\r\n\t//https://sites.google.com/site/gmapsdevelopment/\r\n\r\n\t// const getLocations = (locations:any) => {\r\n\t// \tmarkerData.locations.map((loc:string)=>)\r\n\t// }\r\n\treturn (\r\n\t\t handleMouseOver(e)}\r\n\t\t\tonClick={(e) => handleMouseClick(e)}\r\n\t\t\tonMouseOut={(e) => handleMouseExit(e)}\r\n\t\t\ticon=\"http://maps.google.com/mapfiles/ms/icons/green-dot.png\"\r\n\t\t\t// label={\r\n\t\t\t// \tmarkerData.valueIds.length > 1 ? `${markerData.valueIds.length}` : \"\"\r\n\t\t\t// }\r\n\t\t>\r\n\t\t\t{/* {markerData.valueIds.length > 1 && (\r\n\t\t\t\t{markerData.valueIds.length}\r\n\t\t\t)} */}\r\n\t\t\t{showInfoWindow && (\r\n\t\t\t\t\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n\r\n\tfunction tippers(esvds: any[]) {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t 1\r\n\t\t\t\t\t\t\t\t? esvds.length + \" valuations\"\r\n\t\t\t\t\t\t\t\t: esvds.length + \" valuation\"\r\n\t\t\t\t\t\t} `}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{esvds.map((esvd, i) => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t 1 ? i + 1 + \". Location\" : \"Location\"\r\n\t\t\t\t\t\t\t}: ${esvd?.studyLocation || \"\"}`}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{esvd.siteAreaInHectares && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{esvds.length > 1 && i !== esvds.length - 1 && }\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t
\r\n\t\t); //Site Area (ha):\r\n\t}\r\n};\r\n\r\nexport default React.memo(EsvdMapMarker);\r\n","import React from \"react\";\r\nimport { GoogleMap, useJsApiLoader } from \"@react-google-maps/api\";\r\nimport { useEsvdValuation } from \"../../providers/EsvdValuationProvider\";\r\nimport LoadingOverlay from \"../../shared/LoadingOverlay\";\r\nimport EsvdMapMarker from \"./EsvdMapMarker\";\r\n\r\nconst containerStyle = {\r\n\twidth: \"100%\",\r\n\theight: \"70vH\",\r\n\t// height: \"90vH\",\r\n};\r\n\r\nconst center = {\r\n\tlat: -3.745,\r\n\tlng: -38.523,\r\n};\r\nconst EsvdMaps = () => {\r\n\tconst { getEsvdMapData, mapData, esvdQueryParams, isMapBusy, setIsMapBusy } =\r\n\t\tuseEsvdValuation();\r\n\r\n\tconst { isLoaded } = useJsApiLoader({\r\n\t\tid: \"google-map-script\",\r\n\t\tgoogleMapsApiKey: process.env.REACT_APP_MAP_API_KEY || \"\",\r\n\t});\r\n\r\n\tconst [mapDats, setMapDats] = React.useState();\r\n\r\n\tReact.useEffect(() => {\r\n\t\tgetEsvdMapData(esvdQueryParams);\r\n\t}, []);\r\n\r\n\t// React.useEffect(() => {\r\n\t// \tgetEsvdMapData(esvdQueryParams);\r\n\t// }, [esvdQueryParams]);\r\n\r\n\tconst groupDups = () => {\r\n\t\tconst marks: any = {};\r\n\t\tmapData.forEach((mark) => {\r\n\t\t\tconst pos = `${mark.latitude}:${mark.longitude}`;\r\n\t\t\tif (marks[pos]) {\r\n\t\t\t\tmarks[pos].valueIds.push(mark.valueId);\r\n\t\t\t\tmarks[pos].locations.add(mark.studyLocation);\r\n\t\t\t} else {\r\n\t\t\t\tmarks[pos] = {\r\n\t\t\t\t\tposition: { lat: Number(mark.latitude), lng: Number(mark.longitude) },\r\n\t\t\t\t\tvalueIds: [mark.valueId],\r\n\t\t\t\t\tlocations: new Set([mark.studyLocation]),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn marks;\r\n\t};\r\n\tReact.useEffect(() => {\r\n\t\t// mapData.map((d: EsvdMap, i: number) => ({\r\n\t\t// \ttitle: d.valueId?.toString(),\r\n\t\t// \tvalueId: d.valueId,\r\n\t\t// \tposition: { lat: Number(d.latitude), lng: Number(d.longitude) },\r\n\t\t// }));\r\n\t\tconst dat = groupDups();\r\n\r\n\t\tconst maks = markers(dat);\r\n\t\tsetMapDats(maks);\r\n\t}, [mapData]);\r\n\r\n\tconst onUnmount = React.useCallback(function callback(map) {\r\n\t\tsetMapDats([]);\r\n\t}, []);\r\n\r\n\tconst markers = (marks: any) => {\r\n\t\tlet mks: any[] = [];\r\n\t\t(async function mars() {\r\n\t\t\t<>\r\n\t\t\t\t{\r\n\t\t\t\t\t(mks = Object.entries(marks).map(([key, value], i) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)))\r\n\t\t\t\t}\r\n\t\t\t;\r\n\t\t})();\r\n\t\t// setIsMapBusy(false);\r\n\t\treturn mks;\r\n\t};\r\n\r\n\treturn isLoaded ? (\r\n\t\t\r\n\t\t\t{/* Child components, such as markers, info windows, etc. */}\r\n\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\t{mapData.length > 0 && mapDats}\r\n\t\t\t\t{/* */}\r\n\t\t\t\r\n\t\t\r\n\t) : (\r\n\t\t<>\r\n\t);\r\n};\r\n\r\nexport default React.memo(EsvdMaps);\r\n","import React from \"react\";\r\nimport { Card, Grid, Menu, Segment, Sidebar } from \"semantic-ui-react\";\r\nimport { SidebarProvider, useSidebar } from \"../../hooks/SidebarHook\";\r\n\r\nimport EsvdMaps from \"./EsvdMaps\";\r\n\r\nexport const SidebarPanel = (props: any) => {\r\n\tconst { visible, closeSidebar, sidebarContent } = useSidebar();\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t closeSidebar()}\r\n\t\t\t\t\t\tvertical\r\n\t\t\t\t\t\tvisible={visible}\r\n\t\t\t\t\t\twidth=\"very wide\">\r\n\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{/* {typeof sidebarContent === \"function\"\r\n\t\t\t\t\t\t\t\t? sidebarContent()\r\n\t\t\t\t\t\t\t\t: sidebarContent} */}\r\n\t\t\t\t\t\t\t{sidebarContent}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t{/* \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tGames\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tChannels\r\n\t\t\t\t\t\t */}\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst EsvdMapPanel = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default EsvdMapPanel;\r\n","import React from \"react\";\r\nimport { Button, Card } from \"semantic-ui-react\";\r\n\r\n// import { CurrentReferenceInfo } from \"../../models/ReferenceInfo\";\r\nimport { useReferenceInfo } from \"../../providers/ReferenceInfoProvider\";\r\nimport { useEsvdValuation } from \"../../providers/EsvdValuationProvider\";\r\nimport EsvdTablePanel from \"./EsvdTablePanel\";\r\nimport EsvdMapPanel from \"./EsvdMapPanel\";\r\nimport filterCheck from \"../../shared/FilterCheck\";\r\n\r\nconst EsvdDataWrapper = () => {\r\n\tconst { currentInfo } = useReferenceInfo();\r\n\t// const { esvdCount, showMap, setShowMap } = useEsvdValuation();\r\n\tconst {\r\n\t\tesvdCount,\r\n\t\tesvdTotalCount,\r\n\t\tesvdMapCount,\r\n\t\tshowMap,\r\n\t\tsetShowMap,\r\n\t\tsaveQueryParams,\r\n\t\tesvdQueryParams,\r\n\t} = useEsvdValuation();\r\n\r\n\tconst switchBetweenMapTable = () => {\r\n\t\t//save query if valid\r\n\t\tif (!esvdQueryParams.saved && filterCheck(esvdQueryParams)) {\r\n\t\t\t//save query if not saved already\r\n\t\t\tsaveQueryParams && saveQueryParams({ ...esvdQueryParams });\r\n\t\t}\r\n\t\tsetShowMap(!showMap);\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{showMap ? (\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tValuations: {`${esvdMapCount} of ${esvdTotalCount}`}\r\n\t\t\t\t\t

\r\n\t\t\t\t) : (\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tValuations: {`${esvdCount} of ${esvdTotalCount}`}\r\n\t\t\t\t\t

\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{currentInfo && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tDatabase Version: {`${currentInfo.version}`}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t switchBetweenMapTable()}\r\n\t\t\t\t\t\t\tsize=\"tiny\">\r\n\t\t\t\t\t\t\t{showMap ? \"Show Table\" : \"Show Map\"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\t{showMap ? : }\r\n\t\t
\r\n\t);\r\n\t// }\r\n};\r\n\r\nexport default EsvdDataWrapper;\r\n","import React from \"react\";\r\nimport { Button, Card, Form, Input, Label } from \"semantic-ui-react\";\r\nimport { setEsvdQueryFilters } from \"../../actions/esvdActions\";\r\nimport {\r\n\tdefaultSort,\r\n\tFILTERS,\r\n\tIS_DESCEND_DEFAULT,\r\n\tLIMIT,\r\n} from \"../../shared/Literals\";\r\nimport { SelectDrop } from \"../../shared/SelectDropdown\";\r\nimport { TreeType } from \"../../models/ecosystemService\";\r\nimport {\r\n\tbuildTreeTypeQueryList,\r\n\tformatBiomeForDropdown,\r\n\tformatCicesForDropdown,\r\n\tformatESForDropdown,\r\n\tformatSeeasDropdown,\r\n} from \"../../EsvdFunctions\";\r\n\r\nimport { ErrorMessage, Formik } from \"formik\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport filterCheck from \"../../shared/FilterCheck\";\r\nimport NoFilterGrid from \"../../shared/NoFilterGrid\";\r\nimport { LoadingButton } from \"../../shared/LoadingOverlay\";\r\nimport { useLists } from \"../../providers/ListsProvider\";\r\nimport { useEsvdValuation } from \"../../providers/EsvdValuationProvider\";\r\nimport { defaultEsvdParams } from \"../../models/EsvdQueryFilters\";\r\nimport { useModalWithContext } from \"../../layouts/ModalWithContext\";\r\n\r\nconst EsvdFilterPanel = () => {\r\n\t// const { openModal } = useModal();\r\n\tconst { modalDispatcher } = useModalWithContext();\r\n\tconst {\r\n\t\tgetEsvds,\r\n\t\tgetEsvdsCount,\r\n\t\tclearEsvds,\r\n\t\tsaveQueryParams,\r\n\t\tactivePage,\r\n\t\tsetActivePage,\r\n\t\tupdateQueryParams,\r\n\t\tgetEsvdTotalMapCount,\r\n\t\tgetEsvdTotalCount,\r\n\t\tshowMap,\r\n\t\tgetEsvdMapData,\r\n\t\tsetQueryParamsForSave,\r\n\t\tqueryParamsForSave,\r\n\t\tesvdQueryParams,\r\n\t} = useEsvdValuation();\r\n\tconst { loadLists, list } = useLists();\r\n\r\n\tlet countriesRef: any | null = null;\r\n\tlet continentsRef: any | null = null;\r\n\tlet ecosystemServicesRef: any | null = null;\r\n\tlet cicesRef: any | null = null;\r\n\tlet protectionStatusRef: any | null = null;\r\n\tlet valuationMethodRef: any | null = null;\r\n\tlet biomeV2Ref: any | null = null;\r\n\tlet seeasRef: any | null = null;\r\n\r\n\tconst [queryFilters, setQueryFilters] = React.useState({\r\n\t\t...defaultEsvdParams,\r\n\t});\r\n\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [currentPage, setCurrentPage] = React.useState(0);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tclearFilter();\r\n\t\t(async () => {\r\n\t\t\tsetIsLoading(true);\r\n\t\t\tawait loadLists();\r\n\t\t\tawait getEsvdTotalCount();\r\n\t\t\tawait getEsvdTotalMapCount();\r\n\t\t\tsetIsLoading(false);\r\n\t\t})();\r\n\t\tsetCurrentPage(activePage);\r\n\t\treturn () => {\r\n\t\t\t// clearFilter();\r\n\t\t};\r\n\t}, []);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (activePage !== currentPage) {\r\n\t\t\t(async () => {\r\n\t\t\t\tsetIsLoading(true);\r\n\t\t\t\tawait getActivePageData(false);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t\tsetCurrentPage(activePage);\r\n\t\t\t})();\r\n\t\t}\r\n\r\n\t\treturn () => {};\r\n\t}, [activePage]);\r\n\r\n\tconst setSelectedItem = (value: TreeType[], description: string) => {\r\n\t\tif ([FILTERS.ecosystemServices, FILTERS.ciceses].includes(description)) {\r\n\t\t\tqueryFilters.isTeeb =\r\n\t\t\t\tvalue.length === 0\r\n\t\t\t\t\t? null\r\n\t\t\t\t\t: description === FILTERS.ciceses\r\n\t\t\t\t\t? \"cices\"\r\n\t\t\t\t\t: \"teeb\";\r\n\t\t}\r\n\t\t// const params = queryFilters.params;\r\n\t\t// params[`${description}`] = value.map((a) => a.id);\r\n\t\tqueryFilters.params[`${description}`] = value.map((a) => a.id);\r\n\t\tqueryParamsForSave[`${description}`] = value.map((a) => a.label);\r\n\t\tqueryParamsForSave[`${description}Codes`] = value.map((a) => a.code);\r\n\t\tsetQueryParamsForSave({ ...queryParamsForSave });\r\n\t\tsetQueryFilters({ ...queryFilters });\r\n\t\tupdateQueryParams(queryFilters);\r\n\r\n\t\t// console.log(\r\n\t\t// \t`original after process: ${JSON.stringify(\r\n\t\t// \t\tqueryFilters.params.biomeV2EcosystemV2Ecozones\r\n\t\t// \t)}`\r\n\t\t// );\r\n\t\t// console.log(\r\n\t\t// \t`esvdQueryParams after process: ${JSON.stringify(\r\n\t\t// \t\tesvdQueryParams.params.biomeV2EcosystemV2Ecozones\r\n\t\t// \t)}`\r\n\t\t// );\r\n\t};\r\n\r\n\tconst setFreeText = (e: any) => {\r\n\t\tqueryFilters.params.freeText = e.target.value;\r\n\t\tqueryParamsForSave.freeText = e.target.value;\r\n\t\tsetQueryFilters({ ...queryFilters });\r\n\t\tsetQueryParamsForSave({ ...queryParamsForSave });\r\n\t\tupdateQueryParams(queryFilters);\r\n\t};\r\n\r\n\tconst resetSortColumn = () => {\r\n\t\tqueryFilters.params.sortColumn = defaultSort.key;\r\n\t\tqueryFilters.params.isDescend = IS_DESCEND_DEFAULT;\r\n\t\tsetQueryFilters({ ...queryFilters });\r\n\t\tsetEsvdQueryFilters(queryFilters);\r\n\t};\r\n\r\n\tconst getActivePageData = async (isFreshFilter: boolean) => {\r\n\t\t// params.offset = page > 1 ? page - 1 : 0;\r\n\r\n\t\t// console.log(\r\n\t\t// \t`esvdQueryParams before treefy: ${JSON.stringify(\r\n\t\t// \t\tesvdQueryParams.params.biomeV2EcosystemV2Ecozones\r\n\t\t// \t)}`\r\n\t\t// );\r\n\t\t// console.log(\r\n\t\t// \t`before treefy: ${JSON.stringify(\r\n\t\t// \t\tqueryFilters.params.biomeV2EcosystemV2Ecozones\r\n\t\t// \t)}`\r\n\t\t// );\r\n\r\n\t\tconst params = { ...queryFilters.params };\r\n\t\ttreefyClassFilters(params);\r\n\r\n\t\tconst page = Number(isFreshFilter ? 1 : activePage);\r\n\t\tconst qryfil = {\r\n\t\t\t...queryFilters,\r\n\t\t\tparams: { ...params, offset: page > 1 ? page - 1 : 0 },\r\n\t\t};\r\n\t\tsetIsLoading(true);\r\n\t\tif (isFreshFilter) {\r\n\t\t\t//get the count of records to build the pagination UI\r\n\t\t\tawait getEsvdsCount(qryfil);\r\n\t\t}\r\n\t\tawait getEsvds(qryfil);\r\n\t\tsetIsLoading(false);\r\n\t\t// setQueryFilters({ ...qryfil });\r\n\r\n\t\t// console.log(\r\n\t\t// \t`original after treefy: ${JSON.stringify(\r\n\t\t// \t\tqueryFilters.params.biomeV2EcosystemV2Ecozones\r\n\t\t// \t)}`\r\n\t\t// );\r\n\t\t// console.log(\r\n\t\t// \t`esvdQueryParams before treefy: ${JSON.stringify(\r\n\t\t// \t\tesvdQueryParams.params.biomeV2EcosystemV2Ecozones\r\n\t\t// \t)}`\r\n\t\t// );\r\n\t\t// console.log(`-----------------------------------------------`);\r\n\t\t// console.log(\r\n\t\t// \t`copy after treefy: ${JSON.stringify(\r\n\t\t// \t\tqryfil.params.biomeV2EcosystemV2Ecozones\r\n\t\t// \t)}`\r\n\t\t// );\r\n\t};\r\n\r\n\t//add the sub items of each selected classification. eg if biome Marine is selected, add all the ecozones uder Marine to the list.\r\n\t//NOTE: these added items should not be saved as part of the query sent to the server.\r\n\tconst treefyClassFilters = (params: any) => {\r\n\t\tconst { ecosystemServices, biomeV2EcosystemV2Ecozones, ciceses } = params;\r\n\r\n\t\tif (ecosystemServices && ecosystemServices.length > 0) {\r\n\t\t\tparams.ecosystemServices = buildTreeTypeQueryList(\r\n\t\t\t\tecosystemServices,\r\n\t\t\t\tlist.ecosystemServices\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (biomeV2EcosystemV2Ecozones && biomeV2EcosystemV2Ecozones.length > 0) {\r\n\t\t\tparams.biomeV2EcosystemV2Ecozones = buildTreeTypeQueryList(\r\n\t\t\t\tbiomeV2EcosystemV2Ecozones,\r\n\t\t\t\tlist.biomeV2EcosystemV2Ecozones\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (ciceses && ciceses.length > 0) {\r\n\t\t\tparams.ciceses = buildTreeTypeQueryList(ciceses, list.ciceses);\r\n\t\t}\r\n\t};\r\n\r\n\tconst clearFilter = () => {\r\n\t\tconst query = {\r\n\t\t\tparams: {\r\n\t\t\t\tlimit: LIMIT,\r\n\t\t\t\toffset: 0,\r\n\t\t\t\tfreeText: \"\",\r\n\t\t\t\tsortColumn: defaultSort.key,\r\n\t\t\t\tisDescend: IS_DESCEND_DEFAULT,\r\n\t\t\t},\r\n\t\t};\r\n\t\tsetQueryFilters(query);\r\n\t\tcontinentsRef.select.clearValue();\r\n\t\tcountriesRef.select.clearValue();\r\n\t\tecosystemServicesRef.select.clearValue();\r\n\t\tprotectionStatusRef.select.clearValue();\r\n\t\tvaluationMethodRef.select.clearValue();\r\n\t\tcicesRef.select.clearValue();\r\n\t\tbiomeV2Ref.select.clearValue();\r\n\t\tseeasRef.select.clearValue();\r\n\t\tsetActivePage(0);\r\n\t\tupdateQueryParams(query);\r\n\t\tsetQueryParamsForSave({});\r\n\t\tshowMap && getEsvdMapData(query);\r\n\t\tclearEsvds();\r\n\t};\r\n\r\n\tconst handleFormSubmit = (\r\n\t\tvalues: { error: null },\r\n\t\tsetErrors: Function\r\n\t): void => {\r\n\t\tclearEsvds();\r\n\t\tresetSortColumn();\r\n\t\tif (filterCheck(queryFilters)) {\r\n\t\t\tsetIsLoading(true);\r\n\t\t\tif (!showMap) {\r\n\t\t\t\tgetActivePageData(true)\r\n\t\t\t\t\t.then((res: any) => {\r\n\t\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t\t\t// //get the total number of items in the results\r\n\t\t\t\t\t\t// queryParamsForSave.resultsCount = esvdCount;\r\n\t\t\t\t\t\t// //save filter query\r\n\t\t\t\t\t\t// queryParamsForSave && saveQueryParams(queryParamsForSave);\r\n\r\n\t\t\t\t\t\tif (!esvdQueryParams.saved && filterCheck(esvdQueryParams)) {\r\n\t\t\t\t\t\t\t//save query if not saved already\r\n\t\t\t\t\t\t\tsaveQueryParams && saveQueryParams();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error: any) => {\r\n\t\t\t\t\t\t// setErrors({ error: ErrorHandler(error) });\r\n\t\t\t\t\t\tsetErrors({\r\n\t\t\t\t\t\t\terror: ErrorHandler(\r\n\t\t\t\t\t\t\t\t\"Your amount of Biome/Ecozone filters exceeds the current limit. Please enter less filters.\"\r\n\t\t\t\t\t\t\t),\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tgetEsvdMapData(queryFilters);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tmodalDispatcher({\r\n\t\t\t\topen: true,\r\n\t\t\t\tsize: \"small\",\r\n\t\t\t\tdisplayType: \"info\",\r\n\t\t\t\toptions: {\r\n\t\t\t\t\ttitle: \"Attention!\",\r\n\t\t\t\t\tbody: ,\r\n\t\t\t\t\tbasicModal: true,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t}}>\r\n\t\t\t{({ handleSubmit, isValid, dirty, isSubmitting, errors }) => (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

Filters

\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tsetActivePage(0);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tclassName=\"ui button\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tclearFilter();\r\n\t\t\t\t\t\t\t\t\t\tclearEsvds();\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\ttype=\"reset\"\r\n\t\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t\t// marginTop: \"1rem\",\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"#f6da6e\",\r\n\t\t\t\t\t\t\t\t\t\t// display: \"block !important\",\r\n\t\t\t\t\t\t\t\t\t\theight: \"2rem\",\r\n\t\t\t\t\t\t\t\t\t\t// width: \"5rem\",\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\tClear Filters\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tbiomeV2Ref = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={formatBiomeForDropdown(\r\n\t\t\t\t\t\t\t\t\t\tlist.biomeV2EcosystemV2Ecozones\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"Biome / Ecozone\"\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) =>\r\n\t\t\t\t\t\t\t\t\t\tsetSelectedItem(value, FILTERS.biomeV2EcosystemV2Ecozones)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tcountriesRef = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={list.countries}\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"Country\"\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) =>\r\n\t\t\t\t\t\t\t\t\t\tsetSelectedItem(value, FILTERS.countries)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tcontinentsRef = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={list.continents}\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"Continent\"\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) =>\r\n\t\t\t\t\t\t\t\t\t\tsetSelectedItem(value, FILTERS.continents)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tprotectionStatusRef = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={list.protectionStatuses}\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"Protection Status\"\r\n\t\t\t\t\t\t\t\t\t// onChange={this.setSelectedProtectionStatuses}\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) =>\r\n\t\t\t\t\t\t\t\t\t\tsetSelectedItem(value, FILTERS.protectionStatuses)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tecosystemServicesRef = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={formatESForDropdown(list.ecosystemServices)}\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"TEEB services classification\"\r\n\t\t\t\t\t\t\t\t\t// onChange={this.setSelectedEcosystemServices}\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) =>\r\n\t\t\t\t\t\t\t\t\t\tsetSelectedItem(value, FILTERS.ecosystemServices)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tcicesRef = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={formatCicesForDropdown(list.ciceses)}\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"CICES services classification\"\r\n\t\t\t\t\t\t\t\t\t// onChange={this.setSelectedCICES}\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) =>\r\n\t\t\t\t\t\t\t\t\t\tsetSelectedItem(value, FILTERS.ciceses)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t// morePadding={true}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tseeasRef = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={formatSeeasDropdown(list.sEEAs)}\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"SEEA services classification\"\r\n\t\t\t\t\t\t\t\t\t// onChange={this.setSelectedSEEAS}\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) =>\r\n\t\t\t\t\t\t\t\t\t\tsetSelectedItem(value, FILTERS.seeas)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tvaluationMethodRef = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={list.valuationMethods}\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"Valuation Method\"\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) =>\r\n\t\t\t\t\t\t\t\t\t\tsetSelectedItem(value, FILTERS.valuationMethods)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t setFreeText(val)}\r\n\t\t\t\t\t\t\t\t\tname={\"freeText\"}\r\n\t\t\t\t\t\t\t\t\tplaceholder={'Free Text Search - Use \"\" for string matching'}\r\n\t\t\t\t\t\t\t\t\tdata-after='Use \"\" for string matching'\r\n\t\t\t\t\t\t\t\t\tvalue={queryFilters.params.freeText}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n\t// }\r\n};\r\n\r\nexport default EsvdFilterPanel;\r\n","import { NumberFormat } from \"../../EsvdFunctions\";\r\nimport { SummaryStatsColumnStructure } from \"../../models/columnStructure\";\r\nimport { Esvd, Statistics } from \"../../models/esvd\";\r\nimport { ItemLabels } from \"../../shared/Literals\";\r\n\r\nexport function processStatsData1(\r\n data: SummaryStatsColumnStructure[],\r\n rowHeadersProp: string,\r\n columnHeadersProp: string,\r\n valueProp: string,\r\n rowSortingProp: string = \"\",\r\n columnSortingProp: string = \"\"\r\n): any {\r\n if (data.length === 0) {\r\n return { header: [], body: [] };\r\n }\r\n\r\n const columns = getRowColumnHeaders(\r\n data,\r\n columnHeadersProp,\r\n columnSortingProp\r\n );\r\n\r\n const rows = getRowColumnHeaders(data, rowHeadersProp, rowSortingProp);\r\n\r\n //get the sum and count of the values coresponding to each combination of row and col\r\n let arr = [];\r\n for (const row of rows) {\r\n let cols: any = {};\r\n for (const col of columns) {\r\n const valuations = data\r\n .filter((k) => {\r\n return (\r\n k[rowHeadersProp] === row.name && k[columnHeadersProp] === col.name\r\n );\r\n })\r\n .map((a) => a[valueProp]);\r\n cols[`${col.code}. ${col.name}`] = valuations;\r\n }\r\n arr.push({\r\n [`${row.code}. ${row.name}`]: cols,\r\n });\r\n }\r\n\r\n return { header: columns.map((a) => `${a.code}. ${a.name}`), body: arr };\r\n}\r\n\r\nexport function processStatsData(\r\n data: SummaryStatsColumnStructure[],\r\n // teebs: string,\r\n // biomes: string,\r\n // valueProp: string,\r\n // rowSortingProp: string = \"\",\r\n // columnSortingProp: string = \"\"\r\n): any {\r\n if (data.length === 0) {\r\n return { header: [], body: [] };\r\n }\r\n\r\n const columns = getRowColumnHeaders(\r\n data,\r\n ItemLabels.biome,\r\n ItemLabels.biomeCode\r\n );\r\n\r\n const rows = getRowColumnHeaders(data, ItemLabels.teeb, ItemLabels.teebCode);\r\n\r\n //get the sum and count of the values coresponding to each combination of row and col\r\n let arr = [];\r\n for (const row of rows) {\r\n let cols: any = {};\r\n for (const col of columns) {\r\n const valuations = data\r\n .filter((k) => {\r\n return (\r\n k[ItemLabels.teeb] === row.name && k[ItemLabels.biome] === col.name\r\n );\r\n })\r\n .map((a) => ({\r\n \"intPerHectarePerYear\": a[ItemLabels.Int_Per_Hectare_Per_Year],\r\n \"inclExcl\": a[ItemLabels.InclExcl]\r\n }));\r\n cols[`${col.code}. ${col.name}`] = valuations;\r\n }\r\n arr.push({\r\n [`${row.code}. ${row.name}`]: cols,\r\n });\r\n }\r\n\r\n return { header: columns.map((a) => `${a.code}. ${a.name}`), body: arr };\r\n}\r\n\r\nfunction getRowColumnHeaders(\r\n data: any[],\r\n headersProp: string,\r\n sortingProp: string = \"\"\r\n) {\r\n //Get a list of names and codes of the values to use as columns/rows.\r\n //This may return duplicate values for each column/row. So we extract them into a Set,\r\n //to remove duplicates and then convert to array. The codes is included here specifically for sorting.\r\n //So that the list of columns/rows will be sorted based on the codes. It is also included in the display.\r\n //The \"|\" is used to here as a dilimeter so that they can be split later.\r\n let itemSet = Array.from(\r\n new Set(\r\n data.map(\r\n (x) => `${sortingProp && x[sortingProp] + \"| \"}${x[headersProp]}`\r\n )\r\n )\r\n );\r\n\r\n //Now split the columnset/rowset into an array of {code, name} objects using the \"|\" as the dilimeter\r\n //This is to allow sorting by the codes.\r\n let itemSet2 = itemSet.map((x: string) => {\r\n const xx = x.split(\"|\");\r\n return { code: parseFloat(xx[0]), name: xx[1].trim() };\r\n });\r\n\r\n //Now sort the columns/rows using the codes\r\n const items = itemSet2.sort((a, b) => {\r\n return a.code - b.code;\r\n });\r\n return items;\r\n}\r\n\r\n\r\n//www.w3resource.com/javascript-exercises/fundamental/javascript-fundamental-exercise-225.php\r\nexport const findMedian = (arr: number[]) => {\r\n const mid = Math.floor(arr.length / 2),\r\n nums = [...arr].sort((a, b) => a - b);\r\n return arr.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\r\n};\r\n\r\n//#Source https://bit.ly/2neWfJ2\r\nexport const findStandardDeviation = (arr: number[], usePopulation = false) => {\r\n const mean = arr.reduce((acc, val) => acc + val, 0) / arr.length;\r\n return Math.sqrt(\r\n arr\r\n .reduce((acc: number[], val) => acc.concat((val - mean) ** 2), [])\r\n .reduce((acc, val) => acc + val, 0) /\r\n (arr.length - (usePopulation ? 0 : 1))\r\n );\r\n};\r\n\r\n\r\n\r\nconst quartile = (valuations: number[], q: any) => {\r\n const sorted = valuations.sort((a, b) => a - b);\r\n const pos = (sorted.length - 1) * q;\r\n const base = Math.floor(pos);\r\n const rest = pos - base;\r\n if (sorted[base + 1] !== undefined) {\r\n return sorted[base] + rest * (sorted[base + 1] - sorted[base]);\r\n } else {\r\n return sorted[base];\r\n }\r\n};\r\n\r\n/**\r\n * Outliers: 1.5 above the third quartile or below the first quartile of log transformed values after sorting\r\n */\r\n// export const trimOutliers = (valuations: number[]) => {\r\n// const factor = 1.5;\r\n// //1st quartile\r\n// const q25 = quartile(valuations, 0.25);\r\n\r\n// //2nd quartile also the median\r\n// const q50 = quartile(valuations, 0.5);\r\n\r\n// //3rd quartile\r\n// const q75 = quartile(valuations, 0.75);\r\n\r\n// //sort the array\r\n// const sorted = valuations.sort((a, b) => a - b);\r\n\r\n// const iqrv = q75 - q25;\r\n\r\n// //cut off outliers\r\n// return sorted.filter(\r\n// (x) =>\r\n// Math.log(x) > q25 - factor * iqrv && Math.log(x) < q75 + factor * iqrv\r\n// );\r\n// };\r\n/**\r\n * Outliers: 1.5 above the third quartile or below the first quartile of log transformed values after sorting\r\n */\r\nexport const trimOutliers = (esvds: Esvd[]) => {\r\n const factor = 1.5;\r\n\r\n let valuations = esvds.map((esvd) => Math.log10(esvd.intPerHectarePerYear || 0))\r\n \r\n //1st quartile\r\n // const q25 = quartile(valuations, 0.25);\r\n const quartiles = calculateQuartiles(valuations)\r\n const {Q1, Q3} = quartiles;\r\n // const q75 = quartiles.Q3;\r\n\r\n ////2nd quartile also the median\r\n // const q50 = quartile(valuations, 0.5);\r\n\r\n //3rd quartile\r\n // const q75 = quartile(valuations, 0.75);\r\n\r\n // //sort the array\r\n // const sorted = valuations.sort((a, b) => a - b);\r\n\r\n//https://online.stat.psu.edu/stat200/lesson/3/3.2#:~:text=We%20can%20use%20the%20IQR,add%20this%20value%20to%20Q3.\r\n \r\n const iqrv = Q3 - Q1;\r\n\r\n //cut off outliers\r\n return esvds.filter(\r\n (x) =>\r\n Math.log10(x.intPerHectarePerYear || 0) > Q1 - factor * iqrv && Math.log10(x.intPerHectarePerYear || 0) < Q3 + factor * iqrv\r\n );\r\n};\r\n\r\n\r\nfunction calculateQuartiles(data: number[]): { Q1: number, Q2: number, Q3: number } {\r\n // Sort the data array\r\n const sortedData = data.slice().sort((a, b) => a - b);\r\n\r\n const getMedian = (arr: number[]): number => {\r\n const mid = arr.length / 2;\r\n return mid % 1 ? arr[Math.floor(mid)] : (arr[mid - 1] + arr[mid]) / 2;\r\n };\r\n\r\n const Q2 = getMedian(sortedData);\r\n const lowerHalf = sortedData.filter(value => value < Q2);\r\n const upperHalf = sortedData.filter(value => value > Q2);\r\n\r\n const Q1 = getMedian(lowerHalf);\r\n const Q3 = getMedian(upperHalf);\r\n\r\n return { Q1, Q2, Q3 };\r\n}\r\n\r\n/**\r\n * \r\n * Outliers: 1.5 above the third quartile or below the first quartile of log transformed values, \r\n * dus de 1.5 iqr outlier exclusion rules. \r\n * First standardized values are transformed to their log values and then (with help of a boxplot) \r\n * is determined if the those values are outside 1.5 iqr.\r\n * \r\n * \r\n * \r\n * \r\n * \r\n */\r\n// /**\r\n// * remove 2.5% (floor) of valuations after sorting\r\n// */\r\n// const trimOutliers = (valuations: number[]) => {\r\n// //calculate the 2.5% cut-off\r\n// const cutoff = Math.floor(valuations.length * 0.025);\r\n\r\n// //sort the array\r\n// const sorted = valuations.sort((a, b) => a - b);\r\n\r\n// //cut off outliers\r\n// return sorted.slice(cutoff, valuations.length - cutoff);\r\n// };\r\n\r\n\r\nexport const calculateStats = (valuations: any[], measure: string) => {\r\n const stats: Statistics = {\r\n mean: \"\",\r\n count: \"\",\r\n max: \"\",\r\n min: \"\",\r\n median: \"\",\r\n stdDev: \"\",\r\n display: \"\",\r\n countNum: 0,\r\n };\r\n if (valuations.length === 0) return stats;\r\n\r\n //apply the Outlier criteria\r\n // let dataValidForStats = valuations.filter(x=>x.inclExcl===true && x.intPerHectarePerYear);\r\n //Changes 11/12/2024: InclExcl now should EXCLUDE ONLY where inclExcl = false.\r\n //This means to INCLUDE both inclExcl = true and inclExcl = null\r\n let dataValidForStats = valuations.filter(x =>\r\n // x.inclExcl === true &&\r\n x.intPerHectarePerYear);\r\n \r\n if (dataValidForStats.length >= 40) {\r\n dataValidForStats = trimOutliers(dataValidForStats);\r\n }\r\n\r\n stats.countNum = dataValidForStats.length;\r\n stats.count = `${NumberFormat(dataValidForStats.length, 0)} `;//of ${valuations.length}\r\n\r\n\r\n const onlyFigures = dataValidForStats.map(x => x.intPerHectarePerYear)\r\n const sum = onlyFigures.reduce((a, b) => a + b, 0);\r\n const mean = sum / onlyFigures.length;\r\n //values 10 or more are shown without the decimal whiles those below 10 are shown with the decimal.\r\n stats.mean = NumberFormat(mean, mean >= 10 ? 0 : 2);\r\n stats.display = `(${dataValidForStats.length}) ${stats.mean}`;\r\n\r\n const max = Math.max(...onlyFigures);\r\n stats.max = NumberFormat(max, max >= 10 ? 0 : 2);\r\n const min = Math.min(...onlyFigures.filter((x) => x !== 0));\r\n stats.min = NumberFormat(min, min >= 10 ? 0 : 2);\r\n const median = findMedian(onlyFigures);\r\n stats.median = NumberFormat(median, median >= 10 ? 0 : 2);\r\n const stdDev = findStandardDeviation(onlyFigures);\r\n stats.stdDev = NumberFormat(stdDev, stdDev >= 10 ? 0 : 2);\r\n\r\n return stats;\r\n};\r\n\r\n// export const getStats = (valuationValues)\r\n\r\n// export \tconst getStatistics = (row: any) => {\r\n// \t\treturn Object.entries(row).map(([key, value]) => {\r\n// \t\t\tlet arr = [];\r\n// \t\t\tarr.push({key});\r\n// \t\t\tconst valuations: any = value;\r\n// \t\t\tconst valValues = Object.values(valuations);\r\n// \t\t\tconst stats: Statistics[] = valValues.map((vals: any, i) =>\r\n// \t\t\t\tcalculateStats(vals, measureStats.mean)\r\n// \t\t\t);\r\n// \t\t\tstats.map((stat, i) =>\r\n// \t\t\t\tarr.push(\r\n// \t\t\t\t\t\r\n// \t\t\t\t\t\t{stat.display}}\r\n// \t\t\t\t\t\t\tcontent={}\r\n// \t\t\t\t\t\t\t// basic\r\n// \t\t\t\t\t\t/>\r\n// \t\t\t\t\t\r\n// \t\t\t\t)\r\n// \t\t\t);\r\n// \t\t\treturn arr;\r\n// \t\t});\r\n// \t};","import React from \"react\";\r\nimport { Table, TableBody, TableCell, TableRow } from \"semantic-ui-react\";\r\nimport { Statistics } from \"../../models/esvd\";\r\n\r\nconst StatsPopup =(props: Statistics)=> {\r\n // render() {\r\n const { mean, stdDev, count, max, min, median }\r\n = props;\r\n return (\r\n \r\n \r\n \r\n Number of Valuations:\r\n {count}\r\n \r\n \r\n Mean:\r\n {mean}\r\n \r\n \r\n Median:\r\n {median}\r\n \r\n \r\n Standard Deviation:\r\n {stdDev}\r\n \r\n \r\n Minimum Value:\r\n {min}\r\n \r\n \r\n Maximum Value:\r\n {max}\r\n \r\n \r\n
\r\n );\r\n // }\r\n}\r\n\r\nexport default StatsPopup;\r\n","// import { useField } from \"formik\";\r\nimport React from \"react\";\r\nimport { Icon, Popup } from \"semantic-ui-react\";\r\n\r\ninterface Props {\r\n\tcontent: string;\r\n}\r\n\r\nconst MyPopup = (props: Props) => {\r\n\tconst { content } = props;\r\n\treturn (\r\n\t\t\r\n\t\t\t}\r\n\t\t\ttrigger={\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default MyPopup;\r\n","import React from \"react\";\r\nimport { Card, Grid, Icon, Item, Popup, Table } from \"semantic-ui-react\";\r\nimport { Statistics } from \"../../models/esvd\";\r\nimport { useEsvdValuation } from \"../../providers/EsvdValuationProvider\";\r\n// import { ItemLabels } from \"../../shared/Literals\";\r\nimport { calculateStats, processStatsData } from \"./processStatsData\";\r\nimport StatsPopup from \"./StatsPopup\";\r\nimport { SummaryStatsColumnStructure } from \"../../models/columnStructure\";\r\nimport {\r\n\tsetMultiColumnMaxLensSummaryStats,\r\n\tsummaryStatsRowsObjects,\r\n} from \"../../EsvdFunctions\";\r\nimport { SummaryStatsColumnTemplate } from \"../../models/columnTemplate\";\r\nimport MyPopup from \"../../shared/MyPopup\";\r\n\r\nexport const measureStats = {\r\n\tmean: \"mean\",\r\n\tcount: \"count\",\r\n\tmax: \"max\",\r\n\tmin: \"min\",\r\n\tmedian: \"median\",\r\n};\r\n\r\nconst headerCellWith = \"20%\";\r\n\r\nconst StatisticsBiomePanel = () => {\r\n\tconst { esvdsSummaryStats } = useEsvdValuation();\r\n\r\n\tconst [statsBody, setStatsBody] = React.useState([]);\r\n\tconst [statsHeader, setStatsHeader] = React.useState([]);\r\n\tconst [totalValidValuationsUsed, setTotalValidValuationsUsed] =\r\n\t\tReact.useState(0);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tconst { biomes } = esvdsSummaryStats || {};\r\n\t\tif (!biomes) return;\r\n\t\tconst cols: SummaryStatsColumnStructure = setMultiColumnMaxLensSummaryStats(\r\n\t\t\tbiomes,\r\n\t\t\tSummaryStatsColumnTemplate\r\n\t\t);\r\n\t\t// const heads = headerTransform(action.payload, cols);\r\n\t\tconst biomeStats = summaryStatsRowsObjects(biomes, cols);\r\n\t\tconst result =\r\n\t\t\tbiomeStats.length > 0\r\n\t\t\t\t? processStatsData(biomeStats)\r\n\t\t\t\t: { header: [], body: [] };\r\n\t\tlet validValuationsUsed = 0;\r\n\t\tconst data = result.body.map((a: any, index: number) => (\r\n\t\t\t\r\n\t\t\t\t{buildTableCells(a, (cnt: number) => {\r\n\t\t\t\t\tvalidValuationsUsed += cnt;\r\n\t\t\t\t})}\r\n\t\t\t\r\n\t\t));\r\n\t\tsetStatsHeader(result.header);\r\n\t\tsetStatsBody(data);\r\n\t\tsetTotalValidValuationsUsed(validValuationsUsed);\r\n\t}, [esvdsSummaryStats]);\r\n\r\n\tconst buildTableCells = (row: any, countValid: Function) => {\r\n\t\treturn Object.entries(row).map(([key, value]) => {\r\n\t\t\tlet arr = [];\r\n\t\t\tarr.push(\r\n\t\t\t\t\r\n\t\t\t\t\t{key}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t\tconst valuations: any = value;\r\n\t\t\tconst valValues = Object.values(valuations);\r\n\t\t\tconst stats: Statistics[] = valValues.map((vals: any, i) =>\r\n\t\t\t\tcalculateStats(vals, measureStats.mean)\r\n\t\t\t);\r\n\t\t\tconst countNum = stats.reduce((a, b) => a + (b?.countNum || 0), 0);\r\n\t\t\tcountValid && countValid(countNum);\r\n\t\t\tstats.map((stat, i) =>\r\n\t\t\t\tarr.push(\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{stat.display}}\r\n\t\t\t\t\t\t\tcontent={}\r\n\t\t\t\t\t\t\t// basic\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t\treturn arr;\r\n\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\tSummary statistics ($2020/ha/yr)\r\n\t\t\t\t\t\t\t\t\tmean standardised values for each selected biome and/or ecozone and ecosystem service combination. To enable comparison, values in the ESVD are standardised to a common set of units: International dollars/hectare/year in 2020 price levels. The number of value records used to compute mean values is indicated in parentheses.\" />\r\n\t\t\t\t\t\t\t\t\t- biomes:{\" \"}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{`${totalValidValuationsUsed || 0} valuation(s)`}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{statsHeader.map((a: any, index: number) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{a}\r\n\t\t\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{statsBody}\r\n\t\t\t\t\t\t\t\t\t\t\t{/* {statsData.body.map((a: any, index: number) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t{renderContent(a)}\r\n\t\t\t\t\t\t\t\t\t\t\t))} */}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default StatisticsBiomePanel;\r\n\r\n/**\r\n * stefanos writes the following:\r\n * I apply the function in Excel =TRIMMEAN(7:100,2.5). Now, 2.5% of 3 (number of values) is 0.07.\r\n * Obviously, Excel cannot exclude 0.07 records, so no values will be excluded.\r\n * Therefore, the number of values that will be considered for the calculation of statistics will be 3 (N=3).\r\n * Then I calculate the mean using Excel's =AVERAGE(7:100) which equals to 42,33.\r\n * For your second email, the explanation is like above. No values can be excluded from a dataset with only 1 value, so N will equal 1.\r\n * In order for values to actually be excluded with this filter, a dataset of at least 40 values is needed (2.5% of 40 = 1).\r\n * 2.5% of the number of values must be greater than 1 for this filter to have effect (so that Excel can exclude at least 1 value point).\r\n */\r\n","import React, { Fragment } from \"react\";\r\nimport { Card, Grid, Icon, Item, Popup, Table } from \"semantic-ui-react\";\r\nimport { Statistics } from \"../../models/esvd\";\r\nimport { useEsvdValuation } from \"../../providers/EsvdValuationProvider\";\r\n// import { ItemLabels } from \"../../shared/Literals\";\r\nimport { calculateStats, processStatsData } from \"./processStatsData\";\r\nimport StatsPopup from \"./StatsPopup\";\r\nimport { SummaryStatsColumnStructure } from \"../../models/columnStructure\";\r\nimport {\r\n\tsetMultiColumnMaxLensSummaryStats,\r\n\tsummaryStatsRowsObjects,\r\n} from \"../../EsvdFunctions\";\r\nimport { SummaryStatsColumnTemplate } from \"../../models/columnTemplate\";\r\nimport MyPopup from \"../../shared/MyPopup\";\r\n\r\nexport const measureStats = {\r\n\tmean: \"mean\",\r\n\tcount: \"count\",\r\n\tmax: \"max\",\r\n\tmin: \"min\",\r\n\tmedian: \"median\",\r\n};\r\n\r\nconst headerCellWith = \"20%\";\r\n\r\nconst StatisticsEcozonePanel = () => {\r\n\tconst { esvdsSummaryStats } = useEsvdValuation();\r\n\r\n\tconst [statsBody, setStatsBody] = React.useState([]);\r\n\tconst [statsHeader, setStatsHeader] = React.useState([]);\r\n\tconst [totalValidValuationsUsed, setTotalValidValuationsUsed] =\r\n\t\tReact.useState(0);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tconst { ecozones } = esvdsSummaryStats || {};\r\n\t\tif (!ecozones) return;\r\n\t\tconst cols: SummaryStatsColumnStructure = setMultiColumnMaxLensSummaryStats(\r\n\t\t\tecozones,\r\n\t\t\tSummaryStatsColumnTemplate\r\n\t\t);\r\n\t\t// const heads = headerTransform(action.payload, cols);\r\n\t\tconst ecozoneStats = summaryStatsRowsObjects(ecozones, cols);\r\n\t\tconst result =\r\n\t\t\tecozoneStats.length > 0\r\n\t\t\t\t? processStatsData(ecozoneStats)\r\n\t\t\t\t: { header: [], body: [] };\r\n\t\tlet validValuationsUsed = 0;\r\n\t\tconst data = result.body.map((a: any, index: number) => (\r\n\t\t\t\r\n\t\t\t\t{buildTableCells(a, (cnt: number) => {\r\n\t\t\t\t\tvalidValuationsUsed += cnt;\r\n\t\t\t\t})}\r\n\t\t\t\r\n\t\t));\r\n\t\tsetStatsHeader(result.header);\r\n\t\tsetStatsBody(data);\r\n\t\tsetTotalValidValuationsUsed(validValuationsUsed);\r\n\t}, [esvdsSummaryStats]);\r\n\r\n\tconst buildTableCells = (row: any, countValid: Function) => {\r\n\t\treturn Object.entries(row).map(([key, value]) => {\r\n\t\t\tlet arr = [];\r\n\t\t\tarr.push(\r\n\t\t\t\t\r\n\t\t\t\t\t{key}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t\tconst valuations: any = value;\r\n\t\t\tconst valValues = Object.values(valuations);\r\n\t\t\tconst stats: Statistics[] = valValues.map((vals: any, i) =>\r\n\t\t\t\tcalculateStats(vals, measureStats.mean)\r\n\t\t\t);\r\n\t\t\tconst countNum = stats.reduce((a, b) => a + (b?.countNum || 0), 0);\r\n\t\t\tcountValid && countValid(countNum);\r\n\t\t\tstats.map((stat, i) =>\r\n\t\t\t\tarr.push(\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{stat.display}}\r\n\t\t\t\t\t\t\tcontent={}\r\n\t\t\t\t\t\t\t// basic\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t\treturn arr;\r\n\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\tSummary statistics ($2020/ha/yr)\r\n\t\t\t\t\t\t\t\t\tmean standardised values for each selected biome and/or ecozone and ecosystem service combination. To enable comparison, values in the ESVD are standardised to a common set of units: International dollars/hectare/year in 2020 price levels. The number of value records used to compute mean values is indicated in parentheses.\" />\r\n\t\t\t\t\t\t\t\t\t- ecozones:{\" \"}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{`${totalValidValuationsUsed || 0} valuation(s)`}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{statsHeader.map((a: any, index: number) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{a}\r\n\t\t\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{statsBody}\r\n\t\t\t\t\t\t\t\t\t\t\t{/* {statsData.body.map((a: any, index: number) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t{renderContent(a)}\r\n\t\t\t\t\t\t\t\t\t\t\t))} */}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default StatisticsEcozonePanel;\r\n\r\n/**\r\n * stefanos writes the following:\r\n * I apply the function in Excel =TRIMMEAN(7:100,2.5). Now, 2.5% of 3 (number of values) is 0.07.\r\n * Obviously, Excel cannot exclude 0.07 records, so no values will be excluded.\r\n * Therefore, the number of values that will be considered for the calculation of statistics will be 3 (N=3).\r\n * Then I calculate the mean using Excel's =AVERAGE(7:100) which equals to 42,33.\r\n * For your second email, the explanation is like above. No values can be excluded from a dataset with only 1 value, so N will equal 1.\r\n * In order for values to actually be excluded with this filter, a dataset of at least 40 values is needed (2.5% of 40 = 1).\r\n * 2.5% of the number of values must be greater than 1 for this filter to have effect (so that Excel can exclude at least 1 value point).\r\n */\r\n","import { useEffect } from \"react\";\r\nimport { Grid, Container } from \"semantic-ui-react\";\r\nimport EsvdActionsPanel from \"./EsvdActionsPanel\";\r\nimport Can from \"../../accessControls/Can\";\r\nimport { actions, resources } from \"../../shared/Literals\";\r\nimport { resetEsvds } from \"../../actions/esvdActions\";\r\nimport EsvdStatisticsPanel from \"../esvdStats/EsvdStatisticsPanel\";\r\nimport EsvdGetStartedPanel from \"./EsvdGetStartedPanel\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\nimport {\r\n\tEsvdValuationProvider,\r\n\t// useEsvdValuation,\r\n} from \"../../providers/EsvdValuationProvider\";\r\nimport EsvdDataWrapper from \"./EsvdDataWrapper\";\r\nimport { ListsProvider } from \"../../providers/ListsProvider\";\r\nimport EsvdFilterPanel from \"./EsvdFilterPanel\";\r\nimport StatisticsBiomePanel from \"../esvdStats/StatisticsBiomePanel\";\r\nimport StatisticsEcozonePanel from \"../esvdStats/StatisticsEcozonePanel\";\r\nimport { ModalWithContextProvider } from \"../../layouts/ModalWithContext\";\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst EsvdDatabaseHome = () => {\r\n\t//reset filters\r\n\t// updateQueryParams;\r\n\t// const { updateQueryParams, clearEsvds } = useEsvdValuation();\r\n\tuseEffect(() => {\r\n\t\tresetEsvds();\r\n\t\t// updateQueryParams(null);\r\n\t}, []);\r\n\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\treturn renderContent();\r\n\t\t\t}}\r\n\t\t\tno={() => {\r\n\t\t\t\treturn ;\r\n\t\t\t}}\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nconst EsvdDatabaseHomeWrapper = (props: any) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default EsvdDatabaseHomeWrapper;\r\n","import React, { useContext } from \"react\";\r\n// import _ from \"lodash\";\r\nimport agent from \"../api/agent\";\r\nimport { PagingParams } from \"../models/PaginationParams\";\r\nimport { VttBiome } from \"../models/vtt-models/VttBiome\";\r\n\r\ninterface IValue {\r\n\tgetVttBiomes: Function;\r\n\tgetVttBiomeCount: Function;\r\n\tcreateVttBiome: Function;\r\n\tgetVttBiome: Function;\r\n\tupdateVttBiome: Function;\r\n\tdeleteVttBiome: Function;\r\n\ttoggleShowForUserCalculations: Function;\r\n}\r\n\r\nconst VttBiomeContext = React.createContext(null);\r\n\r\n// The FilterQueryProvider is responsible for FilterQuery management\r\nconst VttBiomeProvider = ({ children }: { children: any }) => {\r\n\tconst getVttBiomeCount = async () => {\r\n\t\ttry {\r\n\t\t\treturn await agent.VttBiomes.count();\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getVttBiomes = async (\r\n\t\tpageParams: PagingParams,\r\n\t\texcludeFalseShowForUserCalculations: boolean = false\r\n\t) => {\r\n\t\ttry {\r\n\t\t\tconst vtts = excludeFalseShowForUserCalculations\r\n\t\t\t\t? await agent.VttBiomes.listExclude()\r\n\t\t\t\t: await agent.VttBiomes.list(pageParams);\r\n\t\t\tif (!vtts) return [];\r\n\t\t\treturn vtts;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getVttBiome = async (id: number) => {\r\n\t\ttry {\r\n\t\t\treturn await agent.VttBiomes.details(id);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst toggleShowForUserCalculations = async (\r\n\t\tid: number,\r\n\t\tshowForUserCalculations: boolean\r\n\t) => {\r\n\t\ttry {\r\n\t\t\treturn await agent.VttBiomes.toggleShowForUserCalculations(\r\n\t\t\t\tid,\r\n\t\t\t\tshowForUserCalculations\r\n\t\t\t);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst createVttBiome = async (vttBiome: VttBiome) => {\r\n\t\ttry {\r\n\t\t\tawait agent.VttBiomes.create(vttBiome);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst updateVttBiome = async (vttBiome: VttBiome) => {\r\n\t\ttry {\r\n\t\t\tawait agent.VttBiomes.update(vttBiome);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst deleteVttBiome = async (id: number) => {\r\n\t\ttry {\r\n\t\t\tawait agent.VttBiomes.delete(id);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useVttBiome = () => {\r\n\tconst filterQuery = useContext(VttBiomeContext);\r\n\tif (filterQuery == null) {\r\n\t\tthrow new Error(\"useVttBiome() called outside of its hook.\");\r\n\t}\r\n\treturn filterQuery;\r\n};\r\n\r\nexport { VttBiomeProvider, useVttBiome };\r\n","import React, { useContext, useState } from \"react\";\r\n// import _ from \"lodash\";\r\n// import agent from \"../api/agent\";\r\n// import { PagingParams } from \"../models/PaginationParams\";\r\n// import { VttBiome } from \"../models/vtt-models/VttBiome\";\r\n\r\ninterface IValue {\r\n\tsetCurrentView: Function;\r\n\tcurrentView: any;\r\n}\r\n\r\nexport const ViewHandles = {\r\n\tmanage: \"manage\",\r\n\tmanageDetail: \"manageDetail\",\r\n\tbiome: \"biome\",\r\n\tbiomeEntry: \"biomeEntry\",\r\n\tsubbiome: \"subbiome\",\r\n\tsubbiomeEntry: \"subbiomeEntry\",\r\n\tvariable: \"variable\",\r\n\tvariableEntry: \"variableEntry\",\r\n};\r\n\r\nconst VttContext = React.createContext(null);\r\n\r\n// The FilterQueryProvider is responsible for FilterQuery management\r\nconst VttProvider = ({ children }: { children: any }) => {\r\n\tconst [currentView, setCurrentView] = useState({\r\n\t\tview: ViewHandles.biome,\r\n\t});\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useVtt = () => {\r\n\tconst vtt = useContext(VttContext);\r\n\tif (vtt == null) {\r\n\t\tthrow new Error(\"useVtt() called outside of its hook.\");\r\n\t}\r\n\treturn vtt;\r\n};\r\n\r\nexport { VttProvider, useVtt };\r\n","// import moment from \"moment\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { Button, Card, Checkbox, Icon, Table } from \"semantic-ui-react\";\r\nimport { useVttBiome } from \"../../../providers/VttBiomeProvider\";\r\nimport LoadingOverlay from \"../../../shared/LoadingOverlay\";\r\nimport { VttBiome } from \"../../../models/vtt-models/VttBiome\";\r\nimport MyModal from \"../../../layouts/Modals\";\r\n\r\nimport { ViewHandles, useVtt } from \"../../../providers/VttProvider\";\r\n\r\nconst VttBiomeList = () => {\r\n\tconst { setCurrentView } = useVtt();\r\n\tconst { getVttBiomeCount, getVttBiomes, deleteVttBiome } = useVttBiome();\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\t// const [currentPage, setCurrentPage] = React.useState(1);\r\n\tconst [vttBiomesCnt, setVttBiomesCnt] = useState(0);\r\n\tconst [vttBiomes, setVttBiomes] = useState([]);\r\n\tconst [opened, setOpened] = useState(false);\r\n\tconst [delItem, setDelItem] = useState(null);\r\n\tconst [isModalConfirmed, setIsModalConfirmed] = useState(false);\r\n\tconst [modalMessage, setModalMessage] = useState(null);\r\n\tconst [isActionNeeded, setisActionNeeded] = useState(true);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetIsLoading(true);\r\n\t\t(async () => {\r\n\t\t\tvar filtersCnt = await getVttBiomeCount();\r\n\t\t\tsetVttBiomesCnt(filtersCnt);\r\n\t\t})();\r\n\r\n\t\t(async () => {\r\n\t\t\tvar vtt = await getVttBiomes();\r\n\t\t\tsetVttBiomes(vtt || []);\r\n\t\t\tsetIsLoading(false);\r\n\t\t})();\r\n\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (isModalConfirmed) {\r\n\t\t\tsetIsModalConfirmed(false);\r\n\t\t\t(async () => {\r\n\t\t\t\tif (delItem) {\r\n\t\t\t\t\tawait deleteVttBiome(delItem);\r\n\t\t\t\t\tvar vtt = await getVttBiomes();\r\n\t\t\t\t\tsetVttBiomes(vtt);\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t\tsetDelItem(null);\r\n\t\t\t\t}\r\n\t\t\t})().catch((err) => {\r\n\t\t\t\tsetOpened(true);\r\n\t\t\t\tsetisActionNeeded(false);\r\n\t\t\t\tsetModalMessage(err || null);\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn () => {};\r\n\t}, [isModalConfirmed]);\r\n\r\n\t// const viewVttBiomeDetails = (id: number) => {\r\n\t// \tselectedItem(id);\r\n\t// };\r\n\r\n\tconst deleting = (id: number) => {\r\n\t\tsetisActionNeeded(true);\r\n\t\tsetModalMessage(\"Are you sure you want to delete?\");\r\n\t\tsetOpened(true);\r\n\t\tsetDelItem(id);\r\n\t\t// console.log(opened);\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tBiome\r\n\t\t\t\t\t\t\tConstant\r\n\t\t\t\t\t\t\tLower bound factor\r\n\t\t\t\t\t\t\tUpper bound factor\r\n\t\t\t\t\t\t\tShow in the VTT to visitors\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{vttBiomes &&\r\n\t\t\t\t\t\t\tvttBiomes.map((biome, i) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentView({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tview: ViewHandles.manage,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbiomeid: biome.id,\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tstyle={{ cursor: \"pointer\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t{biome.name}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{biome.constantValue}\r\n\t\t\t\t\t\t\t\t\t\t{biome.lowerBoundFactor}\r\n\t\t\t\t\t\t\t\t\t\t{biome.upperBoundFactor}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{biome.showForUserCalculations ? \"Yes\" : \"No\"}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentView({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tview: ViewHandles.manage,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbiomeid: biome.id,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tManage variables\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentView({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tview: ViewHandles.biomeEntry,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbiomeid: biome.id,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t biome.id && deleting(biome.id)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tsetCurrentView({ view: ViewHandles.biomeEntry });\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\tAdd Biome\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{renderContent()}\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default VttBiomeList;\r\n","import React, { useContext } from \"react\";\r\n// import _ from \"lodash\";\r\nimport agent from \"../api/agent\";\r\nimport { PagingParams } from \"../models/PaginationParams\";\r\nimport { VttSubBiome } from \"../models/vtt-models/VttBiome\";\r\n\r\ninterface IValue {\r\n\tgetVttSubBiomes: Function;\r\n\tgetVttSubBiomeCount: Function;\r\n\tcreateVttSubBiome: Function;\r\n\tgetVttSubBiome: Function;\r\n\tupdateVttSubBiome: Function;\r\n\tdeleteVttSubBiome: Function;\r\n}\r\n\r\nconst VttSubBiomeContext = React.createContext(null);\r\n\r\n// The FilterQueryProvider is responsible for FilterQuery management\r\nconst VttSubBiomeProvider = ({ children }: { children: any }) => {\r\n\tconst getVttSubBiomeCount = async () => {\r\n\t\ttry {\r\n\t\t\treturn await agent.VttSubBiomes.count();\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getVttSubBiomes = async (pageParams: PagingParams) => {\r\n\t\ttry {\r\n\t\t\tconst vtts = await agent.VttSubBiomes.list(pageParams);\r\n\t\t\tif (!vtts) return [];\r\n\t\t\treturn vtts;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getVttSubBiome = async (id: number) => {\r\n\t\ttry {\r\n\t\t\treturn await agent.VttSubBiomes.details(id);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst createVttSubBiome = async (vttSubBiome: VttSubBiome) => {\r\n\t\ttry {\r\n\t\t\tawait agent.VttSubBiomes.create(vttSubBiome);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst updateVttSubBiome = async (vttSubBiome: VttSubBiome) => {\r\n\t\ttry {\r\n\t\t\tawait agent.VttSubBiomes.update(vttSubBiome);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst deleteVttSubBiome = async (id: number) => {\r\n\t\ttry {\r\n\t\t\tawait agent.VttSubBiomes.delete(id);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useVttSubBiome = () => {\r\n\tconst filterQuery = useContext(VttSubBiomeContext);\r\n\tif (filterQuery == null) {\r\n\t\tthrow new Error(\"useVttSubBiome() called outside of its hook.\");\r\n\t}\r\n\treturn filterQuery;\r\n};\r\n\r\nexport { VttSubBiomeProvider, useVttSubBiome };\r\n","import React, { useContext } from \"react\";\r\n// import _ from \"lodash\";\r\nimport agent from \"../api/agent\";\r\nimport { PagingParams } from \"../models/PaginationParams\";\r\nimport { VttVariable } from \"../models/vtt-models/VttBiome\";\r\n\r\ninterface IValue {\r\n\tgetVttVariables: Function;\r\n\tgetVttVariableCount: Function;\r\n\tcreateVttVariable: Function;\r\n\tgetVttVariable: Function;\r\n\tupdateVttVariable: Function;\r\n\tdeleteVttVariable: Function;\r\n\tgetUnattahcedVttVariables: Function;\r\n}\r\n\r\nconst VttVariableContext = React.createContext(null);\r\n\r\n// The FilterQueryProvider is responsible for FilterQuery management\r\nconst VttVariableProvider = ({ children }: { children: any }) => {\r\n\tconst getVttVariableCount = async () => {\r\n\t\ttry {\r\n\t\t\treturn await agent.VttVariables.count();\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getVttVariables = async (pageParams: PagingParams) => {\r\n\t\ttry {\r\n\t\t\tconst vtts = await agent.VttVariables.list(pageParams);\r\n\t\t\tif (!vtts) return [];\r\n\t\t\treturn vtts;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getUnattahcedVttVariables = async (\r\n\t\tbiomeid: number,\r\n\t\tselectedVariableid: number | null\r\n\t) => {\r\n\t\ttry {\r\n\t\t\tconst vtts = selectedVariableid\r\n\t\t\t\t? await agent.VttVariables.listUnattachedVariables(\r\n\t\t\t\t\t\tbiomeid,\r\n\t\t\t\t\t\tselectedVariableid\r\n\t\t\t\t )\r\n\t\t\t\t: await agent.VttVariables.listExclusiveUnattachedVariables(biomeid);\r\n\t\t\tif (!vtts) return [];\r\n\t\t\treturn vtts;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\tconst getVttVariable = async (id: number) => {\r\n\t\ttry {\r\n\t\t\treturn await agent.VttVariables.details(id);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst createVttVariable = async (vttVariable: VttVariable) => {\r\n\t\ttry {\r\n\t\t\tawait agent.VttVariables.create(vttVariable);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst updateVttVariable = async (vttVariable: VttVariable) => {\r\n\t\ttry {\r\n\t\t\tawait agent.VttVariables.update(vttVariable);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst deleteVttVariable = async (id: number) => {\r\n\t\ttry {\r\n\t\t\tawait agent.VttVariables.delete(id);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useVttVariable = () => {\r\n\tconst filterQuery = useContext(VttVariableContext);\r\n\tif (filterQuery == null) {\r\n\t\tthrow new Error(\"useVttVariable() called outside of its hook.\");\r\n\t}\r\n\treturn filterQuery;\r\n};\r\n\r\nexport { VttVariableProvider, useVttVariable };\r\n","import React, { useContext } from \"react\";\r\n// import _ from \"lodash\";\r\nimport agent from \"../api/agent\";\r\n// import { PagingParams } from \"../models/PaginationParams\";\r\nimport { VttVariableDetailMap } from \"../models/vtt-models/VttBiome\";\r\n\r\ninterface IValue {\r\n\tgetVttVariableDetailMaps: Function;\r\n\t// getVttVariableDetailMapCount: Function;\r\n\tcreateVttVariableDetailMap: Function;\r\n\tgetVttVariableDetailMap: Function;\r\n\tupdateVttVariableDetailMap: Function;\r\n\tdeleteVttVariableDetailMap: Function;\r\n}\r\n\r\nconst VttVariableDetailMapContext = React.createContext(null);\r\n\r\n// The FilterQueryProvider is responsible for FilterQuery management\r\nconst VttVariableDetailMapProvider = ({ children }: { children: any }) => {\r\n\t// const getVttVariableDetailMapCount = async () => {\r\n\t// \ttry {\r\n\t// \t\treturn await agent.VttVariableDetailMaps.count();\r\n\t// \t} catch (error: any) {\r\n\t// \t\tthrow error.response ? error.response.statusText : error.message;\r\n\t// \t}\r\n\t// };\r\n\r\n\tconst getVttVariableDetailMaps = async (vttBiomeid: number) => {\r\n\t\ttry {\r\n\t\t\tconst vtts = await agent.VttVariableDetailMaps.list(vttBiomeid);\r\n\t\t\tif (!vtts) return [];\r\n\t\t\treturn vtts;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getVttVariableDetailMap = async (\r\n\t\tdetailid: number\r\n\t\t// vttvariableid: number\r\n\t) => {\r\n\t\ttry {\r\n\t\t\treturn await agent.VttVariableDetailMaps.details(detailid);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst createVttVariableDetailMap = async (vttBiome: VttVariableDetailMap) => {\r\n\t\ttry {\r\n\t\t\tawait agent.VttVariableDetailMaps.create(vttBiome);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst updateVttVariableDetailMap = async (\r\n\t\tvttVariableDetailMap: VttVariableDetailMap\r\n\t) => {\r\n\t\ttry {\r\n\t\t\tawait agent.VttVariableDetailMaps.update(vttVariableDetailMap);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst deleteVttVariableDetailMap = async (id: number) => {\r\n\t\ttry {\r\n\t\t\tawait agent.VttVariableDetailMaps.delete(id);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useVttVariableDetailMap = () => {\r\n\tconst filterQuery = useContext(VttVariableDetailMapContext);\r\n\tif (filterQuery == null) {\r\n\t\tthrow new Error(\"useVttVariableDetailMap() called outside of its hook.\");\r\n\t}\r\n\treturn filterQuery;\r\n};\r\n\r\nexport { VttVariableDetailMapProvider, useVttVariableDetailMap };\r\n","import { ErrorMessage, Field, Formik } from \"formik\";\r\nimport React, { useEffect } from \"react\";\r\nimport { Form, Label, Card, Checkbox, Grid } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\n\r\nimport { useVttBiome } from \"../../../providers/VttBiomeProvider\";\r\nimport { useState } from \"react\";\r\nimport { VttBiome } from \"../../../models/vtt-models/VttBiome\";\r\nimport EsvdInputInline from \"../../../shared/InputInline\";\r\nimport { ErrorHandler } from \"../../../shared/ExceptionHandling\";\r\nimport { ViewHandles, useVtt } from \"../../../providers/VttProvider\";\r\n\r\nconst defaultBiome: VttBiome = {\r\n\tname: \"\",\r\n\tconstantValue: \"\",\r\n\tlowerBoundFactor: \"\",\r\n\tupperBoundFactor: \"\",\r\n\tshowForUserCalculations: false,\r\n};\r\n\r\nconst VttBiomeEntry = () => {\r\n\tconst { currentView, setCurrentView } = useVtt();\r\n\tconst { createVttBiome, getVttBiome, updateVttBiome } = useVttBiome();\r\n\tconst [vttBiome, setVttBiome] = useState();\r\n\tconst [checked, setChecked] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst { biomeid } = currentView;\r\n\t\tif (biomeid) {\r\n\t\t\t//retrieve biome\r\n\t\t\t(async () => {\r\n\t\t\t\tconst vt = await getVttBiome(biomeid);\r\n\t\t\t\tsetVttBiome(vt);\r\n\t\t\t\tif (vt) {\r\n\t\t\t\t\tsetChecked(vt.showForUserCalculations);\r\n\t\t\t\t}\r\n\t\t\t})();\r\n\t\t} else {\r\n\t\t\t//set to default\r\n\t\t\tsetVttBiome(defaultBiome);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst handleFormSubmit: Function = async (\r\n\t\tvalues: any,\r\n\t\tsetErrors: Function\r\n\t) => {\r\n\t\ttry {\r\n\t\t\tif (values.id) {\r\n\t\t\t\tawait updateVttBiome({ ...values, showForUserCalculations: checked });\r\n\t\t\t} else {\r\n\t\t\t\tawait createVttBiome({ ...values, showForUserCalculations: checked });\r\n\t\t\t}\r\n\t\t\tsetCurrentView({ view: ViewHandles.biome });\r\n\t\t} catch (error) {\r\n\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t {\r\n\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t}}>\r\n\t\t\t\t{({\r\n\t\t\t\t\t// values,\r\n\t\t\t\t\t// handleChange,\r\n\t\t\t\t\thandleSubmit,\r\n\t\t\t\t\t// isValid,\r\n\t\t\t\t\t// isSubmitting,\r\n\t\t\t\t\t// dirty,\r\n\t\t\t\t\terrors,\r\n\t\t\t\t\t// resetForm,\r\n\t\t\t\t\t// setFieldValue,\r\n\t\t\t\t}) => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t setChecked(data.checked)}\r\n\t\t\t\t\t\t\t\t\t\t\tchecked={checked || false}\r\n\t\t\t\t\t\t\t\t\t\t\tcomponent={Checkbox}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{`(*) = required`}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetCurrentView({ view: ViewHandles.biome });\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tBack\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{/*
*/}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tSave\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{/*
*/}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nconst validationSchema: any = Yup.object({\r\n\tname: Yup.string().trim().required(\"Name is required\"),\r\n\tconstantValue: Yup.number()\r\n\t\t.typeError(\"Constant must be a number\")\r\n\t\t.required(\"Constant value is required\"),\r\n\tlowerBoundFactor: Yup.number()\r\n\t\t.typeError(\"Lower bound factor must be a number\")\r\n\t\t.required(\"Lower bound factor is required\")\r\n\t\t.test(\r\n\t\t\t\"len\",\r\n\t\t\t`Lower bound factor must be between 0 and 1 (inclusive).`,\r\n\t\t\t(val: any) => val >= 0 && val <= 1\r\n\t\t),\r\n\r\n\tupperBoundFactor: Yup.number()\r\n\t\t.typeError(\"Upper bound factor must be a number\")\r\n\t\t.required(\"Upper bound factor is required\")\r\n\t\t.test(\r\n\t\t\t\"len\",\r\n\t\t\t`Upper bound factor must be between 1 and 2 (inclusive).`,\r\n\t\t\t(val: any) => val >= 1 && val <= 2\r\n\t\t),\r\n});\r\n\r\nexport default VttBiomeEntry;\r\n","import { ErrorMessage, Formik } from \"formik\";\r\nimport React, { useEffect } from \"react\";\r\nimport { Form, Label, Card } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\n\r\nimport { useVttSubBiome } from \"../../../providers/VttSubBiomeProvider\";\r\nimport { useState } from \"react\";\r\nimport { VttSubBiome } from \"../../../models/vtt-models/VttBiome\";\r\nimport EsvdInputInline from \"../../../shared/InputInline\";\r\nimport { ErrorHandler } from \"../../../shared/ExceptionHandling\";\r\nimport { ViewHandles, useVtt } from \"../../../providers/VttProvider\";\r\n\r\nconst defaultBiome: VttSubBiome = { name: \"\" };\r\n\r\nconst VttSubBiomeEntry = () => {\r\n\tconst { currentView, setCurrentView } = useVtt();\r\n\tconst { createVttSubBiome, getVttSubBiome, updateVttSubBiome } =\r\n\t\tuseVttSubBiome();\r\n\tconst [vttSubBiome, setVttSubBiome] = useState();\r\n\r\n\tuseEffect(() => {\r\n\t\tconst { subbiomeid } = currentView;\r\n\t\tif (subbiomeid) {\r\n\t\t\t//retrieve biome\r\n\t\t\t(async () => {\r\n\t\t\t\tconst vt = await getVttSubBiome(subbiomeid);\r\n\t\t\t\tsetVttSubBiome(vt);\r\n\t\t\t})();\r\n\t\t} else {\r\n\t\t\t//set to default\r\n\t\t\tsetVttSubBiome(defaultBiome);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst handleFormSubmit: Function = async (\r\n\t\tvalues: any,\r\n\t\tsetErrors: Function\r\n\t) => {\r\n\t\ttry {\r\n\t\t\tif (values.id) {\r\n\t\t\t\tawait updateVttSubBiome(values);\r\n\t\t\t} else {\r\n\t\t\t\tawait createVttSubBiome(values);\r\n\t\t\t}\r\n\t\t\tsetCurrentView({ view: ViewHandles.subbiome });\r\n\t\t} catch (error) {\r\n\t\t\t// setErrors(error);\r\n\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t\t// console.log(error);\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t {\r\n\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t}}>\r\n\t\t\t\t{({\r\n\t\t\t\t\tvalues,\r\n\t\t\t\t\thandleChange,\r\n\t\t\t\t\thandleSubmit,\r\n\t\t\t\t\tisValid,\r\n\t\t\t\t\tisSubmitting,\r\n\t\t\t\t\tdirty,\r\n\t\t\t\t\terrors,\r\n\t\t\t\t\tresetForm,\r\n\t\t\t\t\tsetFieldValue,\r\n\t\t\t\t}) => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{`(*) = required`}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetCurrentView({ view: ViewHandles.subbiome });\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tBack\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tSave\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nconst validationSchema: any = Yup.object({\r\n\tname: Yup.string().trim().required(\"Name is required\"),\r\n});\r\n\r\nexport default VttSubBiomeEntry;\r\n","// import moment from \"moment\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport {\r\n\tButton,\r\n\tCard,\r\n\tGrid,\r\n\tHeader,\r\n\tIcon,\r\n\tLabel,\r\n\tList,\r\n\tTable,\r\n} from \"semantic-ui-react\";\r\n// import { useHistory } from \"react-router-dom\";\r\n// import { LIMIT } from \"../../shared/Literals\";\r\n// import EsvdPagination from \"../esvdPanel/EsvdPagination\";\r\n// import FilterQueryButton from \"./FilterQueryButton\";\r\nimport {\r\n\t// VttSubBiomeProvider,\r\n\tuseVttSubBiome,\r\n} from \"../../../providers/VttSubBiomeProvider\";\r\n\r\nimport LoadingOverlay from \"../../../shared/LoadingOverlay\";\r\nimport { LIMIT, resources } from \"../../../shared/Literals\";\r\nimport EsvdPagination from \"../../esvdPanel/EsvdPagination\";\r\n\r\nimport { VttSubBiome } from \"../../../models/vtt-models/VttBiome\";\r\nimport { Link } from \"react-router-dom\";\r\nimport MyModal from \"../../../layouts/Modals\";\r\nimport { ViewHandles, useVtt } from \"../../../providers/VttProvider\";\r\n\r\nconst VttSubBiomeList = () => {\r\n\tconst { setCurrentView } = useVtt();\r\n\tconst { getVttSubBiomeCount, getVttSubBiomes, deleteVttSubBiome } =\r\n\t\tuseVttSubBiome();\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [currentPage, setCurrentPage] = React.useState(1);\r\n\tconst [vttSubBiomesCnt, setVttSubBiomesCnt] = useState(0);\r\n\tconst [vttSubBiomes, setVttSubBiomes] = useState([]);\r\n\tconst [opened, setOpened] = useState(false);\r\n\tconst [delItem, setDelItem] = useState(null);\r\n\tconst [isModalConfirmed, setIsModalConfirmed] = useState(false);\r\n\tconst [modalMessage, setModalMessage] = useState(null);\r\n\tconst [isActionNeeded, setisActionNeeded] = useState(true);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetIsLoading(true);\r\n\t\t(async () => {\r\n\t\t\tvar filtersCnt = await getVttSubBiomeCount();\r\n\t\t\tsetVttSubBiomesCnt(filtersCnt);\r\n\t\t})();\r\n\r\n\t\t(async () => {\r\n\t\t\tvar vtt = await getVttSubBiomes();\r\n\t\t\tsetVttSubBiomes(vtt);\r\n\t\t\tsetIsLoading(false);\r\n\t\t})();\r\n\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (isModalConfirmed) {\r\n\t\t\tsetIsModalConfirmed(false);\r\n\t\t\t(async () => {\r\n\t\t\t\tif (delItem) {\r\n\t\t\t\t\tawait deleteVttSubBiome(delItem);\r\n\t\t\t\t\tvar vtt = await getVttSubBiomes();\r\n\t\t\t\t\tsetVttSubBiomes(vtt);\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t\tsetDelItem(null);\r\n\t\t\t\t}\r\n\t\t\t})().catch((err) => {\r\n\t\t\t\tsetOpened(true);\r\n\t\t\t\tsetisActionNeeded(false);\r\n\t\t\t\tsetModalMessage(err || null);\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn () => {};\r\n\t}, [isModalConfirmed]);\r\n\r\n\tconst deleting = (id: number) => {\r\n\t\tsetisActionNeeded(true);\r\n\t\tsetModalMessage(\"Are you sure you want to delete?\");\r\n\t\tsetOpened(true);\r\n\t\tsetDelItem(id);\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tName\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{vttSubBiomes &&\r\n\t\t\t\t\t\t\tvttSubBiomes.map((subbiome, i) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t null} key={i}>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\t\t\t\t\t{subbiome.name}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentView({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tview: ViewHandles.subbiomeEntry,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubbiomeid: subbiome.id,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t subbiome.id && deleting(subbiome.id)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\t// function setPage(activePage: string | number | undefined) {\r\n\t// \tsetIsLoading(true);\r\n\t// \tsetCurrentPage(Number(activePage));\r\n\t// \t(async () => {\r\n\t// \t\tvar vtts = await getVttSubBiomes({\r\n\t// \t\t\tparams: {\r\n\t// \t\t\t\toffset: activePage ? Number(activePage) - 1 : 0,\r\n\t// \t\t\t},\r\n\t// \t\t});\r\n\t// \t\tsetVttSubBiomes(vtts);\r\n\t// \t\tsetIsLoading(false);\r\n\t// \t})();\r\n\t// }\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tsetCurrentView({\r\n\t\t\t\t\t\t\tview: ViewHandles.subbiomeEntry,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\tAdd sub biome\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{renderContent()}\r\n\t\t\t\r\n\t\t\t{/* \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t */}\r\n\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default VttSubBiomeList;\r\n","import { ErrorMessage, Formik } from \"formik\";\r\nimport React, { useEffect } from \"react\";\r\nimport { Form, Label, Card } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\n\r\nimport { useState } from \"react\";\r\nimport { VttVariable } from \"../../../models/vtt-models/VttBiome\";\r\nimport EsvdInputInline from \"../../../shared/InputInline\";\r\nimport { ErrorHandler } from \"../../../shared/ExceptionHandling\";\r\nimport { useVttVariable } from \"../../../providers/VttVariableProvider\";\r\nimport { ViewHandles, useVtt } from \"../../../providers/VttProvider\";\r\n\r\nconst defaultBiome: VttVariable = { name: \"\" };\r\n\r\nconst VttVariableEntry = () => {\r\n\tconst { currentView, setCurrentView } = useVtt();\r\n\tconst { createVttVariable, getVttVariable, updateVttVariable } =\r\n\t\tuseVttVariable();\r\n\tconst [vttVariable, setVttVariable] = useState();\r\n\r\n\tuseEffect(() => {\r\n\t\tconst { variableid } = currentView;\r\n\t\tif (variableid) {\r\n\t\t\t//retrieve biome\r\n\t\t\t(async () => {\r\n\t\t\t\tconst vt = await getVttVariable(variableid);\r\n\t\t\t\tsetVttVariable(vt);\r\n\t\t\t})();\r\n\t\t} else {\r\n\t\t\t//set to default\r\n\t\t\tsetVttVariable(defaultBiome);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst handleFormSubmit: Function = async (\r\n\t\tvalues: any,\r\n\t\tsetErrors: Function\r\n\t) => {\r\n\t\ttry {\r\n\t\t\tif (values.id) {\r\n\t\t\t\tawait updateVttVariable(values);\r\n\t\t\t} else {\r\n\t\t\t\tawait createVttVariable(values);\r\n\t\t\t}\r\n\t\t\tsetCurrentView({ view: ViewHandles.variable });\r\n\t\t} catch (error) {\r\n\t\t\t// setErrors(error);\r\n\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t\t// console.log(error);\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t {\r\n\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t}}>\r\n\t\t\t\t{({\r\n\t\t\t\t\tvalues,\r\n\t\t\t\t\thandleChange,\r\n\t\t\t\t\thandleSubmit,\r\n\t\t\t\t\tisValid,\r\n\t\t\t\t\tisSubmitting,\r\n\t\t\t\t\tdirty,\r\n\t\t\t\t\terrors,\r\n\t\t\t\t\tresetForm,\r\n\t\t\t\t\tsetFieldValue,\r\n\t\t\t\t}) => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{`(*) = required`}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetCurrentView({ view: ViewHandles.variable });\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tBack\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tSave\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nconst validationSchema: any = Yup.object({\r\n\tname: Yup.string().trim().required(\"Name is required\"),\r\n});\r\n\r\nexport default VttVariableEntry;\r\n","// import moment from \"moment\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport {\r\n\tButton,\r\n\tCard,\r\n\t// Grid,\r\n\t// Header,\r\n\tIcon,\r\n\t// Label,\r\n\t// List,\r\n\tTable,\r\n} from \"semantic-ui-react\";\r\n\r\nimport LoadingOverlay from \"../../../shared/LoadingOverlay\";\r\n// import { LIMIT, resources } from \"../../../shared/Literals\";\r\n// import EsvdPagination from \"../../esvdPanel/EsvdPagination\";\r\n\r\nimport { VttVariable } from \"../../../models/vtt-models/VttBiome\";\r\n// import { Link } from \"react-router-dom\";\r\nimport MyModal from \"../../../layouts/Modals\";\r\nimport { useVttVariable } from \"../../../providers/VttVariableProvider\";\r\nimport { ViewHandles, useVtt } from \"../../../providers/VttProvider\";\r\n\r\n// interface IProps {\r\n// \tonSelectionChanged: Function;\r\n// \theaderText: string;\r\n// }\r\n\r\nconst VttVariableList = () => {\r\n\tconst { setCurrentView } = useVtt();\r\n\tconst { getVttVariableCount, getVttVariables, deleteVttVariable } =\r\n\t\tuseVttVariable();\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\t// const [currentPage, setCurrentPage] = React.useState(1);\r\n\tconst [vttVariablesCnt, setVttVariablesCnt] = useState(0);\r\n\tconst [vttVariables, setVttVariables] = useState([]);\r\n\tconst [opened, setOpened] = useState(false);\r\n\tconst [delItem, setDelItem] = useState(null);\r\n\tconst [isModalConfirmed, setIsModalConfirmed] = useState(false);\r\n\tconst [modalMessage, setModalMessage] = useState(null);\r\n\tconst [isActionNeeded, setisActionNeeded] = useState(true);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetIsLoading(true);\r\n\t\t(async () => {\r\n\t\t\tvar filtersCnt = await getVttVariableCount();\r\n\t\t\tsetVttVariablesCnt(filtersCnt);\r\n\t\t})();\r\n\r\n\t\t(async () => {\r\n\t\t\tvar vtt = await getVttVariables();\r\n\t\t\tsetVttVariables(vtt);\r\n\t\t\tsetIsLoading(false);\r\n\t\t})();\r\n\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (isModalConfirmed) {\r\n\t\t\tsetIsModalConfirmed(false);\r\n\r\n\t\t\t(async () => {\r\n\t\t\t\tif (delItem) {\r\n\t\t\t\t\tawait deleteVttVariable(delItem);\r\n\t\t\t\t\tvar vtt = await getVttVariables();\r\n\t\t\t\t\tsetVttVariables(vtt);\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t\tsetDelItem(null);\r\n\t\t\t\t}\r\n\t\t\t})().catch((err) => {\r\n\t\t\t\tsetOpened(true);\r\n\t\t\t\tsetisActionNeeded(false);\r\n\t\t\t\tsetModalMessage(err || null);\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn () => {};\r\n\t}, [isModalConfirmed]);\r\n\r\n\tconst deleting = (id: number) => {\r\n\t\tsetisActionNeeded(true);\r\n\t\tsetModalMessage(\"Are you sure you want to delete?\");\r\n\t\tsetOpened(true);\r\n\t\tsetDelItem(id);\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tName\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{vttVariables &&\r\n\t\t\t\t\t\t\tvttVariables.map((variable, i) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t null} key={i}>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\t\t\t\t\t{variable.name}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentView({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tview: ViewHandles.variableEntry,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariableid: variable.id,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t variable.id && deleting(variable.id)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\t// function setPage(activePage: string | number | undefined) {\r\n\t// \tsetIsLoading(true);\r\n\t// \tsetCurrentPage(Number(activePage));\r\n\t// \t(async () => {\r\n\t// \t\tvar vtts = await getVttVariables({\r\n\t// \t\t\tparams: {\r\n\t// \t\t\t\toffset: activePage ? Number(activePage) - 1 : 0,\r\n\t// \t\t\t},\r\n\t// \t\t});\r\n\t// \t\tsetVttVariables(vtts);\r\n\t// \t\tsetIsLoading(false);\r\n\t// \t})();\r\n\t// }\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{/* */}\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tsetCurrentView({\r\n\t\t\t\t\t\t\tview: ViewHandles.variableEntry,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\tAdd Variable\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{renderContent()}\r\n\t\t\t\r\n\t\t\t{/* \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t */}\r\n\t\t\t{/* */}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default VttVariableList;\r\n","// import moment from \"moment\";\r\nimport React, { useEffect, useState, useCallback } from \"react\";\r\nimport {\r\n\tButton,\r\n\tCard,\r\n\tCheckbox,\r\n\tHeader,\r\n\tIcon,\r\n\tList,\r\n\tTable,\r\n} from \"semantic-ui-react\";\r\nimport { Link, Redirect, useHistory, useLocation } from \"react-router-dom\";\r\n// import { useVttBiome } from \"../../../providers/VttBiomeProvider\";\r\nimport { LIMIT, resources } from \"../../../shared/Literals\";\r\nimport {\r\n\tVttBiome,\r\n\tVttVariableDetailMap,\r\n} from \"../../../models/vtt-models/VttBiome\";\r\nimport MyModal from \"../../../layouts/Modals\";\r\nimport { useVttVariableDetailMap } from \"../../../providers/VttVariableDetailMapProvider\";\r\nimport { ViewHandles, useVtt } from \"../../../providers/VttProvider\";\r\nimport { useVttBiome } from \"../../../providers/VttBiomeProvider\";\r\n// import VttVariableDetailEntry from \"./VttVariableDetailEntry\";\r\n\r\nconst VttBiomeDetails = () => {\r\n\tconst { currentView, setCurrentView } = useVtt();\r\n\tconst { getVttBiome, toggleShowForUserCalculations } = useVttBiome();\r\n\tconst { getVttVariableDetailMaps, deleteVttVariableDetailMap } =\r\n\t\tuseVttVariableDetailMap();\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [vttBiome, setVttBiome] = useState();\r\n\tconst [vttVariableDetailMaps, setVttVariableDetailMaps] =\r\n\t\tuseState();\r\n\tconst [opened, setOpened] = useState(false);\r\n\tconst [delItem, setDelItem] = useState(null);\r\n\tconst [isModalConfirmed, setIsModalConfirmed] = useState(false);\r\n\tconst [checked, setChecked] = useState(false);\r\n\r\n\t// const location = useLocation();\r\n\r\n\t// const history = useHistory();\r\n\t// const navigateDetails = useCallback(\r\n\t// \t() => history.push(resources.vtt.path),\r\n\t// \t[history]\r\n\t// );\r\n\r\n\tuseEffect(() => {\r\n\t\tconst { biomeid } = currentView;\r\n\t\tsetIsLoading(true);\r\n\t\t(async () => {\r\n\t\t\tif (biomeid) {\r\n\t\t\t\tvar biome = await getVttBiome(biomeid);\r\n\t\t\t\tsetVttBiome(biome);\r\n\t\t\t\tbiome && setChecked(biome.showForUserCalculations);\r\n\t\t\t\tvar vtt = await getVttVariableDetailMaps(biomeid);\r\n\t\t\t\tsetVttVariableDetailMaps(vtt);\r\n\t\t\t}\r\n\t\t\tsetIsLoading(false);\r\n\t\t})();\r\n\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (isModalConfirmed) {\r\n\t\t\tsetIsModalConfirmed(false);\r\n\t\t\t(async () => {\r\n\t\t\t\tif (delItem) {\r\n\t\t\t\t\tconst { biomeid } = currentView;\r\n\t\t\t\t\tawait deleteVttVariableDetailMap(delItem);\r\n\t\t\t\t\tvar vtt = await getVttVariableDetailMaps(biomeid);\r\n\t\t\t\t\tsetVttVariableDetailMaps(vtt);\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t\tsetDelItem(null);\r\n\t\t\t\t}\r\n\t\t\t})();\r\n\t\t}\r\n\t\treturn () => {};\r\n\t}, [isModalConfirmed]);\r\n\r\n\tconst deleting = (id: number) => {\r\n\t\tsetOpened(true);\r\n\t\tsetDelItem(id);\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tVariables\r\n\t\t\t\t\t\t\tSub biomes\r\n\t\t\t\t\t\t\tcoefficient\r\n\t\t\t\t\t\t\tsampleMean\r\n\t\t\t\t\t\t\tmin\r\n\t\t\t\t\t\t\tmax\r\n\t\t\t\t\t\t\tis Transformed\r\n\t\t\t\t\t\t\tremarks\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{vttVariableDetailMaps &&\r\n\t\t\t\t\t\t\tvttVariableDetailMaps.map((vttdetail, i) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{vttdetail.vttVariable}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{vttdetail.vttSubBiome}\r\n\t\t\t\t\t\t\t\t\t\t{vttdetail.coefficient}\r\n\t\t\t\t\t\t\t\t\t\t{vttdetail.sampleMean}\r\n\t\t\t\t\t\t\t\t\t\t{vttdetail.min}\r\n\t\t\t\t\t\t\t\t\t\t{vttdetail.max}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{vttdetail.isTransformation ? \"yes\" : \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{vttdetail.remarksText}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst { biomeid } = currentView;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentView({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tview: ViewHandles.manageDetail,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbiomeid: biomeid,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdetailid: vttdetail.id,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvttdetail.id && deleting(vttdetail.id)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\tconst toggleShow = async (biomeid: number, checkstate: boolean) => {\r\n\t\tawait toggleShowForUserCalculations(biomeid, checkstate);\r\n\t\tsetChecked(checkstate);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t

{vttBiome && vttBiome.name}

\r\n\t\t\t\t\r\n\t\t\t\t\t{`Constant Value:${vttBiome && vttBiome.constantValue}`}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{`Lower bound factor:${vttBiome && vttBiome.lowerBoundFactor}`}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{`Upper bound factor:${vttBiome && vttBiome.upperBoundFactor}`}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\tvttBiome && vttBiome.id && toggleShow(vttBiome.id, data.checked)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tchecked={checked || false}\r\n\t\t\t\t/>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tsetCurrentView({\r\n\t\t\t\t\t\t\tview: ViewHandles.biome,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\tBack\r\n\t\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tconst { biomeid } = currentView;\r\n\t\t\t\t\t\tsetCurrentView({\r\n\t\t\t\t\t\t\tview: ViewHandles.manageDetail,\r\n\t\t\t\t\t\t\tbiomeid: biomeid,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\tAdd Variable details\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{renderContent()}\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\n// const views = { list: 1, entry: 2 };\r\n\r\n// const VttBiomeDetailWrapper = (props: any) => {\r\n// \tconst [view, setView] = useState(views.list);\r\n// \tconst [item, setItem] = useState(null);\r\n\r\n// \tuseEffect(() => {\r\n// \t\tsetItem(null);\r\n// \t}, [view]);\r\n\r\n// \tconst toggleView = (option: number) => {\r\n// \t\tsetView(option);\r\n// \t};\r\n\r\n// \tconst selectedItem = (detailid: number | null) => {\r\n// \t\tsetItem(detailid);\r\n// \t\ttoggleView(views.entry);\r\n// \t};\r\n\r\n// \tconst renderView = (option: number) => {\r\n// \t\tswitch (option) {\r\n// \t\t\tcase views.entry:\r\n// \t\t\t\treturn (\r\n// \t\t\t\t\t\r\n// \t\t\t\t);\r\n// \t\t\tdefault:\r\n// \t\t\t\treturn (\r\n// \t\t\t\t\t\r\n// \t\t\t\t);\r\n// \t\t}\r\n// \t};\r\n\r\n// \treturn <>{renderView(view)};\r\n// };\r\n\r\nexport default VttBiomeDetails;\r\n","import { ErrorMessage, Field, Formik } from \"formik\";\r\nimport React, { useEffect } from \"react\";\r\nimport { Form, Label, Card } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\n\r\n// import { useVttBiome } from \"../../../providers/VttBiomeProvider\";\r\nimport { useState } from \"react\";\r\nimport {\r\n\tVttBiome,\r\n\t// VttBiome,\r\n\tVttVariableDetailMap,\r\n} from \"../../../models/vtt-models/VttBiome\";\r\nimport EsvdInputInline from \"../../../shared/InputInline\";\r\nimport { ErrorHandler } from \"../../../shared/ExceptionHandling\";\r\nimport { useVttVariableDetailMap } from \"../../../providers/VttVariableDetailMapProvider\";\r\nimport SelectDropdown from \"../../../shared/SelectDropdown\";\r\nimport { useVttVariable } from \"../../../providers/VttVariableProvider\";\r\nimport { useVttSubBiome } from \"../../../providers/VttSubBiomeProvider\";\r\nimport CheckboxInline from \"../../../shared/CheckboxInline\";\r\nimport { ViewHandles, useVtt } from \"../../../providers/VttProvider\";\r\nimport { useVttBiome } from \"../../../providers/VttBiomeProvider\";\r\n\r\nconst defaultBiome: VttVariableDetailMap = {\r\n\tvttBiomeId: \"\",\r\n\tvttBiome: null,\r\n\tvttSubBiomeId: \"\",\r\n\tvttSubBiome: null,\r\n\tvttVariableId: \"\",\r\n\tvttVariable: null,\r\n\tcoefficient: \"\",\r\n\tsampleMean: \"\",\r\n\tmin: \"\",\r\n\tmax: \"\",\r\n\tisTransformation: false,\r\n};\r\n\r\nconst VttVariableDetailEntry = () => {\r\n\tconst { currentView, setCurrentView } = useVtt();\r\n\tconst { getVttBiome } = useVttBiome();\r\n\tconst {\r\n\t\tcreateVttVariableDetailMap,\r\n\t\tgetVttVariableDetailMap,\r\n\t\tupdateVttVariableDetailMap,\r\n\t} = useVttVariableDetailMap();\r\n\tconst { getUnattahcedVttVariables } = useVttVariable();\r\n\tconst { getVttSubBiomes } = useVttSubBiome();\r\n\r\n\tconst [vttVariableDetail, setVttVariableDetail] = useState<\r\n\t\tVttVariableDetailMap | any\r\n\t>(null);\r\n\tconst [vttVariables, setVttVariables] = useState([]);\r\n\tconst [vttSubBiomes, setVttSubBiomes] = useState([]);\r\n\tconst [vttBiome, setVttBiome] = useState();\r\n\tconst [selectedVariable, setSelectedVariable] = React.useState();\r\n\tconst [selectedSubbiome, setSelectedSubbiome] = React.useState();\r\n\tconst [isTransformation, setIsTransformation] = React.useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\t(async () => {\r\n\t\t\tconst { detailid, biomeid } = currentView;\r\n\t\t\tif (biomeid) {\r\n\t\t\t\tvar biome = await getVttBiome(biomeid);\r\n\t\t\t\tsetVttBiome(biome);\r\n\t\t\t}\r\n\r\n\t\t\tif (detailid) {\r\n\t\t\t\tvar vtt = await getVttVariableDetailMap(detailid);\r\n\t\t\t\tsetVttVariableDetail(vtt);\r\n\t\t\t\tsetIsTransformation(vtt?.isTransformation || false);\r\n\t\t\t\tconst vttvar = await getUnattahcedVttVariables(\r\n\t\t\t\t\tbiomeid,\r\n\t\t\t\t\tvtt.vttVariableId\r\n\t\t\t\t);\r\n\t\t\t\tsetVttVariables(vttvar);\r\n\t\t\t} else {\r\n\t\t\t\t//set to default\r\n\t\t\t\tsetVttVariableDetail(defaultBiome);\r\n\t\t\t\tconst vttvar = await getUnattahcedVttVariables(biomeid);\r\n\t\t\t\tsetVttVariables(vttvar);\r\n\t\t\t}\r\n\t\t\tconst vttsub = await getVttSubBiomes();\r\n\t\t\tsetVttSubBiomes(vttsub);\r\n\t\t})();\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (vttVariableDetail) {\r\n\t\t\tconst { vttVariableId, vttSubBiomeId } = vttVariableDetail;\r\n\t\t\tsetSelectedVariable(vttVariableId);\r\n\t\t\tsetSelectedSubbiome(vttSubBiomeId);\r\n\t\t}\r\n\t}, [vttVariableDetail]);\r\n\r\n\tconst handleFormSubmit: Function = async (\r\n\t\tvalues: any,\r\n\t\tsetErrors: Function\r\n\t) => {\r\n\t\ttry {\r\n\t\t\tconst { biomeid } = currentView;\r\n\t\t\tconst { id } = values;\r\n\t\t\tif (id) {\r\n\t\t\t\tawait updateVttVariableDetailMap({\r\n\t\t\t\t\t...values,\r\n\t\t\t\t\tisTransformation,\r\n\t\t\t\t\tvttBiomeId: biomeid,\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tawait createVttVariableDetailMap({\r\n\t\t\t\t\t...values,\r\n\t\t\t\t\tisTransformation,\r\n\t\t\t\t\tvttBiomeId: biomeid,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t// }\r\n\t\t\tsetCurrentView({ view: ViewHandles.manage, biomeid });\r\n\t\t} catch (error) {\r\n\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t

{vttBiome && vttBiome.name}

\r\n\t\t\t\t\r\n\t\t\t\t\t{`Constant Value:${vttBiome && vttBiome.constantValue}`}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{`Lower bound factor:${vttBiome && vttBiome.lowerBoundFactor}`}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{`Upper bound factor:${vttBiome && vttBiome.upperBoundFactor}`}\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t{({ handleSubmit, errors }) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetSelectedVariable(value);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetSelectedSubbiome(value);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetIsTransformation(data.checked);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t// onChange={() => {\r\n\t\t\t\t\t\t\t\t// \tsetIsTransformation(!isTransformation);\r\n\t\t\t\t\t\t\t\t// }}\r\n\t\t\t\t\t\t\t\tchecked={isTransformation}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t{`(*) = required`}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tconst { biomeid } = currentView;\r\n\t\t\t\t\t\t\t\t\tsetCurrentView({\r\n\t\t\t\t\t\t\t\t\t\tview: ViewHandles.manage,\r\n\t\t\t\t\t\t\t\t\t\tbiomeid: biomeid,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\tBack\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tSave\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst validationSchema: any = Yup.object({\r\n\tvttVariableId: Yup.number().required(\"Select a variable\"),\r\n\t// .typeError(\"Variable must be a number\")\r\n\tcoefficient: Yup.number()\r\n\t\t.typeError(\"Coefficient must be a number\")\r\n\t\t.required(\"Coefficient is required\"),\r\n\tsampleMean: Yup.number()\r\n\t\t.typeError(\"SampleMean must be a number\")\r\n\t\t.required(\"SampleMean is required\"),\r\n\tmin: Yup.number()\r\n\t\t.typeError(\"Min must be a number\")\r\n\t\t.required(\"Min is required\"),\r\n\tmax: Yup.number()\r\n\t\t.typeError(\"Max must be a number\")\r\n\t\t.required(\"Max is required\"),\r\n\t// name: Yup.string().trim().required(\"Name is required\"),\r\n\t// constantValue: Yup.number().required(\"Constant value is required\"),\r\n});\r\n\r\nexport default VttVariableDetailEntry;\r\n","import React, { MouseEvent, useEffect, useState } from \"react\";\r\nimport { Card, Grid, Item, Menu, Segment } from \"semantic-ui-react\";\r\nimport VttBiomeList from \"./vttbiomes/VttBiomeList\";\r\nimport { VttBiomeProvider } from \"../../providers/VttBiomeProvider\";\r\nimport { VttSubBiomeProvider } from \"../../providers/VttSubBiomeProvider\";\r\nimport { VttVariableProvider } from \"../../providers/VttVariableProvider\";\r\nimport { VttVariableDetailMapProvider } from \"../../providers/VttVariableDetailMapProvider\";\r\nimport VttBiomeEntry from \"./vttbiomes/VttBiomeEntry\";\r\nimport { ViewHandles, VttProvider, useVtt } from \"../../providers/VttProvider\";\r\nimport VttSubBiomeEntry from \"./vttsubbiomes/VttSubBiomeEntry\";\r\nimport VttSubBiomeList from \"./vttsubbiomes/VttSubBiomeList\";\r\nimport VttVariableEntry from \"./vttvariables/VttVariableEntry\";\r\nimport VttVariableList from \"./vttvariables/VttVariableList\";\r\nimport VttBiomeDetailWrapper from \"./vttbiomesDetails/VttBiomeDetails\";\r\nimport VttBiomeDetails from \"./vttbiomesDetails/VttBiomeDetails\";\r\nimport VttVariableDetailEntry from \"./vttbiomesDetails/VttVariableDetailEntry\";\r\n\r\n// interface IProps {\r\n// mobile?: boolean;\r\n// }\r\n\r\nconst VttBase = () => {\r\n\tconst [activeItem, setActiveItem] = useState(\"biome\");\r\n\tconst [headerText, setHeaderText] = useState(\"Biome\");\r\n\tconst { currentView, setCurrentView } = useVtt();\r\n\t// const [view, setView] = useState(ViewHandles.biome);\r\n\r\n\tuseEffect(() => {}, [currentView]);\r\n\r\n\tconst handleItemClick = (e: any, data: any) => {\r\n\t\tconst { name, content } = data;\r\n\t\tsetHeaderText(content);\r\n\t\tsetActiveItem(name);\r\n\t\tsetCurrentView({ view: name });\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\tswitch (currentView.view) {\r\n\t\t\tcase ViewHandles.manage:\r\n\t\t\t\treturn ;\r\n\t\t\tcase ViewHandles.manageDetail:\r\n\t\t\t\treturn ;\r\n\t\t\tcase ViewHandles.subbiome:\r\n\t\t\t\treturn ;\r\n\t\t\tcase ViewHandles.subbiomeEntry:\r\n\t\t\t\treturn ;\r\n\t\t\tcase ViewHandles.variable:\r\n\t\t\t\treturn ;\r\n\t\t\tcase ViewHandles.variableEntry:\r\n\t\t\t\treturn ;\r\n\t\t\tcase ViewHandles.biomeEntry:\r\n\t\t\t\treturn ;\r\n\t\t\tdefault:\r\n\t\t\t\treturn ;\r\n\t\t}\r\n\t};\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t

Value Transfer Tool - {headerText}

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{renderContent()}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{/* */}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nconst VttBaseWrapper = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\nexport default VttBaseWrapper;\r\n","import React from \"react\";\r\nimport { Grid, Container, Card } from \"semantic-ui-react\";\r\nimport Can from \"../../accessControls/Can\";\r\nimport { actions, resources } from \"../../shared/Literals\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\nimport VttBaseWrapper from \"./VttBase\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst VttHome = () => {\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t renderContent()}\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nconst VttHomeWrapper = (props: any) => {\r\n\treturn ;\r\n};\r\n\r\nexport default VttHomeWrapper;\r\n","import React from \"react\";\r\nimport Select, { components } from \"react-select\";\r\nimport { Form, Grid } from \"semantic-ui-react\";\r\nimport { colourStyles, Option } from \"../../shared/SelectDropdown\";\r\n\r\n//https://codesandbox.io/s/53jomww8yn?file=/src/index.js:650-788\r\n// const Option = (props: any) => {\r\n// \tconst { data, morePadding } = props;\r\n// \treturn (\r\n// \t\t\r\n// \t\t\t{/*

{props.data.label}

\r\n//
{props.data.subLabel}
*/}\r\n// \t\t\t{data.code && !data.hideCode ? (\r\n// \t\t\t\t\r\n// \t\t\t\t\t\r\n// \t\t\t\t\t\t 8 ? 7 : 3}\r\n// \t\t\t\t\t\t\tstyle={\r\n// \t\t\t\t\t\t\t\tmorePadding\r\n// \t\t\t\t\t\t\t\t\t? { paddingLeft: \"1.5rem\", paddingRight: \"1.5rem\" }\r\n// \t\t\t\t\t\t\t\t\t: {}\r\n// \t\t\t\t\t\t\t}>\r\n// \t\t\t\t\t\t\t{data.isDisabled ? \"\" : data.code}\r\n// \t\t\t\t\t\t\r\n// \t\t\t\t\t\t 8 ? 9 : 13}\r\n// \t\t\t\t\t\t\tstyle={\r\n// \t\t\t\t\t\t\t\tmorePadding\r\n// \t\t\t\t\t\t\t\t\t? { paddingLeft: \"1.5rem\", paddingRight: \"1.5rem\" }\r\n// \t\t\t\t\t\t\t\t\t: {}\r\n// \t\t\t\t\t\t\t}>\r\n// \t\t\t\t\t\t\t{`${\r\n// \t\t\t\t\t\t\t\tdata.isDisabled\r\n// \t\t\t\t\t\t\t\t\t? \"--\".repeat(data.sortOrder - 1)\r\n// \t\t\t\t\t\t\t\t\t: \" \".repeat(data.sortOrder - 1)\r\n// \t\t\t\t\t\t\t}${data.label}`}\r\n// \t\t\t\t\t\t\r\n// \t\t\t\t\t\r\n// \t\t\t\t\r\n// \t\t\t) : (\r\n// \t\t\t\t {data.label}\r\n// \t\t\t)}\r\n// \t\t
\r\n// \t);\r\n// };\r\n\r\n// const colourStyles = {\r\n// \t// ValueContainer\r\n// \tvalueContainer: (base: any) => ({\r\n// \t\t...base,\r\n// \t\tfontSize: \"0.87rem\",\r\n// \t}),\r\n// \tcontrol: (base: any) => ({\r\n// \t\t...base,\r\n// \t\tfontSize: \"0.87rem\",\r\n// \t}),\r\n// \toption: (\r\n// \t\tbase: any,\r\n// \t\t{\r\n// \t\t\tisDisabled,\r\n// \t\t}: {\r\n// \t\t\tdata: any;\r\n// \t\t\tisDisabled: boolean;\r\n// \t\t\tisFocused: boolean;\r\n// \t\t\tisSelected: boolean;\r\n// \t\t}\r\n// \t) => {\r\n// \t\t// const color = chroma(data.color);\r\n// \t\treturn {\r\n// \t\t\t...base,\r\n// \t\t\tfontSize: \"0.87rem\",\r\n// \t\t\tcursor: isDisabled ? \"not-allowed\" : \"default\",\r\n// \t\t\tpadding: \"0.5px\",\r\n// \t\t};\r\n// \t},\r\n// \tmultiValue: (styles: any, { data }: { data: any }) => {\r\n// \t\t// const color = chroma(data.color);\r\n// \t\treturn {\r\n// \t\t\t...styles,\r\n// \t\t\t// lineHeight: \"0.5rem\",\r\n// \t\t};\r\n// \t},\r\n// \tmultiValueLabel: (styles: any, { data }: { data: any }) => ({\r\n// \t\t...styles,\r\n// \t}),\r\n// \tmultiValueRemove: (styles: any, { data }: { data: any }) => ({\r\n// \t\t...styles,\r\n// \t}),\r\n// };\r\n\r\nconst VTTCalculationDropdown = (props: any) => {\r\n\tconst {\r\n\t\tfield: {\r\n\t\t\t// provided by Formik Field\r\n\t\t\tname,\r\n\t\t},\r\n\t\tform: {\r\n\t\t\t// also provided by Formik Field\r\n\t\t\tsetFieldValue,\r\n\t\t},\r\n\t\tlabel, // our own label prop\r\n\t\toptions, //ooptions to use\r\n\t\tvalue,\r\n\t\tplaceholder,\r\n\t\tgetRef,\r\n\t\tisMulti,\r\n\t\tisClearable,\r\n\t\tonChange,\r\n\t\toptionsTransform, //used to transform the options into a format for a particular dropdown, if available\r\n\t} = props;\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tgetRef && getRef(ref);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tcloseMenuOnSelect={!isMulti || false}\r\n\t\t\t\t\t\t\tplaceholder={placeholder}\r\n\t\t\t\t\t\t\tisMulti={isMulti || false}\r\n\t\t\t\t\t\t\tisClearable={isClearable || false}\r\n\t\t\t\t\t\t\toptions={optionsTransform ? optionsTransform(options) : options}\r\n\t\t\t\t\t\t\tcomponents={{ Option }}\r\n\t\t\t\t\t\t\tstyles={colourStyles}\r\n\t\t\t\t\t\t\tonChange={(selected) => {\r\n\t\t\t\t\t\t\t\tlet sel = Array.isArray(selected)\r\n\t\t\t\t\t\t\t\t\t? selected.map((a: any) => a.value)\r\n\t\t\t\t\t\t\t\t\t: selected?.value;\r\n\t\t\t\t\t\t\t\tonChange && onChange(sel);\r\n\t\t\t\t\t\t\t\tsetFieldValue(name, sel);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tdefaultValue={options.filter((f: any) => {\r\n\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\r\n\t\t\t\t\t\t\t\t\treturn value.includes(f.value);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn value === f.value;\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\tvalue={options.filter((f: any) => {\r\n\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\r\n\t\t\t\t\t\t\t\t\treturn value.includes(f.value);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn value === f.value;\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default VTTCalculationDropdown;\r\n","import React from \"react\";\r\nimport { Form, Grid } from \"semantic-ui-react\";\r\n\r\nconst VTTCalculationFourColumnHeader = (props: any) => {\r\n\tconst { col1, col2, col3, col4 } = props;\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{col1}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{col2}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{col3}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{col4}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default VTTCalculationFourColumnHeader;\r\n","import { ErrorMessage, Field, FieldArray, Formik, useField } from \"formik\";\r\nimport React, { Fragment, useEffect } from \"react\";\r\nimport {\r\n\tForm,\r\n\tLabel,\r\n\tCard,\r\n\tCheckbox,\r\n\tGrid,\r\n\tInput,\r\n\tButton,\r\n} from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\n\r\nimport { useState } from \"react\";\r\nimport {\r\n\tVttBiome,\r\n\tVttVariableDetailMap,\r\n} from \"../../../models/vtt-models/VttBiome\";\r\nimport { useVttVariableDetailMap } from \"../../../providers/VttVariableDetailMapProvider\";\r\nimport SelectDropdown from \"../../../shared/SelectDropdown\";\r\nimport { useVttBiome } from \"../../../providers/VttBiomeProvider\";\r\nimport { useAuth } from \"../../../providers/AuthProvider\";\r\nimport { userRole } from \"../../../shared/Literals\";\r\nimport VTTCalculationDropdown from \"../../shared-components/VTTCalculationDropdown\";\r\nimport VTTCalculationFourColumnHeader from \"../../shared-components/VTTCalculationEntryHeader\";\r\nimport { formatVttCalculation } from \"../../../EsvdFunctions\";\r\n\r\nconst VariableInput = (props: any) => {\r\n\tconst [field, meta] = useField(props);\r\n\tconst { label, checkLabel, remarks, checked, setChecked, sampleMean } = props;\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{meta.touched && meta.error ? (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{meta.error}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t setChecked(data.checked)}\r\n\t\t\t\t\t\t\tchecked={checked}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst VttValueCalculationEntry = () => {\r\n\tconst { getVttBiomes, getVttBiome } = useVttBiome();\r\n\tconst { getVttVariableDetailMaps } = useVttVariableDetailMap();\r\n\r\n\tconst [vttVariableDetailMaps, setVttVariableDetailMaps] =\r\n\t\tuseState();\r\n\r\n\tconst [vttBiomes, setVttBiomes] = useState([]);\r\n\r\n\t//holds the sub biomes for the biomes\r\n\tconst [subBiomesForDropdown, setSubBiomesForDropdown] = useState();\r\n\r\n\tconst [selectedBiomeid, setSelectedBiomeid] = React.useState();\r\n\tconst [selectedBiome, setSelectedBiome] = React.useState();\r\n\r\n\t//An object holding the selected vtt variables from the sub biome dynamic dropdowns.\r\n\tconst [selectedVttVariablesOfSubbiomes, setSelectedVttVariablesOfSubbiomes] =\r\n\t\tReact.useState({});\r\n\r\n\t//VttVariables which do not belong to a sub biome group\r\n\tconst [freeVariables, setFreeVariables] = React.useState();\r\n\r\n\t//An object holding the initial values of the dynamic inputs.\r\n\t//Since they are dynamically created and their names are not known before hand,\r\n\t//this is the appropriate means to define initial values, with the name of the input as key, containing the initial value of the input\r\n\tconst [initialValues, setInitialValues] = React.useState({});\r\n\r\n\tconst [validateSchema, setValidateSchema] = React.useState();\r\n\r\n\tconst [ecosystemServiceValue, setEcosystemServiceValue] = React.useState<\r\n\t\tnumber | null\r\n\t>(null);\r\n\r\n\tconst [ecosystemServiceValueLb, setEcosystemServiceValueLb] = React.useState<\r\n\t\tnumber | null\r\n\t>(null);\r\n\tconst [ecosystemServiceValueUb, setEcosystemServiceValueUb] = React.useState<\r\n\t\tnumber | null\r\n\t>(null);\r\n\t//An object holding the checkstate of the dynamic checkboxes for each input.\r\n\t//Since they are dynamically created and their names are not known before hand,\r\n\t//this is the appropriate means to attached a check property, with the name of the input as key, containing the state of the checkbox\r\n\tconst [inputCheckedList, setInputCheckedList] = React.useState({});\r\n\r\n\t//use this to rebuild the validation\r\n\tconst [defaultFields, setDefaultFields] = React.useState([]);\r\n\t//use this to retrieve actual defaults during calculation\r\n\t// const [defaultVttVariableIds, setDefaultVttVariableIds] = React.useState<\r\n\t// \tany[]\r\n\t// >([]);\r\n\r\n\tconst { user, fetchCurrentUser } = useAuth();\r\n\r\n\tconst generateFieldValidations = (\r\n\t\tvttdets: VttVariableDetailMap[]\r\n\t\t// doSubbiomes: boolean = false\r\n\t) => {\r\n\t\tconst subbiomesIds = Array.from(\r\n\t\t\tnew Set(\r\n\t\t\t\tvttdets\r\n\t\t\t\t\t.filter((x) => x.vttSubBiomeId)\r\n\t\t\t\t\t.map(\r\n\t\t\t\t\t\t(k) => JSON.stringify({ id: k.vttSubBiomeId, name: k.vttSubBiome }) //use stringify on the object to ensure their strings are compared to eliminate duplicates\r\n\t\t\t\t\t)\r\n\t\t\t)\r\n\t\t);\r\n\r\n\t\t//use the sub biomes to create key-value pairs of vtt variables that belong to each sub biome for use as dropdown options\r\n\t\tconst subbiomeOptions: any = {};\r\n\t\tfor (let it of subbiomesIds) {\r\n\t\t\tif (it) {\r\n\t\t\t\tconst ob = JSON.parse(it);\r\n\t\t\t\tsubbiomeOptions[ob.id] = {\r\n\t\t\t\t\tname: ob.name,\r\n\t\t\t\t\toptions: vttdets\r\n\t\t\t\t\t\t.filter((x) => x.vttSubBiomeId == ob.id)\r\n\t\t\t\t\t\t.map((m) => ({\r\n\t\t\t\t\t\t\tvalue: m.vttVariableId,\r\n\t\t\t\t\t\t\tlabel: m.vttVariable,\r\n\t\t\t\t\t\t\tremarks: m.remarksText,\r\n\t\t\t\t\t\t})),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetSubBiomesForDropdown(subbiomeOptions);\r\n\r\n\t\tconst freeVar = vttdets\r\n\t\t\t.filter((x) => !x.vttSubBiomeId)\r\n\t\t\t.map((m) => ({\r\n\t\t\t\tid: m.vttVariableId,\r\n\t\t\t\tname: m.vttVariable,\r\n\t\t\t\tremarks: m.remarksText,\r\n\t\t\t}));\r\n\r\n\t\tsetFreeVariables(freeVar);\r\n\r\n\t\t//build Yup object for validation\r\n\t\t//drop-sub-k -> sub biome dropdown\r\n\t\t//drop-var-k -> sub biome dropdown selected item entry\r\n\t\t//var-k -> variable\r\n\t\tconst fieldsForValidation: any = {};\r\n\t\tfor (let it of subbiomesIds) {\r\n\t\t\tconst ob = JSON.parse(it);\r\n\t\t\tlet fieldName = `drop-sub-${ob.id}`;\r\n\t\t\tif (!defaultFields.includes(fieldName))\r\n\t\t\t\tfieldsForValidation[fieldName] = Yup.string().required(\"Required\");\r\n\t\t}\r\n\r\n\t\tfor (let it of freeVar) {\r\n\t\t\t//get var details of id\r\n\t\t\tconst vardat = vttdets.find((x) => x.vttVariableId == it.id);\r\n\t\t\tlet fieldName = `var-${it.id}`;\r\n\t\t\tif (defaultFields.includes(fieldName)) continue;\r\n\t\t\tif (vardat) {\r\n\t\t\t\tfieldsForValidation[`var-${it.id}`] = Yup.number()\r\n\t\t\t\t\t.typeError(\"Must be a number\")\r\n\t\t\t\t\t.min(\r\n\t\t\t\t\t\tparseFloat(vardat.min ? vardat.min : vardat.min == \"0\" ? \"0\" : \"\"),\r\n\t\t\t\t\t\t`Must be greater than or equal to ${vardat.min}.`\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.max(\r\n\t\t\t\t\t\tparseFloat(vardat.max ? vardat.max : vardat.max == \"0\" ? \"0\" : \"\"),\r\n\t\t\t\t\t\t`Must be less than or equal to ${vardat.max}.`\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.required(\"Required\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetValidateSchema(Yup.object({ ...fieldsForValidation }));\r\n\t\treturn fieldsForValidation;\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tfetchCurrentUser();\r\n\t\t(async () => {\r\n\t\t\t//load biomes\r\n\t\t\tif (user) {\r\n\t\t\t\tvar biomes =\r\n\t\t\t\t\tuser.role === userRole.admin || user.role === userRole.cocapacity\r\n\t\t\t\t\t\t? await getVttBiomes(null)\r\n\t\t\t\t\t\t: await getVttBiomes(null, true);\r\n\r\n\t\t\t\tsetVttBiomes(biomes);\r\n\t\t\t}\r\n\t\t})();\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetSelectedVttVariablesOfSubbiomes({});\r\n\t\tsetEcosystemServiceValue(null);\r\n\t\tsetValidateSchema(null);\r\n\t\tsetInitialValues({});\r\n\t\tsetFreeVariables(null);\r\n\t\tsetSubBiomesForDropdown(null);\r\n\t\tsetDefaultFields([]);\r\n\t\tsetInputCheckedList({});\r\n\t\tsetSelectedBiome(null);\r\n\t\tsetVttVariableDetailMaps([]);\r\n\t\tif (selectedBiomeid) {\r\n\t\t\t(async () => {\r\n\t\t\t\tconst biome = await getVttBiome(selectedBiomeid);\r\n\t\t\t\tsetSelectedBiome(biome);\r\n\t\t\t\tvar vttdets: VttVariableDetailMap[] = await getVttVariableDetailMaps(\r\n\t\t\t\t\tselectedBiomeid\r\n\t\t\t\t);\r\n\t\t\t\tsetVttVariableDetailMaps(vttdets);\r\n\r\n\t\t\t\t//get unique sub biomeids from details map\r\n\t\t\t\tconst validate: any = generateFieldValidations(vttdets);\r\n\r\n\t\t\t\tconst init: any = {};\r\n\t\t\t\tfor (let it in validate) {\r\n\t\t\t\t\tinit[it] = \"\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetInitialValues(init);\r\n\t\t\t})();\r\n\t\t}\r\n\t}, [selectedBiomeid]);\r\n\r\n\tconst [\r\n\t\tselectedSubbiomeVttVariableRemarks,\r\n\t\tsetSelectedSubbiomeVttVariableRemarks,\r\n\t] = useState({});\r\n\r\n\tuseEffect(() => {\r\n\t\tsetEcosystemServiceValue(null);\r\n\t\tvttVariableDetailMaps && generateFieldValidations(vttVariableDetailMaps);\r\n\r\n\t\t//update remarks for selected items in drop downs\r\n\r\n\t\tconst remrks: any = {};\r\n\t\t//use field names\r\n\t\tfor (let k in selectedVttVariablesOfSubbiomes) {\r\n\t\t\tconst rks = vttVariableDetailMaps?.find(\r\n\t\t\t\t(x) => x.vttVariableId == selectedVttVariablesOfSubbiomes[k]\r\n\t\t\t);\r\n\t\t\tif (rks) {\r\n\t\t\t\tremrks[`drop-var-${k}`] = rks.remarksText;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetSelectedSubbiomeVttVariableRemarks({ ...remrks });\r\n\t}, [selectedVttVariablesOfSubbiomes]);\r\n\r\n\t//update fields listed to use default values\r\n\tuseEffect(() => {\r\n\t\tsetEcosystemServiceValue(null);\r\n\t\tconst defaults = Object.keys(inputCheckedList).filter(\r\n\t\t\t(x) => inputCheckedList[x]\r\n\t\t);\r\n\r\n\t\tif (defaults && defaults.length > 0) {\r\n\t\t\tconst set = new Set();\r\n\t\t\tfor (let de of defaults) {\r\n\t\t\t\tset.add(de);\r\n\t\t\t}\r\n\t\t\tsetDefaultFields([...Array.from(set)]);\r\n\t\t} else {\r\n\t\t\tsetDefaultFields([]);\r\n\t\t}\r\n\t}, [inputCheckedList]);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetEcosystemServiceValue(null);\r\n\t\tvttVariableDetailMaps && generateFieldValidations(vttVariableDetailMaps);\r\n\t}, [defaultFields]);\r\n\r\n\tconst handleFormSubmit: Function = async (\r\n\t\tvalues: any,\r\n\t\tsetErrors: Function\r\n\t) => {\r\n\t\t//NOTE drop-sub-k holds the id of the variable whose value has been entered under drop-var-k\r\n\t\t// {\r\n\t\t// \t\"drop-sub-3\": 15,\r\n\t\t// \t\"drop-var-3\": \"23\",\r\n\t\t// \t\"drop-sub-1\": 19,\r\n\t\t// \t\"drop-var-1\": \"43\",\r\n\t\t// }\r\n\t\t// Eg drop-sub-3 is 15. This 15 is the id of the variable selected for subbiome with id 3 and the user value entered for the variable 15 is 23\r\n\r\n\t\t//Sample Entries\r\n\t\t// const tempval: any = {\r\n\t\t// \t\"drop-sub-1\": 19,\r\n\t\t// \t\"drop-sub-3\": 15,\r\n\t\t// \t\"drop-var-1\": \"1\",\r\n\t\t// \t\"drop-var-3\": \"1\",\r\n\t\t// \t\"var-1\": \"30000\",\r\n\t\t// \t\"var-11\": \"0.9\",\r\n\t\t// \t// \"var-12\": \"16.511\",\r\n\t\t// \t\"var-22\": \"60\",\r\n\t\t// \t\"var-23\": \"40\",\r\n\t\t// \t\"var-24\": \"1\",\r\n\t\t// \t\"var-25\": \"1000\",\r\n\t\t// \t\"var-4\": \"40\",\r\n\t\t// \t\"var-6\": \"50\",\r\n\t\t// };\r\n\r\n\t\tconst biomeVarEntries: any = {};\r\n\r\n\t\tfor (let ent in values) {\r\n\t\t\tif (ent.startsWith(\"drop-sub-\")) {\r\n\t\t\t\tconst vttvarid = values[ent];\r\n\t\t\t\t//sub biome chosen entries do not need the sample mean anymore. so we simple multiply by 1\r\n\t\t\t\tbiomeVarEntries[`${vttvarid}`] = 1;\r\n\t\t\t\t// const varMap = vttVariableDetailMaps?.find(\r\n\t\t\t\t// \t(x) => x.vttVariableId == vttvarid\r\n\t\t\t\t// );\r\n\t\t\t\t// if (varMap) {\r\n\t\t\t\t// \tbiomeVarEntries[`${vttvarid}`] = varMap.sampleMean;\r\n\t\t\t\t// }\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (ent.startsWith(\"var-\")) {\r\n\t\t\t\t//get var id\r\n\t\t\t\tconst varid = ent.replace(\"var-\", \"\");\r\n\t\t\t\tbiomeVarEntries[`${varid}`] = values[ent];\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let ent of defaultFields) {\r\n\t\t\t//check if it's included in defaults\r\n\t\t\tif (defaultFields.includes(ent)) {\r\n\t\t\t\tlet vttvarid: string | null = null;\r\n\t\t\t\tif (ent.startsWith(\"drop-var-\")) {\r\n\t\t\t\t\t//use the id of the sub biome to get the id of the vvt variable\r\n\t\t\t\t\tconst subid = ent.replace(\"drop-var-\", \"\");\r\n\t\t\t\t\t//get vtt varid from select\r\n\t\t\t\t\tvttvarid = selectedVttVariablesOfSubbiomes[subid];\r\n\t\t\t\t} else if (ent.startsWith(\"var-\")) {\r\n\t\t\t\t\tvttvarid = ent.replace(\"var-\", \"\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst varMap = vttVariableDetailMaps?.find(\r\n\t\t\t\t\t(x) => x.vttVariableId == vttvarid\r\n\t\t\t\t);\r\n\t\t\t\tif (varMap) {\r\n\t\t\t\t\tbiomeVarEntries[`${vttvarid}`] = varMap.sampleMean;\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//use details map to get details of the chosen variables for the calculation\r\n\t\tlet summation = 0;\r\n\t\tfor (let varid in biomeVarEntries) {\r\n\t\t\tconst vdMap = vttVariableDetailMaps?.find(\r\n\t\t\t\t(x) => x.vttVariableId == varid\r\n\t\t\t);\r\n\t\t\tif (vdMap) {\r\n\t\t\t\tif (vdMap.coefficient) {\r\n\t\t\t\t\tconst varCalculation = vdMap.isTransformation\r\n\t\t\t\t\t\t? parseFloat(vdMap.coefficient) *\r\n\t\t\t\t\t\t Math.log(parseFloat(biomeVarEntries[varid]))\r\n\t\t\t\t\t\t: parseFloat(vdMap.coefficient) *\r\n\t\t\t\t\t\t parseFloat(biomeVarEntries[varid]);\r\n\t\t\t\t\t// console.log(vdMap.vttVariable, varCalculation);\r\n\r\n\t\t\t\t\tsummation += varCalculation;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//add biome constant value\r\n\t\tif (selectedBiome && selectedBiome.constantValue) {\r\n\t\t\tsummation += parseFloat(selectedBiome.constantValue);\r\n\t\t}\r\n\t\tsummation = Math.exp(summation);\r\n\t\tconst lowerB =\r\n\t\t\tselectedBiome && selectedBiome.lowerBoundFactor\r\n\t\t\t\t? summation * parseFloat(selectedBiome.lowerBoundFactor)\r\n\t\t\t\t: null;\r\n\t\tconst upperB =\r\n\t\t\tselectedBiome && selectedBiome.upperBoundFactor\r\n\t\t\t\t? summation * parseFloat(selectedBiome.upperBoundFactor)\r\n\t\t\t\t: null;\r\n\t\tsetEcosystemServiceValue(summation);\r\n\t\tsetEcosystemServiceValueLb(lowerB);\r\n\t\tsetEcosystemServiceValueUb(upperB);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t{({ values, handleSubmit, errors }) => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tsetSelectedBiomeid(value);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{selectedBiomeid && freeVariables && (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{selectedBiomeid &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubBiomesForDropdown &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tObject.keys(subBiomesForDropdown).map((k, i) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//use the name of the sub biome to hold the selected value\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetSelectedVttVariablesOfSubbiomes({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...selectedVttVariablesOfSubbiomes,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[`${k}`]: value,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{selectedBiomeid &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfreeVariables &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tObject.keys(freeVariables).map((k, i) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//get the default value and keep along with variable name\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet vvtdetmap = null;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (checkstate)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvvtdetmap = vttVariableDetailMaps?.find(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(x) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tx.vttVariableId == freeVariables[k].id\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetInputCheckedList({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...inputCheckedList,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[`var-${freeVariables[k].id}`]: checkstate\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? vvtdetmap?.sampleMean\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//this props help to display sample mean for those\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//checked as default inside the entry field\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsampleMean={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinputCheckedList &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinputCheckedList[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`var-${freeVariables[k].id}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// checkLabel=\"default\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchecked={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinputCheckedList[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`var-${freeVariables[k].id}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinputCheckedList[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`var-${freeVariables[k].id}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tremarks={freeVariables[k].remarks}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{selectedBiomeid && freeVariables && (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tCalculate\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tEcosystem service value calculation result:{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ecosystemServiceValue\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? formatVttCalculation(ecosystemServiceValue)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ecosystemServiceValue && \" (Int$/ha/year)\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t{ecosystemServiceValue &&\r\n\t\t\t\t\t\t\t\t\t\t\tselectedBiome &&\r\n\t\t\t\t\t\t\t\t\t\t\tselectedBiome.lowerBoundFactor !== undefined &&\r\n\t\t\t\t\t\t\t\t\t\t\tselectedBiome.lowerBoundFactor !== null &&\r\n\t\t\t\t\t\t\t\t\t\t\tparseFloat(selectedBiome.lowerBoundFactor) >= 0 &&\r\n\t\t\t\t\t\t\t\t\t\t\tparseFloat(selectedBiome.lowerBoundFactor) <= 1 &&\r\n\t\t\t\t\t\t\t\t\t\t\tselectedBiome.upperBoundFactor &&\r\n\t\t\t\t\t\t\t\t\t\t\tparseFloat(selectedBiome.upperBoundFactor) >= 1 &&\r\n\t\t\t\t\t\t\t\t\t\t\tparseFloat(selectedBiome.upperBoundFactor) <= 2 ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tConfidence interval:{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ecosystemServiceValueLb\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? formatVttCalculation(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tecosystemServiceValueLb\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t )\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\" - \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ecosystemServiceValueUb\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? formatVttCalculation(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tecosystemServiceValueUb\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t )\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ecosystemServiceValue && \" (Int$/ha/year)\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default VttValueCalculationEntry;\r\n","import React, { MouseEvent, useEffect, useState } from \"react\";\r\nimport { Card, Grid, Item, Menu, Segment } from \"semantic-ui-react\";\r\nimport VttValueCalculationEntry from \"./VttValueCalculationEntry\";\r\nimport { VttBiomeProvider } from \"../../../providers/VttBiomeProvider\";\r\nimport { VttSubBiomeProvider } from \"../../../providers/VttSubBiomeProvider\";\r\nimport { VttVariableProvider } from \"../../../providers/VttVariableProvider\";\r\nimport { VttVariableDetailMapProvider } from \"../../../providers/VttVariableDetailMapProvider\";\r\nimport { VttProvider } from \"../../../providers/VttProvider\";\r\n\r\nconst VttCalculateBase = () => {\r\n\tconst [headerText, setHeaderText] = useState(\"Biome\");\r\n\t// const { currentView, setCurrentView } = useVtt();\r\n\t// const [view, setView] = useState(ViewHandles.biome);\r\n\r\n\t// useEffect(() => {}, [currentView]);\r\n\r\n\t// const handleItemClick = (e: any, data: any) => {\r\n\t// \tconst { name, content } = data;\r\n\t// \tsetHeaderText(content);\r\n\t// \tsetCurrentView({ view: name });\r\n\t// };\r\n\r\n\t// const renderContent = () => {\r\n\t// \tswitch (currentView.view) {\r\n\t// \t\tcase ViewHandles.manage:\r\n\t// \t\t\treturn ;\r\n\t// \t\tcase ViewHandles.manageDetail:\r\n\t// \t\t\treturn ;\r\n\t// \t\tcase ViewHandles.subbiome:\r\n\t// \t\t\treturn ;\r\n\t// \t\tcase ViewHandles.subbiomeEntry:\r\n\t// \t\t\treturn ;\r\n\t// \t\tcase ViewHandles.variable:\r\n\t// \t\t\treturn ;\r\n\t// \t\tcase ViewHandles.variableEntry:\r\n\t// \t\t\treturn ;\r\n\t// \t\tcase ViewHandles.biomeEntry:\r\n\t// \t\t\treturn ;\r\n\t// \t\tdefault:\r\n\t// \t\t\treturn ;\r\n\t// \t}\r\n\t// };//style={{ height: \"80vh\" }}\r\n\treturn (\r\n\t\t\r\n\t\t\t{/* */}\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t

Value Transfer Tool

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nconst VttCalculateBaseWrapper = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\nexport default VttCalculateBaseWrapper;\r\n","import React from \"react\";\r\nimport { Button, Card, Item } from \"semantic-ui-react\";\r\nimport { COMPANY_EMAIL } from \"../../../shared/Literals\";\r\nimport { Link } from \"react-router-dom\";\r\n// import MyPDF from \"../../../files/explanatory_variable_definitions_and_data_sources.pdf\";\r\n// import MyPDF from \"../images/explanatory_variable_definitions_and_data_sources.pdf\";\r\n\r\nconst Helpers = {\r\n\thttpRequest: (url: string, method: string, payload: any, headers: any) => {\r\n\t\tconst conf: any = {\r\n\t\t\tmethod,\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/pdf\",\r\n\t\t\t},\r\n\t\t};\r\n\t\tif (method.toLowerCase() === \"post\" && payload && payload.length > 0) {\r\n\t\t\tconf.body = JSON.stringify(payload);\r\n\t\t}\r\n\t\treturn fetch(url, conf).then((response: any) => {\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tlet contentdata = response;\r\n\t\t\t\tif (\r\n\t\t\t\t\tresponse.headers.get(\"Content-Type\").indexOf(\"application/pdf\") > -1\r\n\t\t\t\t) {\r\n\t\t\t\t\tcontentdata = response.json();\r\n\t\t\t\t}\r\n\t\t\t\treturn contentdata;\r\n\t\t\t}\r\n\t\t\treturn Promise.reject(response);\r\n\t\t});\r\n\t},\r\n};\r\n// export Helpers;\r\n\r\nconst VttCalculateReadMePanel = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

Read Me

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\tThe value transfer tool can be used to estimate ecosystem service\r\n\t\t\t\t\tvalues that reflect site characteristics entered by the user.\r\n\t\t\t\t\tCurrently this tool is available for a limited set of biomes and will\r\n\t\t\t\t\tbe expanded to include other biomes in the near future.\r\n\t\t\t\t

\r\n\t\t\t\t

To use the tool:

\r\n\t\t\t\t
    \r\n\t\t\t\t\t
  1. Select the biome of interest from the drop-down list.
  2. \r\n\t\t\t\t\t
  3. \r\n\t\t\t\t\t\tSelect the ecosystem service category for which you want to estimate\r\n\t\t\t\t\t\ta value.{\" \"}\r\n\t\t\t\t\t
  4. \r\n\t\t\t\t\t
  5. \r\n\t\t\t\t\t\tEnter data for each of the variables describing your study site. The\r\n\t\t\t\t\t\tunits in which each variable is measured are provided under “Short\r\n\t\t\t\t\t\texplanation”. The range of feasible values for each explanatory\r\n\t\t\t\t\t\tvariable is limited to the range observed for the study sites of the\r\n\t\t\t\t\t\tselected biome contained in the ESVD. Further information on the\r\n\t\t\t\t\t\tdefinitions and data sources for the explanatory variables included\r\n\t\t\t\t\t\tin the value functions can be found{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\there\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t.{\" \"}\r\n\t\t\t\t\t
  6. \r\n\t\t\t\t\t
  7. \r\n\t\t\t\t\t\tIn the case that data for an explanatory variable is unavailable for\r\n\t\t\t\t\t\tyour study site, it is possible to use a default value (select the\r\n\t\t\t\t\t\tcheckbox on the right). The default value is the mean value for the\r\n\t\t\t\t\t\tvariable across the study sites of the selected biome contained in\r\n\t\t\t\t\t\tthe ESVD.\r\n\t\t\t\t\t
  8. \r\n\t\t\t\t\t
  9. \r\n\t\t\t\t\t\tAll fields are required to estimate an ecosystem service value.\r\n\t\t\t\t\t
  10. \r\n\t\t\t\t\t
  11. \r\n\t\t\t\t\t\tClick on the “Calculate” button to estimate a value, which displays\r\n\t\t\t\t\t\tin the “Result” box. Values are reported in International\r\n\t\t\t\t\t\tdollars/ha/year at 2020 price levels.\r\n\t\t\t\t\t
  12. \r\n\t\t\t\t
\r\n\t\t\t\t

\r\n\t\t\t\t\tNote that the estimated value provides an indication of the order of\r\n\t\t\t\t\tmagnitude of the ecosystem service value at the study site controlling\r\n\t\t\t\t\tfor a set of relevant explanatory factors. It does not necessarily\r\n\t\t\t\t\treflect all relevant determinants of ecosystem service value at the\r\n\t\t\t\t\tstudy site and the estimated value may differ from the results of\r\n\t\t\t\t\tsite-specific primary valuation studies. Estimated values should only\r\n\t\t\t\t\tbe used in relevant contexts and validated using a broader set of\r\n\t\t\t\t\tdecision-making tools. For advice and collaboration regarding the use\r\n\t\t\t\t\tof value transfers for decision making, please get in touch via{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tesvd@fsd.nl\r\n\t\t\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tThe value transfer tool is based on a set of ecosystem service value\r\n\t\t\t\t\tfunctions estimated through meta-analyses of the data contained in the\r\n\t\t\t\t\tESVD. See{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tBrander et al. (2012)\r\n\t\t\t\t\t{\" \"}\r\n\t\t\t\t\tfor an explanation of the approach. Publications documenting each\r\n\t\t\t\t\tvalue function are forthcoming.\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default VttCalculateReadMePanel;\r\n","import React from \"react\";\r\nimport { Grid, Container, Card } from \"semantic-ui-react\";\r\n// import Can from \"../../accessControls/Can\";\r\n// import { actions, resources } from \"../../shared/Literals\";\r\nimport { Redirect } from \"react-router\";\r\nimport Can from \"../../../accessControls/Can\";\r\nimport MediaLayout from \"../../../layouts/MediaLayout\";\r\nimport { actions, resources } from \"../../../shared/Literals\";\r\nimport VttCalculateBaseWrapper from \"./VttCalculateBase\";\r\nimport VttCalculateReadMePanel from \"./VttCalculateReadMePanel\";\r\n// import MediaLayout from \"../../layouts/MediaLayout\";\r\n// import VttBaseWrapper from \"./VttBase\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst VttCalculateHome = () => {\r\n\t// const renderContent = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\n// return {renderContent()}\r\n// return (\r\n// \t renderContent()}\r\n// \t\tno={() => }\r\n// \t/>\r\n// );\r\n\r\nconst VttCalculateHomeWrapper = (props: any) => {\r\n\treturn (\r\n\t\t }\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t);\r\n\t// return ;\r\n};\r\n\r\nexport default VttCalculateHomeWrapper;\r\n","import React, { useContext, useReducer, useState } from \"react\";\r\n// import _ from \"lodash\";\r\nimport agent from \"../api/agent\";\r\nimport { defaultEsvdParams } from \"../models/EsvdQueryFilters\";\r\nimport { VslValuationStudy } from \"../models/vsl-models/VslValuationStudy\";\r\nimport {\r\n\tvslGridEditStatusReducer,\r\n\tvslGridEditSyncLockReducer,\r\n\tvslSelectedRowReducer,\r\n} from \"../components/vsls/VslActionsPanel\";\r\n\r\ninterface IValue {\r\n\tgetVsls: Function;\r\n\teditVsl: Function;\r\n\tsetHotTableInstance?: Function;\r\n\thotTableInstance?: any;\r\n\tvslsCount: number | undefined;\r\n\tvslFilter?: any;\r\n\tsetVslFilters?: Function;\r\n\r\n\tvslData?: any[];\r\n\tresetVslData?: Function;\r\n\tgridStateDispatch?: Function;\r\n\tgridEditSycnLockDispatch?: Function;\r\n\tgridEditSyncLock?: any;\r\n\tgridLockState?: any;\r\n\tselectedRowDispatch?: Function;\r\n\tselectedRowState?: any;\r\n\taddVsl: Function;\r\n\tdeleteStudy: Function;\r\n\tsetvslsCount: Function;\r\n\t// getVslsCount: Function;\r\n}\r\n\r\nconst VslContext = React.createContext(null);\r\n\r\n// The FilterQueryProvider is responsible for FilterQuery management\r\nconst VslProvider = ({ children }: { children: any }) => {\r\n\tconst [vslsCount, setvslsCount] = useState();\r\n\tconst [vslData, setVslData] = useState();\r\n\tconst [vslFilter, setVslFilters] = React.useState(null);\r\n\r\n\tconst [gridEditSyncLock, gridEditSycnLockDispatch] = useReducer(\r\n\t\tvslGridEditSyncLockReducer,\r\n\t\tfalse\r\n\t);\r\n\r\n\tconst [gridLockState, gridStateDispatch] = useReducer(\r\n\t\tvslGridEditStatusReducer,\r\n\t\t{\r\n\t\t\tlock: false,\r\n\t\t}\r\n\t);\r\n\r\n\tconst [selectedRowState, selectedRowDispatch] = useReducer(\r\n\t\tvslSelectedRowReducer,\r\n\t\t{\r\n\t\t\trowInfo: null,\r\n\t\t}\r\n\t);\r\n\r\n\t//use setHotTableInstance to set the hot table instance\r\n\t//so that it can be accessed outside the component in which it is defined\r\n\tconst [hotTableInstance, setHotTableInstance] = useState<\r\n\t\tany | null | undefined\r\n\t>();\r\n\r\n\tconst resetVslData = () => {\r\n\t\tsetVslData([]);\r\n\t};\r\n\r\n\tconst getVsls = async (vslFilter?: any) => {\r\n\t\tconst params = {\r\n\t\t\t// limit: LIMIT,\r\n\t\t\toffset: 0,\r\n\t\t\tsortColumn: \"studyid\",\r\n\t\t\tisDescend: true,\r\n\t\t};\r\n\t\ttry {\r\n\t\t\tconst vsls = vslFilter\r\n\t\t\t\t? await agent.Vsls.list({\r\n\t\t\t\t\t\t...defaultEsvdParams,\r\n\t\t\t\t\t\tparams: { ...params, ...vslFilter },\r\n\t\t\t\t })\r\n\t\t\t\t: await agent.Vsls.list({\r\n\t\t\t\t\t\t...defaultEsvdParams,\r\n\t\t\t\t\t\tparams,\r\n\t\t\t\t });\r\n\r\n\t\t\t//const vsls = await agent.Vsls.list({ ...defaultEsvdParams, params:{...params, ...vslFilter} });\r\n\t\t\tif (!vsls) return [];\r\n\t\t\tsetvslsCount(vsls.length);\r\n\t\t\tsetVslData(vsls);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\t// const getVslsCount = async (vslFilter?: any) => {\r\n\t// \tconst { params } = defaultEsvdParams;\r\n\t// \tparams.limit = 500;\r\n\t// \t// params.sortColumn = \"authors\";\r\n\t// \ttry {\r\n\t// \t\tconst vsls = vslFilter\r\n\t// \t\t\t? await agent.Vsls.listCount({\r\n\t// \t\t\t\t\t...defaultEsvdParams,\r\n\t// \t\t\t\t\tparams: { ...params, ...vslFilter },\r\n\t// \t\t\t })\r\n\t// \t\t\t: await agent.Vsls.listCount({\r\n\t// \t\t\t\t\t...defaultEsvdParams,\r\n\t// \t\t\t\t\tparams,\r\n\t// \t\t\t });\r\n\t// \t\tsetvslsCount(vsls);\r\n\t// \t} catch (error: any) {\r\n\t// \t\tthrow error.response ? error.response.statusText : error.message;\r\n\t// \t}\r\n\t// };\r\n\tconst addVsl = async (vslUpdate: VslValuationStudy) => {\r\n\t\ttry {\r\n\t\t\tdelete vslUpdate.id;\r\n\t\t\tif (!vslUpdate.yearOfPublication) {\r\n\t\t\t\tdelete vslUpdate.yearOfPublication;\r\n\t\t\t}\r\n\t\t\treturn await agent.Vsls.create(vslUpdate);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst editVsl = async (vslUpdate: VslValuationStudy) => {\r\n\t\ttry {\r\n\t\t\tif (!vslUpdate.yearOfPublication) {\r\n\t\t\t\tdelete vslUpdate.yearOfPublication;\r\n\t\t\t}\r\n\t\t\treturn await agent.Vsls.update(vslUpdate);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst deleteStudy = async (id: number) => {\r\n\t\ttry {\r\n\t\t\treturn await agent.Vsls.delete(id);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useVsl = () => {\r\n\tconst vslH = useContext(VslContext);\r\n\tif (vslH == null) {\r\n\t\tthrow new Error(\"useVsl() called outside of its hook.\");\r\n\t}\r\n\treturn vslH;\r\n};\r\n\r\nexport { VslProvider, useVsl };\r\n","import React, { useState, Fragment } from \"react\";\r\n\r\nimport { CurrentReferenceInfo } from \"../../models/ReferenceInfo\";\r\n\r\nimport { useVsl } from \"../../providers/VslProvider\";\r\nimport moment from \"moment\";\r\n\r\ninterface IProps {\r\n\t// filename: string;\r\n\tButtonText: string;\r\n\tcurrentVersion?: CurrentReferenceInfo | null;\r\n}\r\n\r\nconst VslExport = (props: IProps) => {\r\n\tconst { hotTableInstance } = useVsl();\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n\tconst { ButtonText } = props;\r\n\r\n\tconst handleClick = async () => {\r\n\t\tif (hotTableInstance) {\r\n\t\t\tsetIsLoading(true);\r\n\t\t\tconst exportPlugin = hotTableInstance.getPlugin(\"exportFile\");\r\n\t\t\tconst filename = `Vsl_Data_${moment().format(\"Do-MMM-yyyy_HH-mm-ss\")}`;\r\n\t\t\texportPlugin.downloadFile(\"csv\", {\r\n\t\t\t\tfilename: filename,\r\n\t\t\t\tcolumnHeaders: true, // default false\r\n\t\t\t});\r\n\t\t\tsetIsLoading(false);\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t handleClick()}\r\n\t\t\t\ttype=\"reset\"\r\n\t\t\t\tstyle={{\r\n\t\t\t\t\theight: \"2rem\",\r\n\t\t\t\t\twidth: \"12rem\",\r\n\t\t\t\t}}\r\n\t\t\t\tdisabled={isLoading}>\r\n\t\t\t\t{ButtonText}\r\n\t\t\t\r\n\t\t\t{/* handleClick()}\r\n\t\t\t\tdisabled={isLoading}\r\n\t\t\t/> */}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default VslExport;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Card, Item } from \"semantic-ui-react\";\r\n// import moment from \"moment\";\r\n// import * as signalR from \"@microsoft/signalr\";\r\n\r\nimport VslExport from \"./VslExport\";\r\nimport { useVsl } from \"../../providers/VslProvider\";\r\nimport MyModal from \"../../layouts/Modals\";\r\n// import { useAuth } from \"../../providers/AuthProvider\";\r\nimport { useVslGridHub } from \"../../providers/VslGridHubProvider\";\r\nimport { VslCellEditInfo } from \"../../models/vsl-models/VslCellEditInfo\";\r\n\r\nexport function vslGridEditSyncLockReducer(state: any, action: any) {\r\n\tswitch (action.type) {\r\n\t\tcase \"synclocked\":\r\n\t\t\treturn true;\r\n\t\tdefault:\r\n\t\t\treturn false;\r\n\t}\r\n}\r\n\r\nexport function vslGridEditStatusReducer(state: any, action: any) {\r\n\tswitch (action.type) {\r\n\t\tcase \"lock\":\r\n\t\t\treturn { lock: true };\r\n\t\tcase \"edit\":\r\n\t\t\treturn { lock: false };\r\n\t\tdefault:\r\n\t\t\tthrow new Error(\"Unsupported action...\");\r\n\t}\r\n}\r\n\r\nexport function vslSelectedRowReducer(state: any, action: any) {\r\n\tswitch (action.type) {\r\n\t\tcase \"selected\":\r\n\t\t\treturn { rowInfo: action.rowInfo };\r\n\t\tdefault:\r\n\t\t\treturn { rowInfo: null };\r\n\t}\r\n}\r\n// type: \"selected\",\r\n// rowInfo: { index: row, id: rowData.id },\r\n\r\nconst VslActionsPanel = () => {\r\n\tconst {\r\n\t\tselectedRowState,\r\n\t\tselectedRowDispatch,\r\n\t\thotTableInstance,\r\n\t\tgridLockState,\r\n\t\tdeleteStudy,\r\n\t\tsetvslsCount,\r\n\t\tvslsCount,\r\n\t\tgridEditSyncLock,\r\n\t\tgridEditSycnLockDispatch,\r\n\t} = useVsl();\r\n\r\n\tconst { vslGridHub } = useVslGridHub();\r\n\r\n\tconst [opened, setOpened] = useState(false);\r\n\tconst [isModalConfirmed, setIsModalConfirmed] = useState(false);\r\n\tconst [rowIsReadonly, setRowIsReadonly] = useState(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (vslGridHub) {\r\n\t\t\tif (vslGridHub.state === \"Disconnected\") {\r\n\t\t\t\tvslGridHub.start();\r\n\t\t\t}\r\n\t\t\tvslGridHub.on(\"GridIsReadonly\", (locked: any, username: string) => {\r\n\t\t\t\tsetRowIsReadonly({ locked, username });\r\n\t\t\t});\r\n\t\t}\r\n\t}, [vslGridHub]);\r\n\r\n\tuseEffect(() => {\r\n\t\t//toggle grid state\r\n\t\tif (rowIsReadonly) {\r\n\t\t\tconst { locked } = rowIsReadonly;\r\n\t\t\tif (locked) {\r\n\t\t\t\tgridEditSycnLockDispatch &&\r\n\t\t\t\t\tgridEditSycnLockDispatch({ type: \"synclocked\" });\r\n\t\t\t} else {\r\n\t\t\t\tgridEditSycnLockDispatch && gridEditSycnLockDispatch({ type: \"\" });\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn () => {\r\n\t\t\t// if (hubConnection) {\r\n\t\t\t// \thubConnection.stop();\r\n\t\t\t// }\r\n\t\t};\r\n\t}, [rowIsReadonly]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (isModalConfirmed) {\r\n\t\t\tsetIsModalConfirmed(false);\r\n\t\t\t(async () => {\r\n\t\t\t\tconst { index, id } = selectedRowState.rowInfo;\r\n\t\t\t\tif (id) {\r\n\t\t\t\t\tawait deleteStudy(id);\r\n\t\t\t\t\t// hotTableInstance.alter(\"remove_row\", index);\r\n\t\t\t\t}\r\n\t\t\t\tif (index >= 0) {\r\n\t\t\t\t\thotTableInstance.alter(\"remove_row\", index);\r\n\t\t\t\t\tlet cellEditInfo: VslCellEditInfo = {\r\n\t\t\t\t\t\tid: id,\r\n\t\t\t\t\t\trow: index,\r\n\t\t\t\t\t\t// column: col,\r\n\t\t\t\t\t\tactionType: \"delete\",\r\n\t\t\t\t\t};\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tvslGridHub &&\r\n\t\t\t\t\t\t\tvslGridHub.invoke(\"VslGridEditInfo\", cellEditInfo);\r\n\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t// console.log(error);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// await getVslsCount();\r\n\t\t\t\tsetvslsCount(vslsCount && vslsCount > 1 ? vslsCount - 1 : 0);\r\n\t\t\t\tselectedRowDispatch && selectedRowDispatch({ rowInfo: null });\r\n\t\t\t})();\r\n\t\t} else {\r\n\t\t\tselectedRowDispatch && selectedRowDispatch({ rowInfo: null });\r\n\t\t}\r\n\t\treturn () => {};\r\n\t}, [isModalConfirmed]);\r\n\r\n\tconst { lock } = gridLockState;\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

Actions

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t{!gridEditSyncLock ? (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t{/* \r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tgridStateDispatch && gridStateDispatch({ type: \"edit\" });\r\n\t\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\t\tvslGridHub &&\r\n\t\t\t\t\t\t\t\t\t\t\tvslGridHub.invoke(\"VslGridInEditMode\", true);\r\n\t\t\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\t\t\t// console.log(error);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\ttype=\"reset\"\r\n\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t// marginTop: \"1rem\",\r\n\t\t\t\t\t\t\t\t\tbackgroundColor: \"#f6da6e\",\r\n\t\t\t\t\t\t\t\t\t// display: \"block !important\",\r\n\t\t\t\t\t\t\t\t\theight: \"2rem\",\r\n\t\t\t\t\t\t\t\t\twidth: \"12rem\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tdisabled={!lock || gridEditSyncLock}>\r\n\t\t\t\t\t\t\t\tLock editing to others\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tgridStateDispatch && gridStateDispatch({ type: \"lock\" });\r\n\t\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\t\tvslGridHub &&\r\n\t\t\t\t\t\t\t\t\t\t\tvslGridHub.invoke(\"VslGridInEditMode\", false);\r\n\t\t\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\t\t\tconsole.log(error);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\ttype=\"reset\"\r\n\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t// marginTop: \"1rem\",\r\n\t\t\t\t\t\t\t\t\t// backgroundColor: \"#f6da6e\",\r\n\t\t\t\t\t\t\t\t\t// display: \"block !important\",\r\n\t\t\t\t\t\t\t\t\theight: \"2rem\",\r\n\t\t\t\t\t\t\t\t\twidth: \"12rem\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tdisabled={lock || gridEditSyncLock}>\r\n\t\t\t\t\t\t\t\tUnlock editing for others\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
*/}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\thotTableInstance.alter(\"insert_row_above\", 0);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\ttype=\"reset\"\r\n\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t// marginTop: \"1rem\",\r\n\t\t\t\t\t\t\t\t\t// backgroundColor: \"#f6da6e\",\r\n\t\t\t\t\t\t\t\t\t// display: \"block !important\",\r\n\t\t\t\t\t\t\t\t\theight: \"2rem\",\r\n\t\t\t\t\t\t\t\t\twidth: \"12rem\",\r\n\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\tAdd Study Record\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tconst { index } = selectedRowState.rowInfo;\r\n\t\t\t\t\t\t\t\t\tif (index >= 0) {\r\n\t\t\t\t\t\t\t\t\t\tsetOpened(true);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\ttype=\"reset\"\r\n\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t// marginTop: \"1rem\",\r\n\t\t\t\t\t\t\t\t\t// backgroundColor: \"#f6da6e\",\r\n\t\t\t\t\t\t\t\t\t// display: \"block !important\",\r\n\t\t\t\t\t\t\t\t\theight: \"2rem\",\r\n\t\t\t\t\t\t\t\t\twidth: \"12rem\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\tselectedRowState.rowInfo === null //|| gridEditSyncLock\r\n\t\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\tDelete Study Record\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
{`Grid is locked for editing by ${rowIsReadonly.username}`}
\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default VslActionsPanel;\r\n","import React from \"react\";\r\nimport { Button, Card, Form, Input, Label } from \"semantic-ui-react\";\r\nimport { SelectDrop } from \"../../shared/SelectDropdown\";\r\nimport {\r\n\tformatBiomeForDropdown,\r\n\tformatShowOnlyBiomeForDropdown,\r\n} from \"../../EsvdFunctions\";\r\n\r\nimport { ErrorMessage, Formik } from \"formik\";\r\nimport { NoVslFilterGrid } from \"../../shared/NoFilterGrid\";\r\nimport { LoadingButton } from \"../../shared/LoadingOverlay\";\r\n// import { useModal } from \"../../hooks/ModalHook\";\r\nimport { useVsl } from \"../../providers/VslProvider\";\r\nimport { IncludedInEsvdOptions } from \"../../shared/Literals\";\r\nimport { IVslFilter } from \"../../models/vsl-models/IVslFilter\";\r\nimport { useModalWithContext } from \"../../layouts/ModalWithContext\";\r\n\r\nconst VslFilterPanel = (props: IVslFilter) => {\r\n\t// const { openModal } = useModal();\r\n\tconst { modalDispatcher } = useModalWithContext();\r\n\tconst { getVsls } = useVsl();\r\n\tconst {\r\n\t\t// vslFilters,\r\n\t\tsetVslFilters,\r\n\t\tdropdownOptions,\r\n\t\tisLoading,\r\n\t\tsetIsLoading,\r\n\t} = props;\r\n\tconst {\r\n\t\tbiomeEcosystems,\r\n\t\tbiomeV2EcosystemV2Ecozones,\r\n\t\tecosystemServices,\r\n\t\tcountries,\r\n\t\tprotectionStatuses,\r\n\t} = dropdownOptions || {};\r\n\t// const [vslFilters, setQVslFilters] = useState({\r\n\t// \t...defaultEsvdParams,\r\n\t// });\r\n\r\n\tlet countriesRef: any | null = null;\r\n\tlet ecosystemServicesRef: any | null = null;\r\n\tlet protectionStatusRef: any | null = null;\r\n\tlet biomeRef: any | null = null;\r\n\tlet biomeV2Ref: any | null = null;\r\n\tlet includedEsvdRef: any | null = null;\r\n\r\n\tconst [vslQFilter, setVslQFilters] = React.useState(null);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tsetVslFilters({ ...vslQFilter });\r\n\t}, [vslQFilter]);\r\n\r\n\tconst clearFilter = () => {\r\n\t\tcountriesRef.select.clearValue();\r\n\t\tecosystemServicesRef.select.clearValue();\r\n\t\tprotectionStatusRef.select.clearValue();\r\n\t\tbiomeV2Ref.select.clearValue();\r\n\t\tbiomeRef.select.clearValue();\r\n\t\tincludedEsvdRef.select.clearValue();\r\n\t\tsetVslQFilters && setVslQFilters(null);\r\n\t\tgetVsls && getVsls();\r\n\t};\r\n\r\n\tconst handleFormSubmit = async (\r\n\t\tvalues: { error: null },\r\n\t\tsetErrors: Function\r\n\t) => {\r\n\t\tif (vslQFilter) {\r\n\t\t\tsetIsLoading(true);\r\n\t\t\tgetVsls && (await getVsls(vslQFilter));\r\n\t\t\tsetIsLoading(false);\r\n\t\t} else {\r\n\t\t\tmodalDispatcher({\r\n\t\t\t\topen: true,\r\n\t\t\t\tsize: \"small\",\r\n\t\t\t\tdisplayType: \"info\",\r\n\t\t\t\toptions: {\r\n\t\t\t\t\ttitle: \"Attention!\",\r\n\t\t\t\t\tbody: ,\r\n\t\t\t\t\tbasicModal: true,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t}}>\r\n\t\t\t{({ handleSubmit, isValid, dirty, isSubmitting, errors }) => (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

Filters

\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tclearFilter();\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\ttype=\"reset\"\r\n\t\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t\t// marginTop: \"1rem\",\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"#f6da6e\",\r\n\t\t\t\t\t\t\t\t\t\t// display: \"block !important\",\r\n\t\t\t\t\t\t\t\t\t\theight: \"2rem\",\r\n\t\t\t\t\t\t\t\t\t\t// width: \"5rem\",\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\tClear Filters\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tincludedEsvdRef = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={IncludedInEsvdOptions.filter((x) => x.value)} //filter out the blank options\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"Included in ESVD\"\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) => {\r\n\t\t\t\t\t\t\t\t\t\tif (value.length > 0)\r\n\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tincludedEsvd: value[0].label,\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tincludedEsvd: null,\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tbiomeRef = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={formatBiomeForDropdown(biomeEcosystems || [])}\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"Biome / Ecosystem\"\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) => {\r\n\t\t\t\t\t\t\t\t\t\tif (value.length > 0)\r\n\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbiomeEcosystems: value.map((x: any) => x.value),\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbiomeEcosystems: null,\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tbiomeV2Ref = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={formatBiomeForDropdown(\r\n\t\t\t\t\t\t\t\t\t\tbiomeV2EcosystemV2Ecozones || []\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"ESVD2.0 Biome / Ecozone\"\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) => {\r\n\t\t\t\t\t\t\t\t\t\tif (value.length > 0)\r\n\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbiomeV2EcosystemV2Ecozones: value.map(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(x: any) => x.value\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbiomeV2EcosystemV2Ecozones: null,\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tcountriesRef = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={countries}\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"Country\"\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) => {\r\n\t\t\t\t\t\t\t\t\t\tif (value.length > 0)\r\n\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcountries: value.map((x: any) => x.value),\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcountries: null,\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tprotectionStatusRef = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={protectionStatuses}\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"Protection Status\"\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) => {\r\n\t\t\t\t\t\t\t\t\t\tif (value.length > 0)\r\n\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tprotectionStatuses: value[0].id,\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tprotectionStatuses: null,\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t// onChange={this.setSelectedProtectionStatuses}\r\n\t\t\t\t\t\t\t\t\t// onChange={(value: any) =>\r\n\t\t\t\t\t\t\t\t\t// \t// setSelectedItem(value, FILTERS.protectionStatuses)\r\n\t\t\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tecosystemServicesRef = ref;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\toptions={formatShowOnlyBiomeForDropdown(\r\n\t\t\t\t\t\t\t\t\t\tecosystemServices || []\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"TEEB services classification\"\r\n\t\t\t\t\t\t\t\t\tonChange={(value: any) => {\r\n\t\t\t\t\t\t\t\t\t\tif (value.length > 0)\r\n\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tecosystemServices: value.map((x: any) => x.value),\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tecosystemServices: null,\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t// onChange={this.setSelectedEcosystemServices}\r\n\t\t\t\t\t\t\t\t\t// onChange={(value: any) =>\r\n\t\t\t\t\t\t\t\t\t// \t// setSelectedItem(value, FILTERS.ecosystemServices)\r\n\t\t\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t setFreeText(val)}\r\n\t\t\t\t\t\t\t\t\tonChange={(e: any) => {\r\n\t\t\t\t\t\t\t\t\t\t// if (value.length > 0)\r\n\t\t\t\t\t\t\t\t\t\tsetVslQFilters &&\r\n\t\t\t\t\t\t\t\t\t\t\tsetVslQFilters({\r\n\t\t\t\t\t\t\t\t\t\t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\tfreeText: e.target.value,\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t// else\r\n\t\t\t\t\t\t\t\t\t\t// \tsetVslFilters &&\r\n\t\t\t\t\t\t\t\t\t\t// \t\tsetVslFilters({\r\n\t\t\t\t\t\t\t\t\t\t// \t\t\t...vslQFilter,\r\n\t\t\t\t\t\t\t\t\t\t// \t\t\tfreeText: null,\r\n\t\t\t\t\t\t\t\t\t\t// \t\t});\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tname={\"freeText\"}\r\n\t\t\t\t\t\t\t\t\tplaceholder={'Free Text Search - Use \"\" for string matching'}\r\n\t\t\t\t\t\t\t\t\tdata-after='Use \"\" for string matching'\r\n\t\t\t\t\t\t\t\t\t// value={queryFilters.params.freeText}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n\t// }\r\n};\r\n\r\nexport default VslFilterPanel;\r\n","import React from \"react\";\r\nimport Select from \"react-select\";\r\nimport { BaseEditorComponent } from \"@handsontable/react\";\r\nimport { colourStyles, Option } from \"../../shared/SelectDropdown\";\r\n\r\ninterface IProps {\r\n\tdata: any[] | undefined;\r\n\tplaceholder?: string;\r\n\tisMulti: boolean | null | undefined;\r\n\tcloseMenuOnSelect?: boolean;\r\n\tcodeCell?: string;\r\n\t// formatOptions?: boolean;\r\n\tformatter?: Function;\r\n\tchangeTriggerFunction?: Function;\r\n}\r\n\r\n// an editor component\r\nclass MultiSelectEditor extends BaseEditorComponent {\r\n\tprivate mainElementRef = React.createRef();\r\n\tconstructor(props: any) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tvalue: \"\",\r\n\t\t\tdata: props.data || [],\r\n\t\t};\r\n\t}\r\n\r\n\tsetValue(value: any, callback: any) {\r\n\t\t//custom cell properties key, data, holds actual selected options from the dropdown.\r\n\t\t//So use it to get the objects of the selected options since value in the parameter will contain only the labels without the ids\r\n\t\t//use the custom cellproperties data key for the actual values\r\n\t\tif (value)\r\n\t\t\tthis.setState((state, props) => {\r\n\t\t\t\treturn { value: this.cellProperties.data || \" \" };\r\n\t\t\t}, callback);\r\n\t}\r\n\r\n\tgetValue(args: any) {\r\n\t\tconst { codeCell } = this.props;\r\n\t\t//In order to preserve the original underlying selection from the multi-select dropdown including their ids(value) and labels,\r\n\t\t//add it as a data key to the cell properties object.\r\n\t\t//This is necessary because the value in the cells are displayed as plain text without the ids of the selected options.\r\n\t\t//So we want to be able to access the original selection when the editor shows up again.\r\n\t\tthis.cellProperties.data = this.state.value;\r\n\t\t//extra all label for display\r\n\t\t//value is an array of objects ie [{value:xxx, label:xxx}], so use map to extract the labels and join them for display in the cell\r\n\r\n\t\tlet ree;\r\n\t\tconst { row } = this.cellProperties;\r\n\t\t// if (isMulti) {\r\n\r\n\t\tif (this.state.value) {\r\n\t\t\tconst dat = JSON.parse(this.state.value);\r\n\t\t\tree = dat.map((v: any) => v.code).join(\"; \");\r\n\t\t\t// const ids = dat.map((v: any) => v.code).join(\";\");\r\n\t\t\t// this.hotInstance.setSourceDataAtCell(row, codeCell, ids);\r\n\t\t} else {\r\n\t\t\tree = \"\";\r\n\t\t\tthis.hotInstance.setSourceDataAtCell(row, codeCell, \"\");\r\n\t\t}\r\n\t\t// if (changeTriggerFunction) {\r\n\t\t// \tchangeTriggerFunction();\r\n\t\t// }\r\n\t\treturn ree;\r\n\t}\r\n\r\n\topen() {\r\n\t\tthis.mainElementRef.current.style.display = \"inline-block\";\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.setState((state, props) => {\r\n\t\t\treturn {\r\n\t\t\t\tvalue: null,\r\n\t\t\t};\r\n\t\t});\r\n\t\tthis.mainElementRef.current.style.display = \"none\";\r\n\t}\r\n\r\n\tprepare(\r\n\t\trow: any,\r\n\t\tcol: any,\r\n\t\tprop: any,\r\n\t\ttd: any,\r\n\t\toriginalValue: any,\r\n\t\tcellProperties: any\r\n\t) {\r\n\t\t// We'll need to call the `prepare` method from\r\n\t\t// the `BaseEditorComponent` class, as it provides\r\n\t\t// the component with the information needed to use the editor\r\n\t\t// (hotInstance, row, col, prop, TD, originalValue, cellProperties)\r\n\t\tsuper.prepare(row, col, prop, td, originalValue, cellProperties);\r\n\r\n\t\tconst tdPosition = td.getBoundingClientRect();\r\n\r\n\t\t// As the `prepare` method is triggered after selecting\r\n\t\t// any cell, we're updating the styles for the editor element,\r\n\t\t// so it shows up in the correct position.\r\n\t\tthis.mainElementRef.current.style.left =\r\n\t\t\ttdPosition.left + window.pageXOffset + \"px\";\r\n\t\tthis.mainElementRef.current.style.top =\r\n\t\t\ttdPosition.top + window.pageYOffset + \"px\";\r\n\t\tthis.mainElementRef.current.style.minWidth =\r\n\t\t\ttdPosition.width + window.pageYOffset + \"px\";\r\n\t}\r\n\r\n\tstopMousedownPropagation(e: any) {\r\n\t\te.stopPropagation();\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { data, isMulti, formatter, placeholder, closeMenuOnSelect } =\r\n\t\t\tthis.props;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tthis.setState((state, props) => {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tvalue: JSON.stringify(selected),\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tvalue={this.state.value && JSON.parse(this.state.value)}\r\n\t\t\t\t/>\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default MultiSelectEditor;\r\n","import React from \"react\";\r\nimport Select from \"react-select\";\r\nimport { BaseEditorComponent } from \"@handsontable/react\";\r\nimport { colourStyles, Option } from \"../../shared/SelectDropdown\";\r\n\r\ninterface IProps {\r\n\tdata: any[] | undefined;\r\n\tplaceholder?: string;\r\n\tformatter?: Function;\r\n\tcodeCell?: string;\r\n}\r\n\r\n// an editor component\r\nclass SingleSelectEditor extends BaseEditorComponent {\r\n\tprivate mainElementRef = React.createRef();\r\n\tconstructor(props: any) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tvalue: \"\",\r\n\t\t\tdata: props.data || [],\r\n\t\t};\r\n\t}\r\n\r\n\tsetValue(value: any, callback: any) {\r\n\t\t//custom cell properties key, data, holds actual selected options from the dropdown.\r\n\t\t//So use it to get the objects of the selected options since value in the parameter will contain only the labels without the ids\r\n\t\t//use the custom cellproperties data key for the actual values\r\n\t\tif (value)\r\n\t\t\tthis.setState((state, props) => {\r\n\t\t\t\treturn { value: this.cellProperties.data || \"\" };\r\n\t\t\t}, callback);\r\n\t}\r\n\r\n\tgetValue(args: any) {\r\n\t\tconst { codeCell } = this.props;\r\n\t\t//In order to preserve the original underlying selection from the multi-select dropdown including their ids(value) and labels,\r\n\t\t//add it as a data key to the cell properties object.\r\n\t\t//This is necessary because the value in the cells are displayed as plain text without the ids of the selected options.\r\n\t\t//So we want to be able to access the original selection when the editor shows up again.\r\n\t\tthis.cellProperties.data = this.state.value;\r\n\t\t//extra all label for display\r\n\t\t//value is an array of objects ie [{value:xxx, label:xxx}], so use map to extract the labels and join them for display in the cell\r\n\t\t// const temp = this.state.value ? JSON.parse(this.state.value) : {};\r\n\t\t// const res = temp ? temp.label : \"\";\r\n\t\t// return res;\r\n\t\tlet ree;\r\n\t\tconst { row } = this.cellProperties;\r\n\t\tif (this.state.value) {\r\n\t\t\tconst jso = JSON.parse(this.state.value);\r\n\t\t\tif (!jso) {\r\n\t\t\t\tthis.hotInstance.setSourceDataAtCell(row, codeCell, \"\");\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tree = jso.label;\r\n\t\t\tconst ids = jso.id ? jso.id : jso.value !== 0 ? jso.value : null;\r\n\t\t\tthis.hotInstance.setSourceDataAtCell(row, codeCell, ids);\r\n\t\t} else {\r\n\t\t\tree = \"\";\r\n\t\t\tthis.hotInstance.setSourceDataAtCell(row, codeCell, \"\");\r\n\t\t}\r\n\t\treturn ree;\r\n\t}\r\n\r\n\topen() {\r\n\t\tthis.mainElementRef.current.style.display = \"inline-block\";\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.setState((state, props) => {\r\n\t\t\treturn {\r\n\t\t\t\tvalue: null,\r\n\t\t\t};\r\n\t\t});\r\n\t\tthis.mainElementRef.current.style.display = \"none\";\r\n\t}\r\n\r\n\tprepare(\r\n\t\trow: any,\r\n\t\tcol: any,\r\n\t\tprop: any,\r\n\t\ttd: any,\r\n\t\toriginalValue: any,\r\n\t\tcellProperties: any\r\n\t) {\r\n\t\t// We'll need to call the `prepare` method from\r\n\t\t// the `BaseEditorComponent` class, as it provides\r\n\t\t// the component with the information needed to use the editor\r\n\t\t// (hotInstance, row, col, prop, TD, originalValue, cellProperties)\r\n\t\tsuper.prepare(row, col, prop, td, originalValue, cellProperties);\r\n\r\n\t\tconst tdPosition = td.getBoundingClientRect();\r\n\r\n\t\t// As the `prepare` method is triggered after selecting\r\n\t\t// any cell, we're updating the styles for the editor element,\r\n\t\t// so it shows up in the correct position.\r\n\t\tthis.mainElementRef.current.style.left =\r\n\t\t\ttdPosition.left + window.pageXOffset + \"px\";\r\n\t\tthis.mainElementRef.current.style.top =\r\n\t\t\ttdPosition.top + window.pageYOffset + \"px\";\r\n\t\tthis.mainElementRef.current.style.minWidth =\r\n\t\t\ttdPosition.width + window.pageYOffset + \"px\";\r\n\t}\r\n\r\n\tstopMousedownPropagation(e: any) {\r\n\t\te.stopPropagation();\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { data, formatter, placeholder } = this.props;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tthis.setState((state, props) => {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tvalue: JSON.stringify(selected),\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tvalue={this.state.value && JSON.parse(this.state.value)}\r\n\t\t\t\t/>\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default SingleSelectEditor;\r\n","import React, { useEffect, useState } from \"react\";\r\n\r\nexport function SingleSelectRenderer(props: any) {\r\n\tconst { value, cellProperties, data } = props;\r\n\t// const [txt, setTxt] = useState([]);\r\n\tconst txt: any[] = [];\r\n\t// useEffect(() => {\r\n\r\n\t// });\r\n\r\n\t// const formatValue = () => {\r\n\t// \tif (value && data) {\r\n\t// \t\t//build data\r\n\t// \t\tcellProperties.data = value;\r\n\t// \t\tconst it = data.find((x: any) => x.id === value);\r\n\t// \t\tif (it) return it.label;\r\n\t// \t\treturn value;\r\n\t// \t} else {\r\n\t// \t\treturn value;\r\n\t// \t}\r\n\t// };\r\n\r\n\tconst formatValue = () => {\r\n\t\tif (value) {\r\n\t\t\t//build data\r\n\t\t\tif (data) {\r\n\t\t\t\t// const idd = parseInt(sp[0]);\r\n\t\t\t\t// if (!idd || typeof idd !== \"number\") {\r\n\t\t\t\t// \treturn value;\r\n\t\t\t\t// }\r\n\t\t\t\tconst it = data.find((x: any) => x.label === value);\r\n\t\t\t\tif (!it) return value;\r\n\t\t\t\ttxt.push(it.label);\r\n\t\t\t\tcellProperties.data = JSON.stringify({\r\n\t\t\t\t\tvalue: it.id,\r\n\t\t\t\t\tlabel: it.label,\r\n\t\t\t\t\tcode: it.id,\r\n\t\t\t\t});\r\n\t\t\t\t// cellProperties.data = JSON.stringify(\r\n\t\t\t\t// \t// sp.map((id) => {\r\n\t\t\t\t// \t\t// const it = data.find((x) => x.code === id.trim());\r\n\t\t\t\t// \t\t// if (!it) return value;\r\n\t\t\t\t// \t\t// txt.push(it.label);\r\n\t\t\t\t// \t\t// setTxt([...txt, it.label]);\r\n\t\t\t\t// \t\treturn { value: parseInt(id), label: it.label };\r\n\t\t\t\t// \t// })\r\n\t\t\t\t// );\r\n\t\t\t}\r\n\t\t\treturn txt.length > 0 ? txt.join(\", \") : value;\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t};\r\n\r\n\treturn formatValue();\r\n}\r\n","import React from \"react\";\r\n\r\nexport function MultiSelectCodesRenderer(props: any) {\r\n\tconst { value, cellProperties, data } = props;\r\n\tconst txt: any[] = [];\r\n\r\n\tconst formatValue = () => {\r\n\t\tif (value) {\r\n\t\t\t//build data\r\n\t\t\tconst sp = value.split(\";\");\r\n\t\t\tif (Array.isArray(sp) && data && Array.isArray(data)) {\r\n\t\t\t\tcellProperties.data = JSON.stringify(\r\n\t\t\t\t\tsp.map((label) => {\r\n\t\t\t\t\t\tconst it = data.find((x) => x.code === label.trim());\r\n\t\t\t\t\t\tif (!it) return value;\r\n\t\t\t\t\t\ttxt.push(it.code || it.value);\r\n\t\t\t\t\t\treturn { value: it.id, label: it.label, code: it.code };\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\treturn txt.length > 0 ? txt.join(\"; \") : value;\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t};\r\n\t// The avaiable renderer-related props are:\r\n\t// - row (row index)\r\n\t// - col (column index)\r\n\t// - prop (column property name)\r\n\t// - TD (the HTML cell element)\r\n\t// - cellProperties (the cellProperties object for the edited cell)\r\n\t// console.log(txt);\r\n\r\n\treturn formatValue();\r\n\t// <>\r\n\t// \t\r\n\t// \t\tRow: {props.row}, column: {props.col},\r\n\t// \t{\" \"}\r\n\t// \tvalue: {props.value}\r\n\t// \r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\n\r\nexport function SingleSelectCodesRenderer(props: any) {\r\n\tconst { value, cellProperties, data } = props;\r\n\tconst txt: any[] = [];\r\n\r\n\tconst formatValue = () => {\r\n\t\tif (value) {\r\n\t\t\t//build data\r\n\t\t\tif (data) {\r\n\t\t\t\tconst it = data.find((x: any) => x.label === value);\r\n\t\t\t\tif (!it) return value;\r\n\t\t\t\ttxt.push(it.value);\r\n\t\t\t\tcellProperties.data = JSON.stringify({\r\n\t\t\t\t\tvalue: it.id,\r\n\t\t\t\t\tlabel: it.label,\r\n\t\t\t\t\tcode: it.id,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn txt.length > 0 ? txt.join(\"; \") : value;\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t};\r\n\r\n\treturn formatValue();\r\n}\r\n","import { useEffect, useRef, useState } from \"react\";\r\nimport \"react-base-table/styles.css\";\r\nimport \"handsontable/dist/handsontable.full.min.css\";\r\nimport { registerAllModules } from \"handsontable/registry\";\r\nimport { HotTable, HotColumn } from \"@handsontable/react\";\r\n\r\nimport MultiSelectEditor from \"./MultiSelectEditor\";\r\nimport { useVsl } from \"../../providers/VslProvider\";\r\nimport {\r\n\tformatEnableOnlyEcosystemForDropdown,\r\n\tformatShowOnlyBiomeForDropdown,\r\n} from \"../../EsvdFunctions\";\r\nimport SingleSelectEditor from \"./SingleSelectEditor\";\r\nimport { SingleSelectRenderer } from \"./SingleSelectRenderer\";\r\nimport { CellChange, ChangeSource } from \"handsontable/common\";\r\nimport { useVslGridHub } from \"../../providers/VslGridHubProvider\";\r\nimport { VslCellEditInfo } from \"../../models/vsl-models/VslCellEditInfo\";\r\nimport { Card } from \"semantic-ui-react\";\r\nimport LoadingOverlay from \"../../shared/LoadingOverlay\";\r\nimport { MultiSelectCodesRenderer } from \"./MultiSelectCodesRenderer\";\r\nimport { SingleSelectCodesRenderer } from \"./SingleSelectCodesRenderer\";\r\nimport {\r\n\tIncludedInEsvdOptions,\r\n\tRepoIncludedOptions,\r\n} from \"../../shared/Literals\";\r\nimport { IVslFilter } from \"../../models/vsl-models/IVslFilter\";\r\nimport { ColumnConditions } from \"handsontable/plugins/filters\";\r\nimport { useModalWithContext } from \"../../layouts/ModalWithContext\";\r\n\r\nregisterAllModules();\r\n\r\nconst VslTable = (props: IVslFilter) => {\r\n\tconst { vslGridHub } = useVslGridHub();\r\n\tconst { modalDispatcher } = useModalWithContext();\r\n\tconst {\r\n\t\tgetVsls,\r\n\t\tsetHotTableInstance,\r\n\t\thotTableInstance,\r\n\t\teditVsl,\r\n\t\tvslData,\r\n\t\tgridLockState,\r\n\t\tselectedRowDispatch,\r\n\t\taddVsl,\r\n\t\tsetvslsCount,\r\n\t\tvslsCount,\r\n\t\tgridEditSyncLock,\r\n\t} = useVsl();\r\n\r\n\tconst { isLoading, dropdownOptions } = props;\r\n\tconst {\r\n\t\tvslFilters,\r\n\t\tbiomeEcosystems,\r\n\t\tbiomeV2EcosystemV2Ecozones,\r\n\t\tecosystemServices,\r\n\t\tcountries,\r\n\t\tprotectionStatuses,\r\n\t} = dropdownOptions || {};\r\n\r\n\tconst [filteredRowsCnt, setFilteredRowsCnt] = useState(null);\r\n\r\n\tconst hotRef = useRef(null);\r\n\r\n\tconst { lock } = gridLockState;\r\n\r\n\tuseEffect(() => {\r\n\t\t(async () => {\r\n\t\t\tawait getVsls(vslFilters);\r\n\t\t})();\r\n\t\tsetFilteredRowsCnt(null);\r\n\t\tif (hotRef.current) {\r\n\t\t\tsetHotTableInstance && setHotTableInstance(hotRef.current.hotInstance);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (vslGridHub) {\r\n\t\t\tif (vslGridHub.state === \"Disconnected\") {\r\n\t\t\t\tvslGridHub.start();\r\n\t\t\t}\r\n\t\t\tvslGridHub.on(\r\n\t\t\t\t\"SyncGridUpdateInfo\",\r\n\t\t\t\tasync (cellEditInfo: VslCellEditInfo) => {\r\n\t\t\t\t\tif (hotTableInstance) {\r\n\t\t\t\t\t\tconst { id, column, dataValue, actionType } = cellEditInfo;\r\n\t\t\t\t\t\tconst search = hotTableInstance.getPlugin(\"search\");\r\n\t\t\t\t\t\tif (actionType === \"edit\") {\r\n\t\t\t\t\t\t\tconst queryResult = search.query(id?.toString());\r\n\t\t\t\t\t\t\tif (queryResult && queryResult.length > 0) {\r\n\t\t\t\t\t\t\t\tconst { row } = queryResult[0];\r\n\r\n\t\t\t\t\t\t\t\thotTableInstance.setSourceDataAtCell(row, column, dataValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (actionType === \"add\") {\r\n\t\t\t\t\t\t\thotTableInstance.alter(\"insert_row_above\", 0);\r\n\t\t\t\t\t\t\thotTableInstance.setSourceDataAtCell(0, \"id\", id);\r\n\t\t\t\t\t\t\thotTableInstance.setSourceDataAtCell(0, column, dataValue);\r\n\t\t\t\t\t\t\thotTableInstance.render();\r\n\t\t\t\t\t\t\tsetvslsCount(vslsCount ? vslsCount + 1 : 1);\r\n\t\t\t\t\t\t} else if (actionType === \"delete\") {\r\n\t\t\t\t\t\t\tconst queryResult = search.query(id?.toString());\r\n\t\t\t\t\t\t\tif (queryResult && queryResult.length > 0) {\r\n\t\t\t\t\t\t\t\tconst { row } = queryResult[0];\r\n\t\t\t\t\t\t\t\thotTableInstance.alter(\"remove_row\", row);\r\n\t\t\t\t\t\t\t\thotTableInstance.render();\r\n\t\t\t\t\t\t\t\tsetvslsCount(vslsCount ? vslsCount - 1 : 0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\tvslGridHub.on(\"CellIsReadonly\", (cellEditInfo: VslCellEditInfo) => {\r\n\t\t\t\tconst { row, column, locked } = cellEditInfo;\r\n\t\t\t\tif (hotTableInstance) {\r\n\t\t\t\t\thotTableInstance.setCellMeta(row, column, \"readOnly\", locked);\r\n\t\t\t\t\thotTableInstance.render();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}, [vslGridHub]);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tValuation studies total:{\" \"}\r\n\t\t\t\t\t\t{`${vslsCount ? vslsCount : \"\"}`}\r\n\t\t\t\t\t\r\n\t\t\t\t\t{filteredRowsCnt ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tIn column filtering:\r\n\t\t\t\t\t\t\t{`${filteredRowsCnt ? filteredRowsCnt : null}`}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : null}\r\n\t\t\t\t\r\n\t\t\t\t 3;\r\n\t\t\t\t\t// \t\t\t},\r\n\t\t\t\t\t// \t\t},\r\n\t\t\t\t\t// \t\tfilter_action_bar: {\r\n\t\t\t\t\t// \t\t\t// hide the 'OK' and 'Cancel' buttons from all columns but the first one\r\n\t\t\t\t\t// \t\t\thidden() {\r\n\t\t\t\t\t// \t\t\t\treturn hotTableInstance.getSelectedRangeLast().to.col > 3;\r\n\t\t\t\t\t// \t\t\t},\r\n\t\t\t\t\t// \t\t},\r\n\t\t\t\t\t// \t\tclear_column: {\r\n\t\t\t\t\t// \t\t\t// hide the 'Clear column' menu item from the first column\r\n\t\t\t\t\t// \t\t\thidden() {\r\n\t\t\t\t\t// \t\t\t\treturn hotTableInstance.getSelectedRangeLast().to.col < 1;\r\n\t\t\t\t\t// \t\t\t},\r\n\t\t\t\t\t// \t\t},\r\n\t\t\t\t\t// \t},\r\n\t\t\t\t\t// }}\r\n\t\t\t\t\t// dropdownMenu={[\r\n\t\t\t\t\t// \t// \"filter_by_condition\",\r\n\t\t\t\t\t// \t\"filter_by_value\",\r\n\t\t\t\t\t// \t\"filter_action_bar\",\r\n\t\t\t\t\t// ]}\r\n\t\t\t\t\t// dropdownMenu={{\r\n\t\t\t\t\t// \titems: {\r\n\t\t\t\t\t// \t\tmake_read_only: {},\r\n\t\t\t\t\t// \t\talignment: {},\r\n\t\t\t\t\t// \t\t\"---------\": {},\r\n\t\t\t\t\t// \t\tundo: {},\r\n\t\t\t\t\t// \t\tredo: {},\r\n\t\t\t\t\t// \t\tfilter_by_value: {\r\n\t\t\t\t\t// \t\t\t// hide the 'Filter by value' list from all columns but the first one\r\n\t\t\t\t\t// \t\t\thidden() {\r\n\t\t\t\t\t// \t\t\t\t// return hotTableInstance.getSelectedRangeLast().to.col > 0;\r\n\t\t\t\t\t// \t\t\t},\r\n\t\t\t\t\t// \t\t},\r\n\t\t\t\t\t// \t\tfilter_action_bar: {\r\n\t\t\t\t\t// \t\t\t// hide the 'OK' and 'Cancel' buttons from all columns but the first one\r\n\t\t\t\t\t// \t\t\thidden() {\r\n\t\t\t\t\t// \t\t\t\t// return hotTableInstance.getSelectedRangeLast().to.col > 0;\r\n\t\t\t\t\t// \t\t\t},\r\n\t\t\t\t\t// \t\t},\r\n\t\t\t\t\t// \t\tclear_column: {\r\n\t\t\t\t\t// \t\t\t// hide the 'Clear column' menu item from the first column\r\n\t\t\t\t\t// \t\t\thidden() {\r\n\t\t\t\t\t// \t\t\t\t// return hotTableInstance.getSelectedRangeLast().to.col < 1;\r\n\t\t\t\t\t// \t\t\t},\r\n\t\t\t\t\t// \t\t},\r\n\t\t\t\t\t// \t},\r\n\t\t\t\t\t// }}\r\n\t\t\t\t\tlicenseKey=\"non-commercial-and-evaluation\"\r\n\t\t\t\t\thiddenColumns={{\r\n\t\t\t\t\t\t// specify columns hidden by default\r\n\t\t\t\t\t\tcolumns: [0],\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tafterChange={async (\r\n\t\t\t\t\t\tchanges: CellChange[] | null,\r\n\t\t\t\t\t\tsource: ChangeSource\r\n\t\t\t\t\t) => {\r\n\t\t\t\t\t\tif (source !== \"loadData\") {\r\n\t\t\t\t\t\t\t// return; //don't save this change\r\n\r\n\t\t\t\t\t\t\tif (changes) {\r\n\t\t\t\t\t\t\t\tconst [row, column, prevValue, nextValue] = changes[0];\r\n\t\t\t\t\t\t\t\t//Note: the vitual row index that's returned for a filtered or sorted column is different from the physical row index.\r\n\t\t\t\t\t\t\t\t//Therefore, convert the vitual row index to its physical index for proper mapping\r\n\t\t\t\t\t\t\t\tlet physicalRow = hotTableInstance.toPhysicalRow(row);\r\n\t\t\t\t\t\t\t\tif (hotTableInstance && prevValue !== nextValue) {\r\n\t\t\t\t\t\t\t\t\t//retrieve the entire row as JSON or as source data format\r\n\t\t\t\t\t\t\t\t\tconst rowData =\r\n\t\t\t\t\t\t\t\t\t\thotTableInstance.getSourceDataAtRow(physicalRow);\r\n\t\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\t\tlet id = rowData.id;\r\n\t\t\t\t\t\t\t\t\t\tif (id) {\r\n\t\t\t\t\t\t\t\t\t\t\tawait editVsl(rowData);\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tid = await addVsl(rowData);\r\n\t\t\t\t\t\t\t\t\t\t\tsetvslsCount(vslsCount ? vslsCount + 1 : 1);\r\n\t\t\t\t\t\t\t\t\t\t\tif (id) {\r\n\t\t\t\t\t\t\t\t\t\t\t\thotTableInstance.setSourceDataAtCell(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tphysicalRow,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tconst col = hotTableInstance.colToProp(column);\r\n\t\t\t\t\t\t\t\t\t\tlet cellEditInfo: VslCellEditInfo = {\r\n\t\t\t\t\t\t\t\t\t\t\tid: id,\r\n\t\t\t\t\t\t\t\t\t\t\trow: physicalRow,\r\n\t\t\t\t\t\t\t\t\t\t\tcolumn: col,\r\n\t\t\t\t\t\t\t\t\t\t\tdataValue: nextValue,\r\n\t\t\t\t\t\t\t\t\t\t\tactionType: rowData.id ? \"edit\" : \"add\",\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\t\t\tvslGridHub &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvslGridHub.invoke(\"VslGridEditInfo\", cellEditInfo);\r\n\t\t\t\t\t\t\t\t\t\t} catch (error) {}\r\n\t\t\t\t\t\t\t\t\t} catch (error: any) {\r\n\t\t\t\t\t\t\t\t\t\thotTableInstance.setSourceDataAtCell(\r\n\t\t\t\t\t\t\t\t\t\t\tphysicalRow,\r\n\t\t\t\t\t\t\t\t\t\t\tcolumn,\r\n\t\t\t\t\t\t\t\t\t\t\tprevValue\r\n\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t// alert(error);\r\n\t\t\t\t\t\t\t\t\t\t// setModalMessage(error || \"\");\r\n\t\t\t\t\t\t\t\t\t\tmodalDispatcher({\r\n\t\t\t\t\t\t\t\t\t\t\topen: true,\r\n\t\t\t\t\t\t\t\t\t\t\tsize: \"tiny\",\r\n\t\t\t\t\t\t\t\t\t\t\tdisplayType: \"info\",\r\n\t\t\t\t\t\t\t\t\t\t\toptions: {\r\n\t\t\t\t\t\t\t\t\t\t\t\ttitle: \"Something went wrong...\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tbody: error,\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t// setOpened(true);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tafterSelection={(row, column) => {\r\n\t\t\t\t\t\t//get details of selected row\r\n\t\t\t\t\t\t//Note: the vitual row index that's returned for a filtered or sorted column is different from the physical row index.\r\n\t\t\t\t\t\t//Therefore, convert the vitual row index to its physical index for proper mapping\r\n\t\t\t\t\t\tlet physicalRow = hotTableInstance.toPhysicalRow(row);\r\n\t\t\t\t\t\tconst rowData = hotTableInstance.getSourceDataAtRow(physicalRow);\r\n\t\t\t\t\t\tif (rowData)\r\n\t\t\t\t\t\t\tselectedRowDispatch &&\r\n\t\t\t\t\t\t\t\tselectedRowDispatch({\r\n\t\t\t\t\t\t\t\t\ttype: \"selected\",\r\n\t\t\t\t\t\t\t\t\trowInfo: { index: physicalRow, id: rowData.id },\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tafterFilter={(conditionsStack: ColumnConditions[]) => {\r\n\t\t\t\t\t\t//if length of conditionsStack == 0, then no filter applied\r\n\t\t\t\t\t\tif (conditionsStack.length > 0)\r\n\t\t\t\t\t\t\tsetFilteredRowsCnt(hotTableInstance.countRows());\r\n\t\t\t\t\t\telse setFilteredRowsCnt(null);\r\n\t\t\t\t\t\t// console.log(hotTableInstance.countRows());\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{/* */}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default VslTable;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Card, Item } from \"semantic-ui-react\";\r\n\r\nimport { useVslGridHub } from \"../../providers/VslGridHubProvider\";\r\n\r\nconst VslOnlineAdmins = () => {\r\n\tconst { vslGridHub } = useVslGridHub();\r\n\r\n\tconst [onlineAdminsOnEditCount, setOnlineAdminsOnEditCount] = useState<\r\n\t\tnumber | null\r\n\t>(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (vslGridHub) {\r\n\t\t\tif (vslGridHub.state === \"Disconnected\") {\r\n\t\t\t\tvslGridHub.start();\r\n\t\t\t}\r\n\t\t\tvslGridHub.on(\"OnlineAdminsOnEditCount\", (adminCount: number | null) => {\r\n\t\t\t\tsetOnlineAdminsOnEditCount(adminCount);\r\n\t\t\t});\r\n\t\t}\r\n\t}, [vslGridHub]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (vslGridHub) {\r\n\t\t\tif (vslGridHub.state === \"Disconnected\") {\r\n\t\t\t\tvslGridHub.start();\r\n\t\t\t}\r\n\t\t\tvslGridHub\r\n\t\t\t\t.invoke(\"OnlineAdminsOnEditCount\")\r\n\t\t\t\t.then((cnt) => {\r\n\t\t\t\t\tsetOnlineAdminsOnEditCount(cnt);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

{`Number of VSL Admins on-line: ${\r\n\t\t\t\t\t\t\t\t\tonlineAdminsOnEditCount && onlineAdminsOnEditCount > 0\r\n\t\t\t\t\t\t\t\t\t\t? onlineAdminsOnEditCount\r\n\t\t\t\t\t\t\t\t\t\t: \"\"\r\n\t\t\t\t\t\t\t\t}`}

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default VslOnlineAdmins;\r\n","import { useEffect, useState } from \"react\";\r\nimport { Grid, Container } from \"semantic-ui-react\";\r\nimport VslActionsPanel from \"./VslActionsPanel\";\r\nimport Can from \"../../accessControls/Can\";\r\nimport { actions, resources } from \"../../shared/Literals\";\r\nimport { resetEsvds } from \"../../actions/esvdActions\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\nimport VslFilterPanel from \"./VslFilterPanel\";\r\nimport { VslProvider } from \"../../providers/VslProvider\";\r\nimport { ListsProvider, useLists } from \"../../providers/ListsProvider\";\r\nimport { VslGridHubProvider } from \"../../providers/VslGridHubProvider\";\r\nimport {\r\n\tEsvdQueryParams,\r\n\tdefaultEsvdParams,\r\n} from \"../../models/EsvdQueryFilters\";\r\nimport VslTable from \"./VslTable\";\r\nimport VslOnlineAdmins from \"./VslOnlineAdmins\";\r\nimport { ModalWithContextProvider } from \"../../layouts/ModalWithContext\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst VslDatabaseHome = () => {\r\n\tconst { loadLists } = useLists();\r\n\tconst [vslFilters, setVslFilters] = useState({\r\n\t\t...defaultEsvdParams,\r\n\t});\r\n\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n\tconst [dropdownOptions, setDropdownOptions] = useState(null);\r\n\r\n\tconst ItemsLoading = (isLoad: boolean) => {\r\n\t\tsetIsLoading(isLoad);\r\n\t};\r\n\tuseEffect(() => {\r\n\t\t// console.log(vslFilters);\r\n\t});\r\n\tuseEffect(() => {\r\n\t\tresetEsvds();\r\n\t\tItemsLoading(true);\r\n\t\tsetVslFilters({\r\n\t\t\t...defaultEsvdParams,\r\n\t\t});\r\n\t\t(async () => {\r\n\t\t\tconst dropdownLists = await loadLists();\r\n\t\t\t//add default entry to protectiostatus list\r\n\t\t\tdropdownLists.protectionStatuses = [\r\n\t\t\t\t{\r\n\t\t\t\t\ttext: \"\",\r\n\t\t\t\t\tid: undefined,\r\n\t\t\t\t\tvalue: null,\r\n\t\t\t\t\tlabel: \"\",\r\n\t\t\t\t\tname: null,\r\n\t\t\t\t\tcode: null,\r\n\t\t\t\t\thideCode: null,\r\n\t\t\t\t\tparentId: null,\r\n\t\t\t\t},\r\n\t\t\t\t...dropdownLists.protectionStatuses,\r\n\t\t\t];\r\n\t\t\tsetDropdownOptions(dropdownLists);\r\n\r\n\t\t\tItemsLoading(false);\r\n\t\t})();\r\n\t}, []);\r\n\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t ItemsLoading(isload)}\r\n\t\t\t\t\t\t\tisLoading={isLoading}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t ItemsLoading(isload)}\r\n\t\t\t\t\t\t\tdropdownOptions={dropdownOptions}\r\n\t\t\t\t\t\t\tisLoading={isLoading}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t ItemsLoading(isload)}\r\n\t\t\t\t\t\t\t\t\t\t\tdropdownOptions={dropdownOptions}\r\n\t\t\t\t\t\t\t\t\t\t\tisLoading={isLoading}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t ItemsLoading(isload)}\r\n\t\t\t\t\t\t\t\t\t\t\tisLoading={isLoading}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t renderContent()}\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nconst VslDatabaseHomeWrapper = (props: any) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default VslDatabaseHomeWrapper;\r\n","import React from \"react\";\r\n\r\ninterface IProps {\r\n\tinvalidEntries: any | any[];\r\n\twithJoin?: boolean;\r\n\tdelimiter?: string;\r\n\tisFatal?: boolean;\r\n}\r\nconst InvalidItems = (props: IProps) => {\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
  • \r\n\t\t\t\t{props.withJoin\r\n\t\t\t\t\t? Object.keys(props.invalidEntries)\r\n\t\t\t\t\t\t\t.map(\r\n\t\t\t\t\t\t\t\t(key: any, i: number) => `${key}: ${props.invalidEntries[key]}`\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t.join(props.delimiter || \"; \")\r\n\t\t\t\t\t: Object.keys(props.invalidEntries).map((key: any, i: number) => (\r\n\t\t\t\t\t\t\t
  • {`ValueID: ${key}: ${props.invalidEntries[key]}`}
  • \r\n\t\t\t\t\t ))}\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default InvalidItems;\r\n","import React, { useEffect } from \"react\";\r\nimport { Card, Header, Statistic } from \"semantic-ui-react\";\r\nimport * as XLSX from \"xlsx\";\r\nimport { VslColumnMapping, VslExcelHeaders } from \"../../shared/Literals\";\r\nimport InvalidItems from \"./InvalidItems\";\r\nimport { useUploadInfo } from \"../../providers/UploadInfoProvider\";\r\n\r\nconst ValidateDataset = (props: any) => {\r\n\tconst { uploading, loading, setLoading, filename, setFileName } =\r\n\t\tuseUploadInfo();\r\n\tconst { file, setData, data, setIsValidData, isValidData } = props;\r\n\r\n\tconst [duplicateStudyIds, setDuplicateStudyIds] = React.useState(null);\r\n\tconst [noEsvdMasterSheet, setNoEsvdMasterSheet] =\r\n\t\tReact.useState(false);\r\n\r\n\tconst [dupBiomesCodes, setDupBiomesCodes] = React.useState(null);\r\n\tconst [dupBiomesV2Codes, setDupBiomesV2Codes] = React.useState(null);\r\n\r\n\tconst [dupTEEBsCodes, setDupTEEBsCodes] = React.useState(null);\r\n\r\n\tconst [dupEcosystemsCodes, setDupEcosystemsCodes] = React.useState(null);\r\n\tconst [dupEcosystemsV2Codes, setDupEcosystemsV2Codes] =\r\n\t\tReact.useState(null);\r\n\tconst [dupEcozonesCodes, setDupEcozonesCodes] = React.useState(null);\r\n\tconst [labelColumnErrors, setLabelColumnErrors] = React.useState<\r\n\t\tany[] | null\r\n\t>(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tresetDups();\r\n\t\tif (file) {\r\n\t\t\tsetLoading(true);\r\n\t\t\tsetFileName(file.name);\r\n\t\t\tprocess(file);\r\n\t\t} else {\r\n\t\t\tsetFileName(\"\");\r\n\t\t}\r\n\t}, [file]);\r\n\r\n\tconst process = (file: any) => {\r\n\t\ttry {\r\n\t\t\tsetLoading(true);\r\n\t\t\t/* Boilerplate to set up FileReader */\r\n\t\t\tconst reader = new FileReader();\r\n\r\n\t\t\tconst rABS = !!reader.readAsBinaryString;\r\n\t\t\treader.onload = (e: any) => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t/* Parse data */\r\n\t\t\t\t\tconst bstr = e.target.result;\r\n\r\n\t\t\t\t\tconst wb = XLSX.read(bstr, {\r\n\t\t\t\t\t\ttype: rABS ? \"binary\" : \"array\",\r\n\t\t\t\t\t\tcellText: false,\r\n\t\t\t\t\t\tcellDates: true,\r\n\t\t\t\t\t});\r\n\t\t\t\t\t// /* Get first worksheet */\r\n\t\t\t\t\t// const wsname = wb.SheetNames[\"ESVD\"];\r\n\t\t\t\t\t// if (wsname !== \"maindata\") {\r\n\t\t\t\t\t// \tthrow new Error(\"First sheet in the excel must be 'maindata.'\");\r\n\t\t\t\t\t// }\r\n\t\t\t\t\tconst esvdSheetName =\r\n\t\t\t\t\t\twb.SheetNames.find((x) => x.startsWith(\"VSL MASTER\")) || undefined;\r\n\t\t\t\t\tif (esvdSheetName === undefined) {\r\n\t\t\t\t\t\tsetIsValidData(false);\r\n\t\t\t\t\t\tsetNoEsvdMasterSheet(true);\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet labelColumnError: any[] | null = null;\r\n\t\t\t\t\tconst excelSheetHeaders: string[] = wb.SheetNames;\r\n\t\t\t\t\tconst codeSheetHeaders: string[] = Object.keys(VslExcelHeaders).map(\r\n\t\t\t\t\t\t(k) => k\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tfor (const ch of codeSheetHeaders) {\r\n\t\t\t\t\t\tconst srch: string | undefined =\r\n\t\t\t\t\t\t\tch === \"vsls\"\r\n\t\t\t\t\t\t\t\t? wb.SheetNames.find((x) => x.startsWith(\"VSL MASTER\"))\r\n\t\t\t\t\t\t\t\t: excelSheetHeaders.find(\r\n\t\t\t\t\t\t\t\t\t\t(x) =>\r\n\t\t\t\t\t\t\t\t\t\t\tVslExcelHeaders[`${ch}`].label.toLowerCase().trim() ===\r\n\t\t\t\t\t\t\t\t\t\t\tx.toLowerCase().trim()\r\n\t\t\t\t\t\t\t\t );\r\n\r\n\t\t\t\t\t\tif (!srch) {\r\n\t\t\t\t\t\t\tif (!ch.startsWith(\"VSL MASTER\")) {\r\n\t\t\t\t\t\t\t\tif (!labelColumnError) {\r\n\t\t\t\t\t\t\t\t\t//initialize labelColumnError\r\n\t\t\t\t\t\t\t\t\tlabelColumnError = [];\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tlabelColumnError.push(\r\n\t\t\t\t\t\t\t\t\t`Sheet with label \"${\r\n\t\t\t\t\t\t\t\t\t\tVslExcelHeaders[`${ch}`].label\r\n\t\t\t\t\t\t\t\t\t}\" is missing from the upload file.`\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t//check the column headers inside the selected sheet if it exists\r\n\t\t\t\t\t\t\tconst errorColumns = checkColumnHeaders(\r\n\t\t\t\t\t\t\t\twb,\r\n\t\t\t\t\t\t\t\t// VslExcelHeaders[`${srch}`].label,\r\n\t\t\t\t\t\t\t\tsrch,\r\n\t\t\t\t\t\t\t\tVslExcelHeaders[`${ch}`].columns\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tif (errorColumns) {\r\n\t\t\t\t\t\t\t\t//initialize labelColumnError\r\n\t\t\t\t\t\t\t\tif (!labelColumnError) {\r\n\t\t\t\t\t\t\t\t\tlabelColumnError = [];\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tlabelColumnError.push(\r\n\t\t\t\t\t\t\t\t\t`Sheet with label ${srch} is missing the following column headings: ${errorColumns.join(\r\n\t\t\t\t\t\t\t\t\t\t\", \"\r\n\t\t\t\t\t\t\t\t\t)}. If they are included, they must be the top row.`\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (labelColumnError) {\r\n\t\t\t\t\t\tsetIsValidData(false);\r\n\t\t\t\t\t\tsetLabelColumnErrors(labelColumnError);\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst mapped = getESVDJson(wb, esvdSheetName.trim());\r\n\r\n\t\t\t\t\t//get stats on data\r\n\t\t\t\t\tconst items: any = {};\r\n\t\t\t\t\tconst duplicateStudyIds: any = {};\r\n\t\t\t\t\t// const invalidCodedDate: any = {};\r\n\t\t\t\t\t// const invalidReviewedDate: any = {};\r\n\t\t\t\t\t// const noStudyId: any = {};\r\n\t\t\t\t\tconst duplicateBiomesCodes: any = {};\r\n\t\t\t\t\tconst duplicateBiomesV2Codes: any = {};\r\n\t\t\t\t\tconst duplicateEcosystemsCodes: any = {};\r\n\t\t\t\t\tconst duplicateEcosystemsV2Codes: any = {};\r\n\t\t\t\t\tconst duplicateEcozonesCodes: any = {};\r\n\t\t\t\t\tconst duplicateTEEBsCodes: any = {};\r\n\t\t\t\t\tlet rowIndex = 2;\r\n\t\t\t\t\tmapped.forEach((x: any, i: number) => {\r\n\t\t\t\t\t\t//excel row index\r\n\t\t\t\t\t\trowIndex = i + 1 + 1; //first 1 caters for header and second 1 caters forzero-based index\r\n\t\t\t\t\t\tx.rowindex = rowIndex;\r\n\t\t\t\t\t\t//check for unique studyids\r\n\t\t\t\t\t\tif (x.studyid) {\r\n\t\t\t\t\t\t\tif (items[`${x.studyid}`]) {\r\n\t\t\t\t\t\t\t\titems[`${x.studyid}`].push(rowIndex);\r\n\t\t\t\t\t\t\t\t//mark value as a duplicate\r\n\t\t\t\t\t\t\t\tduplicateStudyIds[`${x.studyid}`] =\r\n\t\t\t\t\t\t\t\t\t`Studyid: ${x.studyid}, Rows:` + items[`${x.studyid}`];\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\titems[`${x.studyid}`] = [rowIndex];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check for duplicate biome codes in one cell\r\n\t\t\t\t\t\tif (x.biomecode) {\r\n\t\t\t\t\t\t\tconst biomes: string[] = [];\r\n\t\t\t\t\t\t\tconst codeSplit = x.biomecode.toString().split(\";\");\r\n\t\t\t\t\t\t\tcodeSplit.forEach((arr: string) => {\r\n\t\t\t\t\t\t\t\tif (biomes.includes(arr.trim())) {\r\n\t\t\t\t\t\t\t\t\t//means it's duplicate\r\n\t\t\t\t\t\t\t\t\tif (!duplicateBiomesCodes[`${rowIndex}`]) {\r\n\t\t\t\t\t\t\t\t\t\t// \tduplicateBiomesCodes[`${x.valueid}`].push(arr.trim());\r\n\t\t\t\t\t\t\t\t\t\t// } else {\r\n\t\t\t\t\t\t\t\t\t\tduplicateBiomesCodes[`${rowIndex}`] = [arr.trim()];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tbiomes.push(arr.trim());\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t//join after removing duplicates if any\r\n\t\t\t\t\t\t\tx.biomecode = biomes.join(\"; \");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check for duplicate Ecosystem codes in one cell\r\n\t\t\t\t\t\tif (x.ecosystemcode) {\r\n\t\t\t\t\t\t\tconst codes: string[] = [];\r\n\t\t\t\t\t\t\tconst codeSplit = x.ecosystemcode.toString().split(\";\");\r\n\t\t\t\t\t\t\tcodeSplit.forEach((arr: string) => {\r\n\t\t\t\t\t\t\t\tif (codes.includes(arr.trim())) {\r\n\t\t\t\t\t\t\t\t\tif (!duplicateEcosystemsCodes[`${rowIndex}`]) {\r\n\t\t\t\t\t\t\t\t\t\tduplicateEcosystemsCodes[`${rowIndex}`] = [arr.trim()];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tcodes.push(arr.trim());\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t//join after removing duplicates if any\r\n\t\t\t\t\t\t\tx.ecosystemcode = codes.join(\"; \");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check for duplicate biomeV2 codes in one cell\r\n\t\t\t\t\t\tif (x.biomeV2code) {\r\n\t\t\t\t\t\t\tconst biomesV2: string[] = [];\r\n\t\t\t\t\t\t\tconst codeSplit = x.biomeV2code.toString().split(\";\");\r\n\t\t\t\t\t\t\tcodeSplit.forEach((arr: string) => {\r\n\t\t\t\t\t\t\t\tif (biomesV2.includes(arr.trim())) {\r\n\t\t\t\t\t\t\t\t\t//means it's duplicate\r\n\t\t\t\t\t\t\t\t\tif (!duplicateBiomesV2Codes[`${rowIndex}`]) {\r\n\t\t\t\t\t\t\t\t\t\tduplicateBiomesV2Codes[`${rowIndex}`] = [arr.trim()];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tbiomesV2.push(arr.trim());\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t//join after removing duplicates if any\r\n\t\t\t\t\t\t\tx.biomeV2code = biomesV2.join(\"; \");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check for duplicate Ecozone codes in one cell\r\n\t\t\t\t\t\tif (x.ecozonecode) {\r\n\t\t\t\t\t\t\tconst codes: string[] = [];\r\n\t\t\t\t\t\t\tconst codeSplit = x.ecozonecode.toString().split(\";\");\r\n\t\t\t\t\t\t\tcodeSplit.forEach((arr: string) => {\r\n\t\t\t\t\t\t\t\tif (codes.includes(arr.trim())) {\r\n\t\t\t\t\t\t\t\t\tif (!duplicateEcozonesCodes[`${rowIndex}`]) {\r\n\t\t\t\t\t\t\t\t\t\t// \tduplicateEcozonesCodes[`${x.valueid}`].push(arr.trim());\r\n\t\t\t\t\t\t\t\t\t\t// } else {\r\n\t\t\t\t\t\t\t\t\t\tduplicateEcozonesCodes[`${rowIndex}`] = [arr.trim()];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tcodes.push(arr.trim());\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t//join after removing duplicates if any\r\n\t\t\t\t\t\t\tx.ecozonecode = codes.join(\"; \");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check for duplicate Ecosystem codes in one cell\r\n\t\t\t\t\t\tif (x.ecosystemV2code) {\r\n\t\t\t\t\t\t\tconst codes: string[] = [];\r\n\t\t\t\t\t\t\tconst codeSplit = x.ecosystemV2code.toString().split(\";\");\r\n\t\t\t\t\t\t\tcodeSplit.forEach((arr: string) => {\r\n\t\t\t\t\t\t\t\tif (codes.includes(arr.trim())) {\r\n\t\t\t\t\t\t\t\t\tif (!duplicateEcosystemsV2Codes[`${rowIndex}`]) {\r\n\t\t\t\t\t\t\t\t\t\t// \tduplicateEcosystemsCodes[`${x.valueid}`].push(arr.trim());\r\n\t\t\t\t\t\t\t\t\t\t// } else {\r\n\t\t\t\t\t\t\t\t\t\tduplicateEcosystemsV2Codes[`${rowIndex}`] = [arr.trim()];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tcodes.push(arr.trim());\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t//join after removing duplicates if any\r\n\t\t\t\t\t\t\tx.ecosystemV2code = codes.join(\"; \");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//check for duplicate teebs codes in one cell\r\n\t\t\t\t\t\tcheckDuplicateCodes(\r\n\t\t\t\t\t\t\tx,\r\n\t\t\t\t\t\t\t\"EcosystemServiceCode\".toLocaleLowerCase(),\r\n\t\t\t\t\t\t\tduplicateTEEBsCodes\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateStudyIds).length > 0) {\r\n\t\t\t\t\t\tsetDuplicateStudyIds(duplicateStudyIds);\r\n\t\t\t\t\t\tsetIsValidData(false);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDuplicateStudyIds(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// if (Object.keys(noStudyId).length > 0) {\r\n\t\t\t\t\t// \tsetNoStudyIdEntries(noStudyId);\r\n\t\t\t\t\t// \tsetIsValidData(false);\r\n\t\t\t\t\t// } else {\r\n\t\t\t\t\t// \tsetNoStudyIdEntries(null);\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateBiomesCodes).length > 0) {\r\n\t\t\t\t\t\tsetDupBiomesCodes(duplicateBiomesCodes);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDupBiomesCodes(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateEcosystemsCodes).length > 0) {\r\n\t\t\t\t\t\tsetDupEcosystemsCodes(duplicateEcosystemsCodes);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDupEcosystemsCodes(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateBiomesV2Codes).length > 0) {\r\n\t\t\t\t\t\tsetDupBiomesV2Codes(duplicateBiomesV2Codes);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDupBiomesV2Codes(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateEcozonesCodes).length > 0) {\r\n\t\t\t\t\t\tsetDupEcozonesCodes(duplicateEcozonesCodes);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDupEcozonesCodes(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateEcosystemsV2Codes).length > 0) {\r\n\t\t\t\t\t\tsetDupEcosystemsV2Codes(duplicateEcosystemsV2Codes);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDupEcosystemsV2Codes(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Object.keys(duplicateTEEBsCodes).length > 0) {\r\n\t\t\t\t\t\tsetDupTEEBsCodes(duplicateTEEBsCodes);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetDupTEEBsCodes(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst jsonDataset: any = {};\r\n\t\t\t\t\tjsonDataset.vsls = mapped;\r\n\r\n\t\t\t\t\tjsonDataset.biomesecosystems = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tVslExcelHeaders.biomes.label\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tjsonDataset.biomesecozones = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tVslExcelHeaders.biomesv2.label\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tjsonDataset.teebs = getExcelTabJson(wb, VslExcelHeaders.teebs.label);\r\n\t\t\t\t\tjsonDataset.protectionstatus = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tVslExcelHeaders.protectionstatus.label\r\n\t\t\t\t\t);\r\n\t\t\t\t\tjsonDataset.countries = getExcelTabJson(\r\n\t\t\t\t\t\twb,\r\n\t\t\t\t\t\tVslExcelHeaders.countries.label\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\t// ScaleOfStudySites; from Scale_Text column in ESVD\r\n\r\n\t\t\t\t\t/* Update state */\r\n\t\t\t\t\tsetData({\r\n\t\t\t\t\t\tuploaddata: jsonDataset,\r\n\t\t\t\t\t\tesvdCount: mapped.length,\r\n\t\t\t\t\t\tfilename: file.name,\r\n\t\t\t\t\t});\r\n\t\t\t\t} catch (err: any) {\r\n\t\t\t\t\t// setLoading(false);\r\n\t\t\t\t}\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t};\r\n\t\t\t// const file = this.state.file;\r\n\t\t\tif (rABS) reader.readAsBinaryString(file);\r\n\t\t\telse reader.readAsArrayBuffer(file);\r\n\t\t} catch (err: any) {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getESVDJson(wb: XLSX.WorkBook, sheetName: string) {\r\n\t\tconst ws = wb.Sheets[sheetName];\r\n\t\t/* Convert array of arrays */\r\n\t\t//https://docs.sheetjs.com/docs/api/utilities/\r\n\t\tconst dat = XLSX.utils.sheet_to_json(ws, {\r\n\t\t\t// header: 1,\r\n\t\t\tblankrows: false,\r\n\t\t\traw: true,\r\n\t\t\tdefval: \"\",\r\n\t\t\tdateNF: 'd\"/\"m\"/\"yyyy',\r\n\t\t\t// range: 1000,\r\n\t\t});\r\n\r\n\t\t// // remove rows without valueIds\r\n\t\t// const filtered = dat.filter((x: any) => x.StudyID);\r\n\r\n\t\tconst mapped = dat.map((row: any, i) => {\r\n\t\t\tconst item: any = {};\r\n\t\t\tObject.entries(VslColumnMapping).map(([key, value]) => {\r\n\t\t\t\titem[`${value.toLocaleLowerCase()}`] = row[key];\r\n\t\t\t});\r\n\t\t\treturn item;\r\n\t\t});\r\n\t\treturn mapped;\r\n\t}\r\n\r\n\tfunction getExcelTabJson(wb: XLSX.WorkBook, sheetName: string) {\r\n\t\tconst ws = wb.Sheets[sheetName];\r\n\t\t/* Convert array of arrays */\r\n\t\t//https://docs.sheetjs.com/docs/api/utilities/\r\n\t\tconst dat = XLSX.utils.sheet_to_json(ws, {\r\n\t\t\t// header: 1,\r\n\t\t\tblankrows: false,\r\n\t\t\traw: true,\r\n\t\t\tdefval: \"\",\r\n\t\t\tdateNF: 'd\"/\"m\"/\"yyyy',\r\n\t\t\t// range: 1000,\r\n\t\t});\r\n\r\n\t\tconst datt: any = dat.map((d: any, i) => {\r\n\t\t\tconst newObj: any = {};\r\n\t\t\tfor (const key in d) {\r\n\t\t\t\tif (key.startsWith(\"__EMPTY\")) {\r\n\t\t\t\t\tdelete d[key];\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tnewObj[`${key.toLocaleLowerCase()}`] = d[key];\r\n\t\t\t}\r\n\t\t\treturn newObj;\r\n\t\t});\r\n\t\treturn datt;\r\n\t}\r\n\r\n\tfunction checkColumnHeaders(\r\n\t\twb: XLSX.WorkBook,\r\n\t\tsheetName: string,\r\n\t\texpectedHeaders: string[]\r\n\t): string[] | null {\r\n\t\tconst ws = wb.Sheets[sheetName];\r\n\t\t/* Convert array of arrays */\r\n\t\t//https://docs.sheetjs.com/docs/api/utilities/\r\n\t\t//This takes each used column in the sheet and uses the first cell value as object keys\r\n\t\t//So eg if the sheet has Code and Name as the values in the top rowa, they are used as keys for all the remaining rows and\r\n\t\t//all rows apart from the top row are converted to object array ie [{code:\"1...\", Name:\"1...\"}, {code:\"2...\", Name:\"2...\"}...]\r\n\t\tconst dat: any[] = XLSX.utils.sheet_to_json(ws, {\r\n\t\t\t// header: 1,\r\n\t\t\tblankrows: false,\r\n\t\t\traw: true,\r\n\t\t\tdefval: \"\",\r\n\t\t\tdateNF: 'd\"/\"m\"/\"yyyy',\r\n\t\t});\r\n\r\n\t\tconst errorColumns: string[] = [];\r\n\t\t//Due the above explanation, since we want to ascertain if the sheet contains the expected headers we have passed in the first row\r\n\t\t//we pick on the first element of the object array (the first element will represent the first row in the sheet)\r\n\t\t//and check if any keys in it matches our expected headers. If so, then it is valid and we return true. Else it's invalid and we return false\r\n\r\n\t\tconst firstObjectKeys: string[] = Object.keys(dat[0]);\r\n\t\tfor (const txt of expectedHeaders) {\r\n\t\t\tif (\r\n\t\t\t\t!firstObjectKeys.find(\r\n\t\t\t\t\t(x) => x.toLowerCase().trim() === txt.toLowerCase().trim()\r\n\t\t\t\t)\r\n\t\t\t) {\r\n\t\t\t\terrorColumns.push(txt);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn errorColumns.length === 0 ? null : errorColumns;\r\n\t}\r\n\r\n\tconst checkDuplicateCodes = (\r\n\t\trowItem: any,\r\n\t\tkeyName: string,\r\n\t\tdupCodesHolder: any\r\n\t) => {\r\n\t\tif (rowItem[keyName]) {\r\n\t\t\tconst codes: string[] = [];\r\n\t\t\tconst codeSplit = rowItem[keyName].toString().split(\";\");\r\n\t\t\tcodeSplit.forEach((arr: string) => {\r\n\t\t\t\tif (codes.includes(arr.trim())) {\r\n\t\t\t\t\tif (!dupCodesHolder[`Row ${rowItem.rowIndex}`]) {\r\n\t\t\t\t\t\t// \tdupCodesHolder[`${rowItem.valueid}`].push(arr.trim());\r\n\t\t\t\t\t\t// } else {\r\n\t\t\t\t\t\tdupCodesHolder[`Row ${rowItem.rowindex}`] = [`code: ${arr.trim()}`];\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcodes.push(arr.trim());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t//join after removing duplicates if any\r\n\t\t\trowItem[keyName] = codes.join(\"; \");\r\n\t\t}\r\n\t};\r\n\r\n\tconst resetDups = () => {\r\n\t\tsetDupEcosystemsCodes(null);\r\n\t\tsetDupEcozonesCodes(null);\r\n\t\tsetDuplicateStudyIds(null);\r\n\t\tsetDupBiomesCodes(null);\r\n\t\tsetDupBiomesV2Codes(null);\r\n\t\tsetDupTEEBsCodes(null);\r\n\t\t// setNoStudyIdEntries(null);\r\n\t\tsetData({});\r\n\t\tsetNoEsvdMasterSheet(false);\r\n\t\tsetIsValidData(true);\r\n\t\tsetLabelColumnErrors(null);\r\n\t};\r\n\r\n\tconst renderDataReport = () => {\r\n\t\tconst { uploaddata } = data;\r\n\t\tconst { vsls } = uploaddata || {};\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{((!loading && file) || !uploading) && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tFile details{\" \"}\r\n\t\t\t\t\t\t\t{!isValidData && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t*Please fix the red higlights below before you can proceed.\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{!uploading && (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{(vsls && `Uploaded file name: ${filename}`) ||\r\n\t\t\t\t\t\t\t\t(filename &&\r\n\t\t\t\t\t\t\t\t\tvsls === undefined &&\r\n\t\t\t\t\t\t\t\t\t!loading &&\r\n\t\t\t\t\t\t\t\t\t\"Invalid data format. Please verify.\")}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{vsls && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{vsls.length} valuations\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t\t{noEsvdMasterSheet && (\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t)}\r\n\t\t\t\t{labelColumnErrors && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{labelColumnErrors &&\r\n\t\t\t\t\t\t\t\t\"Incorrect sheet names and/or column labels.\"}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{labelColumnErrors && (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{labelColumnErrors.map((key: any, i: number) => (\r\n\t\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{duplicateStudyIds && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{duplicateStudyIds &&\r\n\t\t\t\t\t\t\t\t`${\r\n\t\t\t\t\t\t\t\t\tObject.keys(duplicateStudyIds).length\r\n\t\t\t\t\t\t\t\t} duplicate valuation studies found.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{duplicateStudyIds && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{/* {invalidCodedDateEntries && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{invalidCodedDateEntries &&\r\n\t\t\t\t\t\t\t\t`${\r\n\t\t\t\t\t\t\t\t\tObject.keys(invalidCodedDateEntries).length\r\n\t\t\t\t\t\t\t\t} entries with invalid\r\n\t\t\t\t\t\tcoded date found.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{invalidCodedDateEntries && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{invalidReviewdDateEntries && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{invalidReviewdDateEntries &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(invalidReviewdDateEntries).length} entries with\r\n\t\t\t\t\t\tinvalid reviewed date found.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{invalidReviewdDateEntries && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)} */}\r\n\t\t\t\t{/* {noStudyIdEntries && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{noStudyIdEntries &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(noStudyIdEntries).length} entries with\r\n\t\t\t\t\t\tno study Ids.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{noStudyIdEntries && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)} */}\r\n\r\n\t\t\t\t{dupBiomesCodes && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{dupBiomesCodes &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(dupBiomesCodes).length} entries with\r\n\t\t\t\t\t\tduplicate biome codes.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{dupBiomesCodes && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{dupEcosystemsCodes && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{dupEcosystemsCodes &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(dupEcosystemsCodes).length} entries with\r\n\t\t\t\t\t\tduplicate Ecosystems codes.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{dupEcosystemsCodes && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{dupBiomesV2Codes && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{dupBiomesV2Codes &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(dupBiomesV2Codes).length} entries with\r\n\t\t\t\t\t\tduplicate biomeV2 codes.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{dupBiomesV2Codes && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{dupEcozonesCodes && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{dupEcozonesCodes &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(dupEcozonesCodes).length} entries with\r\n\t\t\t\t\t\tduplicate Ecozones codes.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{dupEcozonesCodes && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{dupEcosystemsV2Codes && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{dupEcosystemsV2Codes &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(dupEcosystemsV2Codes).length} entries with\r\n\t\t\t\t\t\tduplicate EcosystemsV2 codes.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{dupEcosystemsV2Codes && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{dupTEEBsCodes && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{dupTEEBsCodes &&\r\n\t\t\t\t\t\t\t\t`${Object.keys(dupTEEBsCodes).length} entries with\r\n\t\t\t\t\t\tduplicate TEEB codes.`}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{dupTEEBsCodes && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t);\r\n\t};\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{/* {renderFormik()} */}\r\n\t\t\t{renderDataReport()}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ValidateDataset;\r\n","import React, { useEffect } from \"react\";\r\nimport {\r\n\tButton,\r\n\tCard,\r\n\tDimmer,\r\n\tForm,\r\n\tGrid,\r\n\tLabel,\r\n\tLoader,\r\n\tProgress,\r\n} from \"semantic-ui-react\";\r\nimport { ErrorMessage, Formik } from \"formik\";\r\nimport moment from \"moment\";\r\nimport agent from \"../../api/agent\";\r\nimport EsvdDropZoneField from \"../../shared/DropZone\";\r\nimport ValidateDataset from \"./ValidateDataset\";\r\nimport { useUploadInfo } from \"../../providers/UploadInfoProvider\";\r\nimport { EsvdDataStatistics } from \"../../models/EsvdDataStatistics\";\r\nimport { useVslGridHub } from \"../../providers/VslGridHubProvider\";\r\n\r\nconst VslUploadDataset = () => {\r\n\tconst { uploading, setUploading, loading, setLoading } = useUploadInfo();\r\n\tconst { vslGridHub } = useVslGridHub();\r\n\tconst [data, setData] = React.useState({});\r\n\t//this indicates the error is fatal and must be fixed before proceeding with upload\r\n\tconst [isValidData, setIsValidData] = React.useState(true);\r\n\r\n\tconst [esvdCurrentUploadInfo, setEsvdCurrentUploadInfo] =\r\n\t\tReact.useState(null);\r\n\r\n\tconst [esvdLastUploadInfo, setEsvdLastUploadInfo] =\r\n\t\tReact.useState(null);\r\n\r\n\tconst [progress, setProgress] = React.useState(0);\r\n\tconst [file, setFile] = React.useState(null);\r\n\r\n\tuseEffect(() => {\r\n\t\t//get info about the last upload\r\n\t\t(async () => {\r\n\t\t\tvar uploadStats: EsvdDataStatistics =\r\n\t\t\t\tawait agent.VslUploadLists.GetLastUploadStatistics();\r\n\t\t\tsetEsvdLastUploadInfo(uploadStats);\r\n\t\t})();\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (vslGridHub) {\r\n\t\t\tif (vslGridHub.state === \"Disconnected\") {\r\n\t\t\t\tvslGridHub.start();\r\n\t\t\t}\r\n\t\t\tvslGridHub.on(\"VslUploadProgress\", (uploadInfo: EsvdDataStatistics) => {\r\n\t\t\t\tsetEsvdCurrentUploadInfo(uploadInfo);\r\n\t\t\t\tsetUploading(uploadInfo.uploading);\r\n\t\t\t\tif (uploadInfo.esvdTotalCount) {\r\n\t\t\t\t\tconst pro = Math.floor(\r\n\t\t\t\t\t\t((((uploadInfo.esvdInserted || 0) +\r\n\t\t\t\t\t\t\t(uploadInfo?.esvdUpdated || 0)) /\r\n\t\t\t\t\t\t\t(parseInt(uploadInfo?.esvdTotalCount) || 1)) *\r\n\t\t\t\t\t\t\t100) |\r\n\t\t\t\t\t\t\t1\r\n\t\t\t\t\t);\r\n\t\t\t\t\tsetProgress(pro);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// vslGridHub.on(\"VslUploadStatus\", (status: any) => {\r\n\t\t\t// \tsetUploading(false);\r\n\t\t\t// });\r\n\t\t}\r\n\t}, [vslGridHub]);\r\n\r\n\tconst resetDups = () => {\r\n\t\tsetData({});\r\n\t\tsetProgress(0);\r\n\t\tsetEsvdCurrentUploadInfo(null);\r\n\t};\r\n\r\n\tconst handleFile = (fil: any /*:File*/) => {\r\n\t\tsetLoading(true);\r\n\t\tsetFile(fil);\r\n\t};\r\n\r\n\tconst onDrop = (evt: any) => {\r\n\t\tsetLoading(true);\r\n\t\tevt.stopPropagation();\r\n\t\tevt.preventDefault();\r\n\t\tconst files = evt.dataTransfer.files;\r\n\t\tif (files && files[0]) {\r\n\t\t\thandleFile(files[0]);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleFormSubmit = async (values: any, setErrors: Function) => {\r\n\t\tsetUploading(true);\r\n\t\tagent.VslUploadLists.uploadJson({\r\n\t\t\tjsonDataset: JSON.stringify(data.uploaddata),\r\n\t\t\tfilename: data.filename,\r\n\t\t\tesvdCount: data.esvdCount,\r\n\t\t})\r\n\t\t\t.then((res) => {\r\n\t\t\t\tsetFile(null);\r\n\t\t\t\t// refreshStats();\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tsetFile(file);\r\n\t\t\t\t// setLoading(false);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetUploading(false);\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t});\r\n\t\tsetErrors(null);\r\n\t};\r\n\r\n\tconst renderFormik = () => {\r\n\t\t// const { uploaddata } = data;\r\n\t\t// const { esvds } = uploaddata || {};\r\n\t\treturn (\r\n\t\t\t {\r\n\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t}}>\r\n\t\t\t\t{({ handleSubmit, isValid, isSubmitting, dirty, errors, touched }) => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t

Current upload stats

\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t{esvdCurrentUploadInfo?.uploadedEsvdCount ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t) : null}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t{esvdCurrentUploadInfo?.uploadedSuccessfully ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfalse && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{`Error message: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(esvdCurrentUploadInfo?.uploadFailed &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"There are errors. Click on 'Copy error' and paste for details\") ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{esvdCurrentUploadInfo?.uploadFailed && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigator.clipboard.writeText(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tesvdCurrentUploadInfo?.uploadFailed || \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"reset\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: \"2rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"12rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tCopy error\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t{}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tLast upload stats.\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{`Total valuations: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tesvdLastUploadInfo?.esvdTotalCount || 0\r\n\t\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t{esvdLastUploadInfo?.uploadedSuccessfully === false && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{`Error message: ${\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(esvdLastUploadInfo?.uploadFailed &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"There are errors. Click on 'Copy error' and paste for details\") ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{esvdLastUploadInfo?.uploadFailed && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigator.clipboard.writeText(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tesvdLastUploadInfo?.uploadFailed || \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"reset\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: \"2rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"12rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tCopy error\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t// <>\r\n\t\t\t\t\t\t\t\t\t\t\t\t// \t\r\n\t\t\t\t\t\t\t\t\t\t\t\t// \t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t// \r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{!uploading && (\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tresetDups();\r\n\t\t\t\t\t\t\t\t\t\t\thandleFile(d[0]);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tvalue={[]}\r\n\t\t\t\t\t\t\t\t\t\taccept=\".xlsx\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{esvdLastUploadInfo?.uploadFailed && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t{!uploading && file && !loading && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tUpload Dataset\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{renderFormik()}\r\n\t\t\t{(!uploading || !loading) && (\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default VslUploadDataset;\r\n","import React from \"react\";\r\nimport { Grid, Container } from \"semantic-ui-react\";\r\nimport { actions, resources } from \"../../shared/Literals\";\r\n\r\nimport Can from \"../../accessControls/Can\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\nimport VslUploadDataset from \"./VslUploadDataset\";\r\nimport { VslGridHubProvider } from \"../../providers/VslGridHubProvider\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst VslUploadDatasetBoard = (props: any) => {\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\treturn (\r\n\t\t renderContent()}\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default VslUploadDatasetBoard;\r\n","import { useField } from \"formik\";\r\n// import { Fragment } from \"react\";\r\nimport {\r\n\tForm,\r\n\tInput,\r\n\t// Icon,\r\n\t// Input,\r\n\tLabel,\r\n\tSemanticICONS,\r\n\t// TextArea,\r\n} from \"semantic-ui-react\";\r\n\r\ninterface Props {\r\n\tname: string;\r\n\tplaceholder?: string;\r\n\ticon?: SemanticICONS;\r\n\tlabel?: string;\r\n\trightIcon?: any;\r\n\tfluid?: boolean;\r\n\ttype?: string;\r\n\tvalue?: string;\r\n\tclassName?: string;\r\n\tminHeight?: number;\r\n\treadonly?: boolean;\r\n}\r\n\r\nconst EsvdTextArea = (props: Props) => {\r\n\tconst [field, meta] = useField(props.name);\r\n\t// const size = \"mini\";\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{meta.touched && meta.error ? (\r\n\t\t\t\t\r\n\t\t\t\t\t{meta.error}\r\n\t\t\t\t\r\n\t\t\t) : null}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default EsvdTextArea;\r\n","import { ErrorMessage, Formik } from \"formik\";\r\nimport React, { Fragment, useState } from \"react\";\r\nimport agent from \"../../api/agent\";\r\nimport { Form, Label, Card, Grid } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\nimport { initSuggestStudy, StudySuggestionProps } from \"../../shared/Literals\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport { SuggestStudy } from \"../../models/SuggestStudy\";\r\nimport EsvdInput from \"../../shared/Input\";\r\nimport EsvdTextArea from \"../../shared/InputTextArea\";\r\nimport EsvdDropZoneField from \"../../shared/DropZone\";\r\nimport { readAllFiles } from \"../../EsvdFunctions\";\r\nimport { useModalWithContext } from \"../../layouts/ModalWithContext\";\r\n\r\ninterface IProps {\r\n\tresetSuggestStudy: Function;\r\n\tonStudyUpdated: Function;\r\n\tsuggestedStudy: SuggestStudy | null;\r\n}\r\n\r\nconst validationSchema: any = Yup.object({\r\n\t[`${StudySuggestionProps.title.name}`]: Yup.string()\r\n\t\t.trim()\r\n\t\t.required(`${StudySuggestionProps.title.label} is required`),\r\n\t[`${StudySuggestionProps.description.name}`]: Yup.string()\r\n\t\t.trim()\r\n\t\t.required(`Study Description is required`),\r\n\t[`${StudySuggestionProps.studyType.name}`]: Yup.string()\r\n\t\t.trim()\r\n\t\t.required(`Study Type is required`),\r\n\t[`${StudySuggestionProps.attachment.name}`]: Yup.array()\r\n\t\t.min(1, \"Attachment field must have at least 1 item\")\r\n\t\t.required(\"Attachment field must have at least 1 item\"),\r\n});\r\n\r\nconst SuggestEntry = (props: IProps) => {\r\n\tconst { modalDispatcher } = useModalWithContext();\r\n\tconst [isSending, setisSending] = useState(false);\r\n\tconst [isSent, setisSent] = useState(false);\r\n\tconst [attachment, setattachment] = useState([]);\r\n\tconst [suggestedStudy, setsuggestedStudy] = useState(\r\n\t\tinitSuggestStudy\r\n\t);\r\n\r\n\tconst resetStudy = () => {\r\n\t\tprops.resetSuggestStudy(initSuggestStudy);\r\n\r\n\t\tsetsuggestedStudy(initSuggestStudy);\r\n\t\tsetattachment([]);\r\n\t\tsetisSent(false);\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\treturn isSent ? null : (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t

Suggest a Study

\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t{({ values, handleSubmit, errors, setFieldValue }) => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tvalues.attachment = d;\r\n\t\t\t\t\t\t\t\t\t\tsetattachment(d);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tvalue={attachment || []}\r\n\t\t\t\t\t\t\t\t\taccept=\".pdf, .odt, .doc,.docx, .txt \"\r\n\t\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"title\", \"\");\r\n\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"description\", \"\");\r\n\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"studyType\", \"\");\r\n\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"attachment\", []);\r\n\t\t\t\t\t\t\t\t\t\tresetStudy();\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\tClear\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tSubmit\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t);\r\n\t};\r\n\r\n\tconst handleFormSubmit: Function = async (\r\n\t\tvalues: SuggestStudy,\r\n\t\tsetErrors: Function\r\n\t) => {\r\n\t\tvalues.attachment = await readAllFiles(values.attachment || []);\r\n\r\n\t\ttry {\r\n\t\t\tsetisSending(true);\r\n\t\t\tawait agent.SuggestStudies.create(values);\r\n\t\t\tsetisSending(false);\r\n\t\t\tsetisSent(true);\r\n\t\t\tshowModal();\r\n\t\t\tresetStudy();\r\n\t\t} catch (error: any) {\r\n\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t\tsetisSending(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst showModal = () => {\r\n\t\tmodalDispatcher({\r\n\t\t\topen: true,\r\n\t\t\tsize: \"small\",\r\n\t\t\tdisplayType: \"info\",\r\n\t\t\toptions: {\r\n\t\t\t\ttitle: \"Thank You!\",\r\n\t\t\t\tbody: (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tThank you for suggesting a study for inclusion in the ESVD.\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tYour submission will be evaluated by one of the ESVD team\r\n\t\t\t\t\t\t\t\tmembers.\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tThe ESVD team.\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t),\r\n\t\t\t\tbasicModal: true,\r\n\t\t\t},\r\n\t\t});\r\n\t};\r\n\r\n\treturn {renderContent()};\r\n};\r\n\r\nexport default SuggestEntry;\r\n","import { Component } from \"react\";\r\nimport { Card, Item } from \"semantic-ui-react\";\r\nimport { COMPANY_EMAIL } from \"../../shared/Literals\";\r\n\r\nclass SuggestReadMePanel extends Component {\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

Read Me

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tOn this page, you can suggest a study or check our list of valuation\r\n\t\t\t\t\t\tstudies.\r\n\t\t\t\t\t

\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tThe \"Suggest a study\" functionality allows you to propose a study,\r\n\t\t\t\t\t\tPhD thesis, report, journal article, conference paper, or book\r\n\t\t\t\t\t\t(section){\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcontaining the monetary valuation of ecosystem services.\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tYou can check whether the study is already included in our\r\n\t\t\t\t\t\trepository via the \"Valuation Studies List\" functionality. After an\r\n\t\t\t\t\t\tinternal check, your proposed study could be included in the ESVD.\r\n\t\t\t\t\t\tIf you're interested in the status of your suggested study, feel\r\n\t\t\t\t\t\tfree to contact us via{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\temail\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t.\r\n\t\t\t\t\t

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tThe \"Valuation Studies List\" (VSL) functionality shows all our\r\n\t\t\t\t\t\tcollected studies containing monetary values. Note that not all\r\n\t\t\t\t\t\tstudies in the valuation studies list are (yet) in the ESVD. The VSL\r\n\t\t\t\t\t\tincludes bibliographic references and key variables such as biome,\r\n\t\t\t\t\t\tecosystem service, country, and language. Under the \"ESVD Included\"\r\n\t\t\t\t\t\tvariable, you can determine whether the study has been included in\r\n\t\t\t\t\t\tthe ESVD, excluded, or is pending review. You can filter the VSL\r\n\t\t\t\t\t\tusing the search functionality.{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tWe suggest to use the free text filter to check whether your\r\n\t\t\t\t\t\t\tproposed study is already in the valuation study list.\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default SuggestReadMePanel;\r\n","import React from \"react\";\r\n\r\nexport function MultiSelectRenderer(props: any) {\r\n\tconst { value, cellProperties, data } = props;\r\n\tconst txt: any[] = [];\r\n\r\n\tconst formatValue = () => {\r\n\t\tif (value) {\r\n\t\t\t//build data\r\n\t\t\tconst sp = value.split(\";\");\r\n\t\t\tif (Array.isArray(sp) && data && Array.isArray(data)) {\r\n\t\t\t\t// const idd = parseInt(sp[0]);\r\n\t\t\t\t// const idd = sp[0];\r\n\t\t\t\t// if (!idd || typeof idd !== \"string\") {\r\n\t\t\t\t// \treturn value;\r\n\t\t\t\t// }\r\n\t\t\t\tcellProperties.data = JSON.stringify(\r\n\t\t\t\t\tsp.map((label) => {\r\n\t\t\t\t\t\tconst it = data.find((x) => x.label === label.trim());\r\n\t\t\t\t\t\tif (!it) return value;\r\n\t\t\t\t\t\ttxt.push(it.label);\r\n\t\t\t\t\t\treturn { value: it.id, label, code: it.code };\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\treturn txt.length > 0 ? txt.join(\"; \") : value;\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t};\r\n\t// The avaiable renderer-related props are:\r\n\t// - row (row index)\r\n\t// - col (column index)\r\n\t// - prop (column property name)\r\n\t// - TD (the HTML cell element)\r\n\t// - cellProperties (the cellProperties object for the edited cell)\r\n\t// console.log(txt);\r\n\r\n\treturn formatValue();\r\n\t// <>\r\n\t// \t\r\n\t// \t\tRow: {props.row}, column: {props.col},\r\n\t// \t{\" \"}\r\n\t// \tvalue: {props.value}\r\n\t// \r\n}\r\n","import { useEffect, useRef } from \"react\";\r\nimport \"react-base-table/styles.css\";\r\nimport \"handsontable/dist/handsontable.full.min.css\";\r\nimport { registerAllModules } from \"handsontable/registry\";\r\nimport { HotTable, HotColumn } from \"@handsontable/react\";\r\n\r\nimport { useVsl } from \"../../providers/VslProvider\";\r\nimport {\r\n\tformatEnableOnlyEcosystemForDropdown,\r\n\tformatShowOnlyBiomeForDropdown,\r\n} from \"../../EsvdFunctions\";\r\nimport { CellChange, ChangeSource } from \"handsontable/common\";\r\nimport { useVslGridHub } from \"../../providers/VslGridHubProvider\";\r\nimport { VslCellEditInfo } from \"../../models/vsl-models/VslCellEditInfo\";\r\nimport { Card } from \"semantic-ui-react\";\r\nimport LoadingOverlay from \"../../shared/LoadingOverlay\";\r\nimport { MultiSelectRenderer } from \"../vsls/MultiSelectRenderer\";\r\nimport MultiSelectEditor from \"../vsls/MultiSelectEditor\";\r\nimport { SingleSelectRenderer } from \"../vsls/SingleSelectRenderer\";\r\nimport SingleSelectEditor from \"../vsls/SingleSelectEditor\";\r\nimport { IVslFilter } from \"../../models/vsl-models/IVslFilter\";\r\nimport { IncludedInEsvdOptions } from \"../../shared/Literals\";\r\n\r\nregisterAllModules();\r\n\r\nconst VslPublicTable = (props: IVslFilter) => {\r\n\tconst { vslGridHub } = useVslGridHub();\r\n\tconst {\r\n\t\tgetVsls,\r\n\t\tsetHotTableInstance,\r\n\t\thotTableInstance,\r\n\t\teditVsl,\r\n\t\tvslData,\r\n\t\t// gridLockState,\r\n\t\t// selectedRowDispatch,\r\n\t\taddVsl,\r\n\t\tsetvslsCount,\r\n\t\tvslsCount,\r\n\t\t// gridEditSyncLock,\r\n\t\t// getVslsCount,\r\n\t} = useVsl();\r\n\t// const { loadLists } = useLists();\r\n\r\n\t// const { vslFilters, setIsLoading } = props;\r\n\tconst { isLoading, setIsLoading, dropdownOptions } = props;\r\n\tconst {\r\n\t\tvslFilters,\r\n\t\tbiomeEcosystems,\r\n\t\tbiomeV2EcosystemV2Ecozones,\r\n\t\tecosystemServices,\r\n\t\tcountries,\r\n\t\tprotectionStatuses,\r\n\t} = dropdownOptions || {};\r\n\t// // const [isLoading, setIsLoading] = useState(false);\r\n\t// const [biomeEcosystems, setBiomeEcosystems] = useState();\r\n\t// const [biomeV2EcosystemV2Ecozones, setbiomeV2EcosystemV2Ecozones] =\r\n\t// \tuseState();\r\n\t// const [ecosystemServices, setecosystemServices] = useState();\r\n\t// const [countries, setcountries] = useState();\r\n\t// const [protectionStatuses, setprotectionStatuses] = useState();\r\n\r\n\tconst hotRef = useRef(null);\r\n\r\n\t// const { lock } = gridLockState;\r\n\r\n\tuseEffect(() => {\r\n\t\t(async () => {\r\n\t\t\tawait getVsls(vslFilters);\r\n\t\t})();\r\n\r\n\t\t// (async () => {\r\n\t\t// \t// setIsLoading(true);\r\n\t\t// \tconst ls = await loadLists();\r\n\t\t// \tconst {\r\n\t\t// \t\tbiomeEcosystems,\r\n\t\t// \t\tbiomeV2EcosystemV2Ecozones,\r\n\t\t// \t\tecosystemServices,\r\n\t\t// \t\tcountries,\r\n\t\t// \t\tprotectionStatuses,\r\n\t\t// \t} = ls;\r\n\t\t// \t// setBiomeEcosystems(biomeEcosystems);\r\n\t\t// \t// setbiomeV2EcosystemV2Ecozones(biomeV2EcosystemV2Ecozones);\r\n\t\t// \t// setecosystemServices(ecosystemServices);\r\n\t\t// \t// setcountries(countries);\r\n\t\t// \t// setprotectionStatuses(protectionStatuses);\r\n\t\t// \t// setIsLoading(false);\r\n\t\t// })();\r\n\r\n\t\tif (hotRef.current) {\r\n\t\t\tsetHotTableInstance && setHotTableInstance(hotRef.current.hotInstance);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (vslGridHub) {\r\n\t\t\tif (vslGridHub.state === \"Disconnected\") {\r\n\t\t\t\tvslGridHub.start();\r\n\t\t\t}\r\n\t\t\tvslGridHub.on(\r\n\t\t\t\t\"SyncGridUpdateInfo\",\r\n\t\t\t\tasync (cellEditInfo: VslCellEditInfo) => {\r\n\t\t\t\t\tif (hotTableInstance) {\r\n\t\t\t\t\t\tconst { id, column, dataValue, actionType } = cellEditInfo;\r\n\t\t\t\t\t\t// console.log(cellEditInfo);\r\n\t\t\t\t\t\t// get the `Search` plugin's instance\r\n\t\t\t\t\t\tconst search = hotTableInstance.getPlugin(\"search\");\r\n\t\t\t\t\t\t// use the `Search` plugin's `query()` method\r\n\t\t\t\t\t\tif (actionType === \"edit\") {\r\n\t\t\t\t\t\t\tconst queryResult = search.query(id?.toString());\r\n\t\t\t\t\t\t\tif (queryResult && queryResult.length > 0) {\r\n\t\t\t\t\t\t\t\tconst { row } = queryResult[0];\r\n\r\n\t\t\t\t\t\t\t\thotTableInstance.setSourceDataAtCell(row, column, dataValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (actionType === \"add\") {\r\n\t\t\t\t\t\t\thotTableInstance.alter(\"insert_row_above\", 0);\r\n\t\t\t\t\t\t\thotTableInstance.setSourceDataAtCell(0, \"id\", id);\r\n\t\t\t\t\t\t\thotTableInstance.setSourceDataAtCell(0, column, dataValue);\r\n\t\t\t\t\t\t\thotTableInstance.render();\r\n\t\t\t\t\t\t\tsetvslsCount(vslsCount ? vslsCount + 1 : 1);\r\n\t\t\t\t\t\t\t// setIsLoading(true);\r\n\t\t\t\t\t\t\t// getVsls && (await getVsls(vslFilters));\r\n\t\t\t\t\t\t\t// setIsLoading(false);\r\n\t\t\t\t\t\t} else if (actionType === \"delete\") {\r\n\t\t\t\t\t\t\tconst queryResult = search.query(id?.toString());\r\n\t\t\t\t\t\t\tif (queryResult && queryResult.length > 0) {\r\n\t\t\t\t\t\t\t\tconst { row } = queryResult[0];\r\n\t\t\t\t\t\t\t\thotTableInstance.alter(\"remove_row\", row);\r\n\t\t\t\t\t\t\t\thotTableInstance.render();\r\n\t\t\t\t\t\t\t\tsetvslsCount(vslsCount ? vslsCount - 1 : 0);\r\n\t\t\t\t\t\t\t\t// setIsLoading(true);\r\n\t\t\t\t\t\t\t\t// getVsls && (await getVsls(vslFilters));\r\n\t\t\t\t\t\t\t\t// setIsLoading(false);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// setRowIsReadonly({ locked, username });\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\tvslGridHub.on(\"CellIsReadonly\", (cellEditInfo: VslCellEditInfo) => {\r\n\t\t\t\tconst { id, row, column, dataValue, actionType, locked } = cellEditInfo;\r\n\t\t\t\t// console.log(cellEditInfo);\r\n\t\t\t\tif (hotTableInstance) {\r\n\t\t\t\t\thotTableInstance.setCellMeta(row, column, \"readOnly\", locked);\r\n\t\t\t\t\thotTableInstance.render();\r\n\t\t\t\t}\r\n\t\t\t\t// setRowIsReadonly({ locked, username });\r\n\t\t\t});\r\n\t\t\t// })\r\n\t\t\t// .catch((error) => {\r\n\t\t\t// \t// console.log(error);\r\n\t\t\t// });\r\n\t\t}\r\n\t}, [vslGridHub]);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tValuation studies total:{\" \"}\r\n\t\t\t\t\t\t{`${vslsCount ? vslsCount : \"\"}`}\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default VslPublicTable;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Grid, Container } from \"semantic-ui-react\";\r\nimport SuggestEntry from \"./SuggestEntry\";\r\nimport { SuggestStudy } from \"../../models/SuggestStudy\";\r\nimport { actions, resources } from \"../../shared/Literals\";\r\nimport SuggestReadMePanel from \"./SuggestReadMePanel\";\r\nimport Can from \"../../accessControls/Can\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\nimport { useActiveMenu } from \"../../providers/ActiveMenuProvider\";\r\n// import VslPublicFilterPanel from \"../vslsForPublicView/VslPublicFilterPanel\";\r\n// import VslPublicActionsPanel from \"../vslsForPublicView/VslPublicActionsPanel\";\r\nimport { VslProvider, useVsl } from \"../../providers/VslProvider\";\r\nimport { ListsProvider, useLists } from \"../../providers/ListsProvider\";\r\nimport { VslGridHubProvider } from \"../../providers/VslGridHubProvider\";\r\n// import VslPublicFilterPanel from \"../vslsForPublicView/VslPublicFilterPanel\";\r\nimport VslPublicTable from \"../vslsForPublicView/VslPublicTable\";\r\nimport {\r\n\tEsvdQueryParams,\r\n\tdefaultEsvdParams,\r\n} from \"../../models/EsvdQueryFilters\";\r\nimport VslFilterPanel from \"../vsls/VslFilterPanel\";\r\nimport { ModalWithContextProvider } from \"../../layouts/ModalWithContext\";\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst SuggestionBoard = () => {\r\n\tconst { setActiveItem } = useActiveMenu();\r\n\tconst [selectedStudy, setSelectedStudy] = useState(null);\r\n\r\n\tconst { getVsls } = useVsl();\r\n\tconst { loadLists } = useLists();\r\n\r\n\tuseEffect(() => {\r\n\t\t// resetEsvds();\r\n\t\tsetActiveItem(resources.suggestStudy.name);\r\n\t\t(async () => {\r\n\t\t\tawait getVsls(vslFilters);\r\n\t\t})();\r\n\t\tItemsLoading(true);\r\n\t\t(async () => {\r\n\t\t\tsetDropdownOptions(await loadLists());\r\n\t\t\tItemsLoading(false);\r\n\t\t})();\r\n\t}, []);\r\n\tconst [vslFilters, setVslFilters] = useState({\r\n\t\t...defaultEsvdParams,\r\n\t});\r\n\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n\tconst [dropdownOptions, setDropdownOptions] = useState(null);\r\n\r\n\tconst ItemsLoading = (isLoad: boolean) => {\r\n\t\tsetIsLoading(isLoad);\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tsetSelectedStudy(study)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t ItemsLoading(isload)}\r\n\t\t\t\t\t\t\t\tisLoading={isLoading}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t ItemsLoading(isload)}\r\n\t\t\t\t\t\t\t\tdropdownOptions={dropdownOptions}\r\n\t\t\t\t\t\t\t\tisLoading={isLoading}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetSelectedStudy(study)\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t ItemsLoading(isload)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tdropdownOptions={dropdownOptions}\r\n\t\t\t\t\t\t\t\t\t\t\t\tisLoading={isLoading}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t ItemsLoading(isload)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tisLoading={isLoading}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t renderContent()}\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nconst SuggestionBoardWrapper = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\nexport default SuggestionBoardWrapper;\r\n","import React, { useContext } from \"react\";\r\n// import _ from \"lodash\";\r\nimport agent from \"../api/agent\";\r\n\r\ninterface IValue {\r\n\tgetEsvdv2: Function;\r\n\ttoggleStatsReady: Function;\r\n}\r\n\r\nconst Esvdv2Context = React.createContext(null);\r\n\r\n// The ListsProvider is responsible for Lists management\r\nconst Esvdv2Provider = ({ children }: { children: any }) => {\r\n\tconst getEsvdv2 = async () => {\r\n\t\tconst lst = await agent.BiomeV2EcosystemV2Ecozones.list();\r\n\t\treturn lst;\r\n\t};\r\n\r\n\tconst toggleStatsReady = async (id: number, statsReady: boolean) => {\r\n\t\ttry {\r\n\t\t\treturn await agent.BiomeV2EcosystemV2Ecozones.toggleStatsReady(\r\n\t\t\t\tid,\r\n\t\t\t\tstatsReady\r\n\t\t\t);\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useEsvdv2 = () => {\r\n\tconst lists = useContext(Esvdv2Context);\r\n\tif (lists == null) {\r\n\t\tthrow new Error(\"useLists() called outside of a lists hook?\");\r\n\t}\r\n\treturn lists;\r\n};\r\n\r\nexport { Esvdv2Provider, useEsvdv2 };\r\n","import { useState } from \"react\";\r\nimport { FieldArray, Formik, useField } from \"formik\";\r\nimport React, { Fragment, useEffect } from \"react\";\r\nimport {\r\n\tForm,\r\n\tCard,\r\n\tCheckbox,\r\n\tGrid,\r\n\tTable,\r\n\tTableBody,\r\n\tTableRow,\r\n\tTableCell,\r\n\tTableHeader,\r\n\tTableHeaderCell,\r\n} from \"semantic-ui-react\";\r\n\r\nimport { useEsvdv2 } from \"../../providers/Esvdv2Provider\";\r\nimport { formatBiomeForDropdown } from \"../../EsvdFunctions\";\r\nimport { TreeType } from \"../../models/ecosystemService\";\r\n// import { useMedia } from \"../../layouts/MediaLayout\";\r\n\r\nconst ItemContent = (props: any) => {\r\n\tconst [field, meta] = useField(props);\r\n\tconst { label, checked, setChecked } = props;\r\n\r\n\tconst [isCheck, setIsCheck] = useState(checked);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetIsCheck(data.checked);\r\n\t\t\t\t\t\t\t\tsetChecked(data.checked);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tchecked={isCheck}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst ItemHeaderContent = (props: any) => {\r\n\tconst { label } = props;\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{label}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tInclude\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nconst BiomeEcozoneStatReady = () => {\r\n\tconst { getEsvdv2, toggleStatsReady } = useEsvdv2();\r\n\tconst [freeVariables, setFreeVariables] = React.useState<\r\n\t\t{ label: string; options: TreeType[] }[] | null\r\n\t>();\r\n\r\n\tuseEffect(() => {\r\n\t\t(async () => {\r\n\t\t\tconst dat = await getEsvdv2();\r\n\t\t\tconst datTree = formatBiomeForDropdown(dat, false);\r\n\t\t\tsetFreeVariables(datTree);\r\n\t\t})();\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t {\r\n\t\t\t\t\t// handleFormSubmit(values, setErrors);\r\n\t\t\t\t}}>\r\n\t\t\t\t{({ values, handleSubmit, errors }) => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

Summary Stats Admin

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t{freeVariables &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfreeVariables.map((k, i) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/* \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{k.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t */}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{k.options.map((t: any, j: number) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tawait toggleStatsReady(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tt.id,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcheckstate\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchecked={t.statsReady}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default BiomeEcozoneStatReady;\r\n","import React from \"react\";\r\nimport {\r\n\tGrid,\r\n\tContainer,\r\n\tCard,\r\n\t// Segment,\r\n\t// Rail,\r\n\t// Sticky,\r\n\t// Header,\r\n\t// Image,\r\n\t// GridColumn,\r\n} from \"semantic-ui-react\";\r\n// import _ from \"lodash\";\r\nimport { actions, resources } from \"../../shared/Literals\";\r\nimport Can from \"../../accessControls/Can\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout, { MediaProvider } from \"../../layouts/MediaLayout\";\r\nimport BiomeEcozoneStatReady from \"./BiomeEcozoneStatReady\";\r\nimport { Esvdv2Provider } from \"../../providers/Esvdv2Provider\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst StatsReadyReadMe = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t

Read Me

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nconst StatsReadyBoard = () => {\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\treturn (\r\n\t\t renderContent()}\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nconst wrapper = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default wrapper;\r\n","import { ErrorMessage, Formik } from \"formik\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport agent from \"../../api/agent\";\r\nimport { Form, Label, Card } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\nimport { StudySuggestionProps } from \"../../shared/Literals\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\n// import { SuggestStudy } from \"../../models/SuggestStudy\";\r\nimport EsvdInput from \"../../shared/Input\";\r\nimport EsvdTextArea from \"../../shared/InputTextArea\";\r\n\r\nexport interface EmailApiKey {\r\n\tsubject?: string;\r\n\tbody?: string;\r\n\ttoEmail?: string;\r\n\terror?: string;\r\n}\r\n\r\nexport const initEmail: EmailApiKey = {\r\n\tsubject: \"\",\r\n\tbody: \"\",\r\n\ttoEmail: \"\",\r\n\terror: \"\",\r\n};\r\n\r\nconst ApiGenerator = (props: any) => {\r\n\t//declare a ref variable\r\n\t// const isCompleteRef = React.useRef(null);\r\n\r\n\t// isCompleteRef: any | null = null;\r\n\r\n\t// const [hasError, setHasError] = useState(false);\r\n\t// const [showPassword, setShowPassword] = useState(false);\r\n\tconst [isSending] = useState(false);\r\n\tconst [isSent] = useState(false);\r\n\tconst [apiKeys, setApiKeys] = useState(\"\");\r\n\tconst [readyToSend, setReadyToSend] = useState(false);\r\n\r\n\t// useEffect(() => {\r\n\t// \t(async () => {\r\n\t// \t\tconst api = await agent.Apikey.getApiKey();\r\n\t// \t\tsetApiKeys(api);\r\n\t// \t})();\r\n\t// }, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (apiKeys) {\r\n\t\t\tsetReadyToSend(true);\r\n\t\t} else {\r\n\t\t\tsetReadyToSend(false);\r\n\t\t}\r\n\t}, [apiKeys, readyToSend]);\r\n\r\n\tconst resetApiKey = () => {\r\n\t\tsetApiKeys(\"\");\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\treturn isSent ? (\r\n\t\t\t\r\n\t\t\t\t{/* \r\n }\r\n onClick={() => this.setState(() => ({ isSent: false }))}\r\n /> */}\r\n\t\t\t\r\n\t\t) : (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t

Email Api Key

\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t{({\r\n\t\t\t\t\t\t\tvalues,\r\n\t\t\t\t\t\t\thandleChange,\r\n\t\t\t\t\t\t\thandleSubmit,\r\n\t\t\t\t\t\t\tisValid,\r\n\t\t\t\t\t\t\tisSubmitting,\r\n\t\t\t\t\t\t\tdirty,\r\n\t\t\t\t\t\t\terrors,\r\n\t\t\t\t\t\t\tresetForm,\r\n\t\t\t\t\t\t\tsetFieldValue,\r\n\t\t\t\t\t\t}) => (\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\thandleFormSubmit(values, setErrors);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tautoComplete={\"off\"}\r\n\t\t\t\t\t\t\t\tencType=\"multipart/form-data\">\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"subject\", \"\");\r\n\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"body\", \"\");\r\n\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"toEmail\", \"\");\r\n\t\t\t\t\t\t\t\t\t\tresetApiKey();\r\n\r\n\t\t\t\t\t\t\t\t\t\t// if (!apiKeys) {\r\n\t\t\t\t\t\t\t\t\t\t// \ttry {\r\n\t\t\t\t\t\t\t\t\t\t// \t\tconst api = await agent.Apikey.getApiKey();\r\n\t\t\t\t\t\t\t\t\t\t// \t\tsetApiKeys(api);\r\n\t\t\t\t\t\t\t\t\t\t// \t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t// \t} catch (error: any) {\r\n\t\t\t\t\t\t\t\t\t\t// \t\t// setErrors({ error: ErrorHandler(error) });\r\n\t\t\t\t\t\t\t\t\t\t// \t}\r\n\t\t\t\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\tClear\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{readyToSend ? \"Send Api key\" : \"Generate Api key\"}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t};\r\n\r\n\tconst handleFormSubmit = async (values: any, setErrors: Function) => {\r\n\t\tif (!apiKeys) {\r\n\t\t\ttry {\r\n\t\t\t\tconst api = await agent.Apikey.getApiKey();\r\n\t\t\t\tsetApiKeys(\r\n\t\t\t\t\t`Request Header Key: \"ESVD-API-KEY\" \\n \\n\\n ESVD Api key: ${api}`\r\n\t\t\t\t);\r\n\t\t\t\treturn;\r\n\t\t\t} catch (error: any) {\r\n\t\t\t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// const { emailSuggestedStudy } = props;\r\n\r\n\t\t// setIsSending(true);\r\n\t\t// emailSuggestedStudy(values)\r\n\t\t// \t.then((res: any) => {\r\n\t\t// \t\tsetIsSending(false);\r\n\t\t// \t\tsetIsSent(true);\r\n\t\t// \t\tresetApiKey();\r\n\t\t// \t})\r\n\t\t// \t.catch((error: any) => {\r\n\t\t// \t\tsetErrors({ error: ErrorHandler(error) });\r\n\t\t// \t});\r\n\t};\r\n\r\n\treturn {renderContent()};\r\n};\r\nconst validationSchema: any = Yup.object({\r\n\t[`${StudySuggestionProps.title.name}`]: Yup.string()\r\n\t\t.trim()\r\n\t\t.required(`${StudySuggestionProps.title.label} is required`),\r\n\t[`${StudySuggestionProps.description.name}`]: Yup.string()\r\n\t\t.trim()\r\n\t\t.required(`Study Description is required`),\r\n\t[`${StudySuggestionProps.studyType.name}`]: Yup.string()\r\n\t\t.trim()\r\n\t\t.required(`Study Type is required`),\r\n\t[`${StudySuggestionProps.attachment.name}`]: Yup.array()\r\n\t\t.min(1, \"Attachment field must have at least 1 item\")\r\n\t\t.required(\"Attachment field must have at least 1 item\"),\r\n});\r\n\r\nexport default ApiGenerator;\r\n","import React, { useEffect } from \"react\";\r\nimport { Grid, Container } from \"semantic-ui-react\";\r\nimport ApiGenerator from \"./ApiGenerator\";\r\nimport { actions, resources } from \"../../shared/Literals\";\r\nimport Can from \"../../accessControls/Can\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\nimport { useActiveMenu } from \"../../providers/ActiveMenuProvider\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst ApiGeneratorBoard = () => {\r\n\tconst { setActiveItem } = useActiveMenu();\r\n\r\n\tuseEffect(() => {\r\n\t\t// resetEsvds();\r\n\t\tsetActiveItem(resources.suggestStudy.name);\r\n\t}, []);\r\n\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t renderContent()}\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nconst ApiGeneratorBoardWrapper = () => {\r\n\treturn ;\r\n};\r\nexport default ApiGeneratorBoardWrapper;\r\n","import React, { useContext, useState } from \"react\";\r\n\r\nimport agent from \"../api/agent\";\r\nimport { User, UserQueryResult } from \"../models/user\";\r\nimport { UserQueryParams } from \"../models/EsvdQueryFilters\";\r\n\r\ninterface IValue {\r\n\t// currentPage: number;\r\n\tgetEarlyBirdUsers: Function;\r\n\tgetNonEarlyBirdUsers: Function;\r\n\t// setCurrentPage: Function;\r\n\taddUserToEarlybird: Function;\r\n\tremoveUserToEarlybird: Function;\r\n}\r\n\r\nconst UserContext = React.createContext(null);\r\n\r\n// The AuthProvider is responsible for Auth management\r\nconst UserProvider = ({ children }: { children: any }) => {\r\n\t// const [user, setUser] = useState();\r\n\t// const [currentPage, setCurrentPage] = useState(0);\r\n\r\n\tconst getEarlyBirdUsers = async (\r\n\t\tuserQueryParams: UserQueryParams\r\n\t): Promise => {\r\n\t\ttry {\r\n\t\t\tconst items = await agent.Account.earlybirdusers(userQueryParams);\r\n\t\t\titems.users = items.users.sort((a, b) => {\r\n\t\t\t\treturn !!a.userName > !!b.userName ? 1 : -1;\r\n\t\t\t});\r\n\t\t\treturn items;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getNonEarlyBirdUsers = async (\r\n\t\tuserQueryParams: UserQueryParams\r\n\t): Promise => {\r\n\t\ttry {\r\n\t\t\tconst items = await agent.Account.nonearlybirdusers(userQueryParams);\r\n\t\t\titems.users = items.users.sort((a, b) => {\r\n\t\t\t\treturn !!a.userName > !!b.userName ? 1 : -1;\r\n\t\t\t});\r\n\t\t\treturn items;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst addUserToEarlybird = async (id: string) => {\r\n\t\ttry {\r\n\t\t\tawait agent.Account.addearlybirduser(id);\r\n\t\t\treturn;\r\n\t\t} catch (error: any) {\r\n\t\t\t// setUser(null);\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\tconst removeUserToEarlybird = async (id: string) => {\r\n\t\ttry {\r\n\t\t\tawait agent.Account.removeearlybirduser(id);\r\n\t\t\treturn;\r\n\t\t} catch (error: any) {\r\n\t\t\t// setUser(null);\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\n// The useStackData hook can be used by components under an StackDataProvider to\r\n// access the auth context value.\r\nconst useUsers = () => {\r\n\tconst auth = useContext(UserContext);\r\n\tif (auth == null) {\r\n\t\tthrow new Error(\"useUsers() called outside of a auth hook?\");\r\n\t}\r\n\treturn auth;\r\n};\r\n\r\nexport { UserProvider, useUsers };\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n\tButton,\r\n\tCard,\r\n\tForm,\r\n\tInput,\r\n\tList,\r\n\tIcon,\r\n\tPagination,\r\n} from \"semantic-ui-react\";\r\nimport { FieldArray, Formik } from \"formik\";\r\n\r\nimport {\r\n\tModalWithContextProvider,\r\n\tuseModalWithContext,\r\n} from \"../../layouts/ModalWithContext\";\r\nimport { useUsers } from \"../../providers/UserProvider\";\r\nimport { User } from \"../../models/user\";\r\n// import { offset } from \"handsontable/helpers/dom\";\r\n\r\nexport const EarlyBirdSelection = ({\r\n\tformDispatcher,\r\n}: {\r\n\tformDispatcher: Function | undefined;\r\n}) => {\r\n\t//use a separate dispacher for the modal that will show upon success or failure of feedback submission.\r\n\t//This way, the feedback form will not be affected by the closing of the that modal, since it has a different dispatch, formDispatcher\r\n\tconst {\r\n\t\tgetNonEarlyBirdUsers,\r\n\r\n\t\taddUserToEarlybird,\r\n\t} = useUsers();\r\n\r\n\tconst closeModal = () => {\r\n\t\tformDispatcher && formDispatcher({ open: false });\r\n\t};\r\n\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [limit] = React.useState(15);\r\n\tconst [currentPage, setCurrentPage] = useState(0);\r\n\tconst [ebUsers, setEbUsers] = React.useState([]);\r\n\tconst [ebUsersCount, setEbUsersCount] = React.useState(0);\r\n\tconst [freeText, setFreeText] = useState(\"\");\r\n\r\n\tuseEffect(() => {\r\n\t\t(async () => {\r\n\t\t\tsetIsLoading(true);\r\n\t\t\tconst dat = await getNonEarlyBirdUsers({\r\n\t\t\t\tparams: { offset: currentPage, limit: limit },\r\n\t\t\t});\r\n\t\t\tdat && setEbUsersCount(dat.totalRecords);\r\n\t\t\tdat && setEbUsers(dat.users);\r\n\t\t\tsetIsLoading(false);\r\n\t\t})();\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\t(async () => {\r\n\t\t\tsetIsLoading(true);\r\n\t\t\tconst dat = await getNonEarlyBirdUsers({\r\n\t\t\t\tparams: { offset: currentPage, limit: limit },\r\n\t\t\t});\r\n\t\t\tdat && setEbUsersCount(dat.totalRecords);\r\n\t\t\tdat && setEbUsers(dat.users);\r\n\t\t\tsetIsLoading(false);\r\n\t\t})();\r\n\t}, [currentPage]);\r\n\r\n\tuseEffect(() => {\r\n\t\t(async () => {\r\n\t\t\tsetIsLoading(true);\r\n\t\t\tconst dat = await getNonEarlyBirdUsers({\r\n\t\t\t\tparams: { offset: currentPage, limit: limit, freeText },\r\n\t\t\t});\r\n\t\t\tdat && setEbUsersCount(dat.totalRecords);\r\n\t\t\tdat && setEbUsers(dat.users);\r\n\t\t\tsetIsLoading(false);\r\n\t\t})();\r\n\t}, [freeText]);\r\n\r\n\tconst searchUsers = (e: any) => {\r\n\t\tsetFreeText(e.target.value);\r\n\t};\r\n\r\n\tconst addUser = async (user: User) => {\r\n\t\ttry {\r\n\t\t\tsetIsLoading(true);\r\n\t\t\tawait addUserToEarlybird(user.id);\r\n\t\t\tuser.id = null;\r\n\t\t} catch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t} finally {\r\n\t\t\tsetIsLoading(false);\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{/*
*/}\r\n\t\t\t{/* */}\r\n\t\t\t{/* */}\r\n\t\t\t{/*
*/}\r\n\t\t\t<>\r\n\t\t\t\t{/*
\r\n\t\t\t\t\tSearch users by name, email or display name to add to early bird\r\n\t\t\t\t
*/}\r\n\t\t\t\t searchUsers(e)}\r\n\t\t\t\t\ticon=\"search\"\r\n\t\t\t\t\tplaceholder=\"Search users by name, email or display name...\"\r\n\t\t\t\t\tfluid\r\n\t\t\t\t\tloading={isLoading}\r\n\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\t\t{ebUsers &&\r\n\t\t\t\t\t\tebUsers.map((user, i) => {\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t user.id && (await addUser(user))}>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{user.userName}\r\n\t\t\t\t\t\t\t\t\t\t{user.email}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{/*
*/}\r\n\t\t\t{/*
\r\n\t\t\t
*/}\r\n\t\t\t{/*
*/}\r\n\t\t\t {\r\n\t\t\t\t\tsetCurrentPage(activePage || 1);\r\n\t\t\t\t}}\r\n\t\t\t\tsize=\"mini\"\r\n\t\t\t\tsiblingRange={1}\r\n\t\t\t\ttotalPages={Math.ceil(ebUsersCount / limit)}\r\n\t\t\t\t// ellipsisItem={true}\r\n\t\t\t\t// firstItem={true}\r\n\t\t\t\t// lastItem={true}\r\n\t\t\t\tprevItem={true}\r\n\t\t\t\tnextItem={true}\r\n\t\t\t/>{\" \"}\r\n\t\t\t\r\n\t\t\t\tClose\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nconst EarlyBirdSelectionWrapper = ({\r\n\tformDispatcher,\r\n\tsetRefresh,\r\n}: {\r\n\tformDispatcher: Function | undefined;\r\n\tsetRefresh: Function;\r\n}) => {\r\n\tuseEffect(() => {\r\n\t\treturn () => {\r\n\t\t\tsetRefresh(true);\r\n\t\t};\r\n\t});\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default EarlyBirdSelectionWrapper;\r\n","import { useState } from \"react\";\r\nimport { FieldArray, Formik } from \"formik\";\r\nimport React, { useEffect } from \"react\";\r\nimport {\r\n\tForm,\r\n\tCard,\r\n\tButton,\r\n\tInput,\r\n\tList,\r\n\tPagination,\r\n\tIcon,\r\n\tItem,\r\n} from \"semantic-ui-react\";\r\n\r\nimport { useUsers } from \"../../providers/UserProvider\";\r\nimport { User } from \"../../models/user\";\r\nimport { useModalWithContext } from \"../../layouts/ModalWithContext\";\r\nimport EarlyBirdSelectionWrapper from \"./EarlyBirdSelection\";\r\nimport { LIMIT } from \"../../shared/Literals\";\r\n\r\nconst EarlyBirdListing = () => {\r\n\tconst { getEarlyBirdUsers, removeUserToEarlybird } = useUsers();\r\n\tconst { modalDispatcher } = useModalWithContext();\r\n\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [ebUsers, setEbUsers] = React.useState();\r\n\tconst [ebUsersCount, setEbUsersCount] = React.useState(0);\r\n\t// const [currentPage, setCurrentPage] = useState(0);\r\n\t// const [freeText, setFreeText] = useState(\"\");\r\n\tconst [refresh, setRefresh] = useState(false);\r\n\t// const [limit] = React.useState(15);\r\n\r\n\tuseEffect(() => {\r\n\t\t(async () => {\r\n\t\t\tconst dat = await getEarlyBirdUsers({\r\n\t\t\t\tparams: { offset: 0, limit: 0 },\r\n\t\t\t});\r\n\t\t\tdat && setEbUsersCount(dat.totalRecords);\r\n\t\t\tdat && setEbUsers(dat.users);\r\n\t\t})();\r\n\t}, []);\r\n\r\n\t// useEffect(() => {\r\n\t// \t(async () => {\r\n\t// \t\tconst dat = await getEarlyBirdUsers({\r\n\t// \t\t\tparams: { offset: currentPage, limit: 0 },\r\n\t// \t\t});\r\n\t// \t\tdat && setEbUsersCount(dat.totalRecords);\r\n\t// \t\tdat && setEbUsers(dat.users);\r\n\t// \t})();\r\n\t// }, [currentPage]);\r\n\r\n\t// useEffect(() => {\r\n\t// \tsetCurrentPage(0);\r\n\t// \t(async () => {\r\n\t// \t\tconst dat = await getEarlyBirdUsers({\r\n\t// \t\t\tparams: { offset: 0, limit: limit, freeText },\r\n\t// \t\t});\r\n\t// \t\tdat && setEbUsersCount(dat.totalRecords);\r\n\t// \t\tdat && setEbUsers(dat.users);\r\n\t// \t})();\r\n\t// \tsetRefresh(false);\r\n\t// }, [freeText]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (refresh) {\r\n\t\t\t// setCurrentPage(0);\r\n\t\t\t(async () => {\r\n\t\t\t\tconst dat = await getEarlyBirdUsers({\r\n\t\t\t\t\tparams: { offset: 0, limit: 0, freeText: \"\" },\r\n\t\t\t\t});\r\n\t\t\t\tdat && setEbUsersCount(dat.totalRecords);\r\n\t\t\t\tdat && setEbUsers(dat.users);\r\n\t\t\t})();\r\n\t\t\tsetRefresh(false);\r\n\t\t}\r\n\t}, [refresh]);\r\n\r\n\tconst toggleModal = () => {\r\n\t\tmodalDispatcher({\r\n\t\t\topen: true,\r\n\t\t\tsize: \"tiny\",\r\n\t\t\tdisplayType: null,\r\n\t\t\toptions: {\r\n\t\t\t\ttitle: \"Add users to Early Bird\",\r\n\t\t\t\tbody: (\r\n\t\t\t\t\t\r\n\t\t\t\t),\r\n\t\t\t\tcloseOnDimmerClick: false,\r\n\t\t\t},\r\n\t\t});\r\n\t};\r\n\r\n\tconst removeFromEarlyBird = async (user: User) => {\r\n\t\ttry {\r\n\t\t\tsetIsLoading(true);\r\n\t\t\tawait removeUserToEarlybird(user.id);\r\n\t\t\tuser.id = null;\r\n\t\t\tsetRefresh(true);\r\n\t\t} catch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t} finally {\r\n\t\t\tsetIsLoading(false);\r\n\t\t}\r\n\t};\r\n\r\n\t// const searchUsers = (e: any) => {\r\n\t// \tsetFreeText(e.target.value);\r\n\t// };\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{/* \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t */}\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tAdd users to early bird\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t

List of early birds

\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{/* searchUsers(e)}\r\n\t\t\t\t\t\t\t\t\ticon=\"search\"\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"Search...\"\r\n\t\t\t\t\t\t\t\t\tfluid\r\n\t\t\t\t\t\t\t\t\tloading={isLoading}\r\n\t\t\t\t\t\t\t\t/> */}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{ebUsers &&\r\n\t\t\t\t\t\t\t\t\t\tebUsers.map((user, i) => {\r\n\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuser.id && (await removeFromEarlyBird(user))\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{user.userName}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{user.email}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t{/* {\r\n\t\t\t\t\tsetCurrentPage(activePage || 1);\r\n\t\t\t\t}}\r\n\t\t\t\tsize=\"mini\"\r\n\t\t\t\tsiblingRange={1}\r\n\t\t\t\ttotalPages={Math.ceil(ebUsersCount / limit)}\r\n\t\t\t\tprevItem={true}\r\n\t\t\t\tnextItem={true}\r\n\t\t\t/> */}\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default EarlyBirdListing;\r\n","import React from \"react\";\r\nimport {\r\n\tGrid,\r\n\tContainer,\r\n\tCard,\r\n\t// Segment,\r\n\t// Rail,\r\n\t// Sticky,\r\n\t// Header,\r\n\t// Image,\r\n\t// GridColumn,\r\n} from \"semantic-ui-react\";\r\n// import _ from \"lodash\";\r\nimport { actions, resources } from \"../../shared/Literals\";\r\nimport Can from \"../../accessControls/Can\";\r\nimport { Redirect } from \"react-router\";\r\nimport MediaLayout, { MediaProvider } from \"../../layouts/MediaLayout\";\r\nimport { Esvdv2Provider } from \"../../providers/Esvdv2Provider\";\r\nimport { UserProvider } from \"../../providers/UserProvider\";\r\nimport { ModalWithContextProvider } from \"../../layouts/ModalWithContext\";\r\nimport EarlyBirdListing from \"./EarlyBirdListing\";\r\n\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst EarlyBirdReadMe = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t

Read Me

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nconst EarlyBirdBoard = () => {\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{/* \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t */}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\treturn (\r\n\t\t renderContent()}\r\n\t\t\tno={() => }\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nconst EarlyBirdBoardwrapper = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default EarlyBirdBoardwrapper;\r\n","import { ErrorMessage, Form, Formik } from \"formik\";\r\nimport React, { useEffect } from \"react\";\r\nimport { Card, Grid, Label } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\nimport EsvdInput from \"../../shared/Input\";\r\n\r\nimport { ResendConfirmation } from \"../../models/user\";\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport { useAuth } from \"../../providers/AuthProvider\";\r\nimport LoginsContainer from \"./LoginsContainer\";\r\n\r\ninterface IProps {\r\n\tmatch: any;\r\n\tusername: string;\r\n\tsetUserLoginMode: Function;\r\n}\r\n\r\nconst Login = (props: IProps) => {\r\n\tconst { user, login, resendconfirmationlink } = useAuth();\r\n\tconst { match, username, setUserLoginMode } = props;\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [isSent, setIsSent] = React.useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\tconst handleResendLink = async (value: ResendConfirmation) => {\r\n\t\tsetIsLoading(true);\r\n\t\tresendconfirmationlink(value)\r\n\t\t\t.then((res: any) => {\r\n\t\t\t\tsetIsSent(true);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t})\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\tif (!user) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\tWelcome to the ESVD\r\n\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{isSent ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tSend confirmation link \r\n\t\t\t\t\t\t\tAn email has been sent to your inbox.
\r\n\t\t\t\t\t\t\tPlease check your inbox to reset your password.\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tIf you don't see an email, please check your spam folder.\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tLogin below if you already have an account. If you do not have\r\n\t\t\t\t\t\t\t\tan account yet, please Sign Up first by clicking the Sign Up\r\n\t\t\t\t\t\t\t\tbutton below and create your account.\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetIsLoading(true);\r\n\t\t\t\t\t\t\t\t\tlogin(values)\r\n\t\t\t\t\t\t\t\t\t\t.then((res: any) => {\r\n\t\t\t\t\t\t\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t.catch((error: any) => {\r\n\t\t\t\t\t\t\t\t\t\t\tsetErrors({\r\n\t\t\t\t\t\t\t\t\t\t\t\terror: ErrorHandler(error),\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t{({\r\n\t\t\t\t\t\t\t\t\thandleSubmit,\r\n\t\t\t\t\t\t\t\t\tvalues,\r\n\t\t\t\t\t\t\t\t\tisValid,\r\n\t\t\t\t\t\t\t\t\tdirty,\r\n\t\t\t\t\t\t\t\t\tisSubmitting,\r\n\t\t\t\t\t\t\t\t\terrors,\r\n\t\t\t\t\t\t\t\t}) => (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tForgot a password?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{errors.error &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\terrors.error.includes(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Email not confirmed\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleResendLink({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tusername: values.username,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// to={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// pathname: \"/resendconfirmelink\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// search: \"?sort=name\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// hash: \"#the-hash\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// state: { username: values.username },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"ui right floated\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tResend confirmation link?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t setUserLoginMode(null)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tBack\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tLogin\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t\tif (match.params) {\r\n\t\t\tconst { params } = match;\r\n\t\t\tif (Object.keys(params).length === 0) {\r\n\t\t\t\treturn ;\r\n\t\t\t} else {\r\n\t\t\t\treturn ;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t//a login user shouldn't see the login page.\r\n\t\t\t//Therefore is a logged user access the login route, go to home\r\n\t\t\t// history.push(\"/\");\r\n\t\t\treturn ;\r\n\t\t}\r\n\t};\r\n\t// render() {\r\n\treturn {renderContent()};\r\n\t// }\r\n};\r\n\r\nconst validationSchema = Yup.object({\r\n\tusername: Yup.string().required(\"Username is required\"),\r\n\tpassword: Yup.string().required(\"Enter password\"),\r\n});\r\n\r\n// const mapStateToProps = (state: any) => {\r\n// \treturn { user: state.user };\r\n// };\r\n\r\nexport default Login;\r\n// export default connect(mapStateToProps, {\r\n// \tlogin,\r\n// \tresendconfirmationlink,\r\n// })(Login);\r\n","import { ErrorMessage, Form, Formik } from \"formik\";\r\nimport React from \"react\";\r\nimport { Card, Grid, Label } from \"semantic-ui-react\";\r\nimport * as Yup from \"yup\";\r\nimport EsvdInput from \"../../shared/Input\";\r\n\r\nimport { ResendConfirmation, UserLoginMode } from \"../../models/user\";\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport { ErrorHandler } from \"../../shared/ExceptionHandling\";\r\nimport { useAuth } from \"../../providers/AuthProvider\";\r\nimport LoginsContainer from \"./LoginsContainer\";\r\n\r\ninterface IProps {\r\n\tmatch: any;\r\n\temail: string;\r\n\tsetUserLoginMode: Function;\r\n}\r\n\r\nconst LoginWithCode = (props: IProps) => {\r\n\tconst { user, loginWithOtp, GenerateOtp, resendconfirmationlink } = useAuth();\r\n\tconst { match, email, setUserLoginMode } = props;\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tconst [isSent, setIsSent] = React.useState(false);\r\n\r\n\tconst handleResendLink = async (value: ResendConfirmation) => {\r\n\t\tsetIsLoading(true);\r\n\t\tresendconfirmationlink(value)\r\n\t\t\t.then((res: any) => {\r\n\t\t\t\tsetIsSent(true);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t})\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst regenerateCode = async (usernameOrEmail: string) => {\r\n\t\tsetIsLoading(true);\r\n\t\ttry {\r\n\t\t\t// if (!userLoginMode) {\r\n\t\t\tawait GenerateOtp(usernameOrEmail);\r\n\t\t} catch (error) {\r\n\t\t\t//report error\r\n\t\t\tconsole.log(error);\r\n\t\t} finally {\r\n\t\t\tsetIsLoading(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\tif (!user) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\tWelcome to the ESVD\r\n\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{isSent ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tSend confirmation link \r\n\t\t\t\t\t\t\tAn email has been sent to your inbox.
\r\n\t\t\t\t\t\t\tPlease check your inbox to reset your password.\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tIf you don't see an email, please check your spam folder.\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tA code has been sent to your email. Please check your email and\r\n\t\t\t\t\t\t\t\tenter the code below. This code is valid for 15 minutes.\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetIsLoading(true);\r\n\t\t\t\t\t\t\t\t\tloginWithOtp(values)\r\n\t\t\t\t\t\t\t\t\t\t.then((res: any) => {\r\n\t\t\t\t\t\t\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t.catch((error: any) => {\r\n\t\t\t\t\t\t\t\t\t\t\tsetErrors({\r\n\t\t\t\t\t\t\t\t\t\t\t\terror: ErrorHandler(error),\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t{({\r\n\t\t\t\t\t\t\t\t\thandleSubmit,\r\n\t\t\t\t\t\t\t\t\tvalues,\r\n\t\t\t\t\t\t\t\t\tisValid,\r\n\t\t\t\t\t\t\t\t\tdirty,\r\n\t\t\t\t\t\t\t\t\tisSubmitting,\r\n\t\t\t\t\t\t\t\t\terrors,\r\n\t\t\t\t\t\t\t\t}) => (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t regenerateCode(email)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"ui right floated\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tGet a new code?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{errors.error &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\terrors.error.includes(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Email not confirmed\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleResendLink({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tusername: values.username,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// to={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// pathname: \"/resendconfirmelink\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// search: \"?sort=name\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// hash: \"#the-hash\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// state: { username: values.username },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"ui right floated\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tResend confirmation link?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t setUserLoginMode(null)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tBack\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{/* \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tBack\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t */}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tLogin\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t\tif (match.params) {\r\n\t\t\tconst { params } = match;\r\n\t\t\tif (Object.keys(params).length === 0) {\r\n\t\t\t\treturn ;\r\n\t\t\t} else {\r\n\t\t\t\treturn ;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t//a login user shouldn't see the login page.\r\n\t\t\t//Therefore is a logged user access the login route, go to home\r\n\t\t\t// history.push(\"/\");\r\n\t\t\treturn ;\r\n\t\t}\r\n\t};\r\n\t// render() {\r\n\treturn {renderContent()};\r\n\t// }\r\n};\r\n\r\nconst validationSchema = Yup.object({\r\n\tusername: Yup.string().required(\"Email is required\"),\r\n\tpassword: Yup.string().required(\"Enter code\"),\r\n});\r\n\r\nexport default LoginWithCode;\r\n","import React, { useEffect } from \"react\";\r\n\r\nimport { UserLoginMode } from \"../../models/user\";\r\nimport LoginsContainer from \"./LoginsContainer\";\r\nimport UsernameOrEmail from \"./UsernameOrEmail\";\r\nimport Login from \"./Login\";\r\nimport LoginWithCode from \"./LoginWithCode\";\r\n\r\ninterface IProps {\r\n\tmatch: any;\r\n}\r\n\r\nconst LoginWrapper = (props: IProps) => {\r\n\tconst [userLoginMode, setUserLoginMode] =\r\n\t\tReact.useState(null);\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {};\r\n\t}, []);\r\n\r\n\tconst renderContent = () => {\r\n\t\tif (!userLoginMode) {\r\n\t\t\treturn ;\r\n\t\t} else {\r\n\t\t\treturn userLoginMode.userExists && userLoginMode.isUsername ? (\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t\t// if (props.match.params) {\r\n\t\t// \tconst { params } = props.match;\r\n\t\t// \tif (Object.keys(params).length === 0) {\r\n\t\t// \t\treturn ;\r\n\t\t// \t} else {\r\n\t\t// \t\treturn ;\r\n\t\t// \t}\r\n\t\t// } else {\r\n\t\t// \t//a login user shouldn't see the login page.\r\n\t\t// \t//Therefore is a logged user access the login route, go to home\r\n\t\t// \t// history.push(\"/\");\r\n\t\t// \treturn ;\r\n\t\t// }\r\n\t};\r\n\t// render() {\r\n\treturn {renderContent()};\r\n\t// }\r\n};\r\n\r\nexport default LoginWrapper;\r\n","import * as React from \"react\";\r\nimport { Card, Item } from \"semantic-ui-react\";\r\n\r\nconst EsvdGetStartedPanel = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

SELINA View

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\tHere you find the standardized monetary values of your study as\r\n\t\t\t\t\tcollected in the ESVD. The ESVD provides information on the ecosystem\r\n\t\t\t\t\ttypes, different ES classifications, the monetary value and valuation\r\n\t\t\t\t\tmethod and some location and bibliographical information. Use the bar\r\n\t\t\t\t\tbelow to scroll to the right for additional information. You can also\r\n\t\t\t\t\tview the results on a map by clicking on 'Show Map'. Note that if a\r\n\t\t\t\t\tvalue estimate cannot be standardised to the common set of units used\r\n\t\t\t\t\tin the ESVD (Int$/ha/year), this field will be left empty.\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tIf you want to query the full ESVD, please create a free account or\r\n\t\t\t\t\tlog-in on the top right of the screen.\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default EsvdGetStartedPanel;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { GoogleMap, useJsApiLoader } from \"@react-google-maps/api\";\r\nimport { useEsvdValuation } from \"../../providers/EsvdValuationProvider\";\r\nimport LoadingOverlay from \"../../shared/LoadingOverlay\";\r\n\r\nimport EsvdMapMarker from \"../esvdPanel/EsvdMapMarker\";\r\nimport { Menu, Segment, Sidebar } from \"semantic-ui-react\";\r\nimport { SidebarProvider, useSidebar } from \"../../hooks/SidebarHook\";\r\nimport { Esvd } from \"../../models/esvd\";\r\n\r\nconst containerStyle = {\r\n\twidth: \"100%\",\r\n\theight: \"70vH\",\r\n\t// height: \"90vH\",\r\n};\r\n\r\nconst center = {\r\n\tlat: -3.745,\r\n\tlng: -38.523,\r\n};\r\nconst EsvdReadonlyMaps = () => {\r\n\t// const { isMapBusy, setIsMapBusy } = useEsvdValuation();\r\n\tconst { studyEsvds } = useEsvdValuation();\r\n\r\n\tconst { isLoaded } = useJsApiLoader({\r\n\t\tid: \"google-map-script\",\r\n\t\tgoogleMapsApiKey: process.env.REACT_APP_MAP_API_KEY || \"\",\r\n\t});\r\n\r\n\tconst [valuations, setValuations] = useState([]);\r\n\tconst [loading, setLoading] = useState(true);\r\n\r\n\tconst [mapDats, setMapDats] = React.useState([]);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetLoading(true);\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetLoading(true);\r\n\t\tif (studyEsvds) {\r\n\t\t\tsetValuations(studyEsvds);\r\n\t\t} else {\r\n\t\t\tsetValuations([]);\r\n\t\t}\r\n\t}, [studyEsvds]);\r\n\r\n\tconst groupDups = () => {\r\n\t\tconst marks: any = {};\r\n\t\tvaluations.forEach((mark) => {\r\n\t\t\tconst pos = `${mark.latitude}:${mark.longitude}`;\r\n\t\t\tif (marks[pos]) {\r\n\t\t\t\tmarks[pos].valueIds.push(mark.valueId);\r\n\t\t\t\tmarks[pos].locations.add(mark.studyLocation);\r\n\t\t\t} else {\r\n\t\t\t\tmarks[pos] = {\r\n\t\t\t\t\tposition: { lat: Number(mark.latitude), lng: Number(mark.longitude) },\r\n\t\t\t\t\tvalueIds: [mark.valueId],\r\n\t\t\t\t\tlocations: new Set([mark.studyLocation]),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn marks;\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tsetLoading(true);\r\n\t\tconst dat = groupDups();\r\n\r\n\t\tconst maks = markers(dat);\r\n\t\tsetMapDats(maks);\r\n\t}, [valuations]);\r\n\r\n\tconst onUnmount = React.useCallback(function callback(map) {\r\n\t\tsetMapDats([]);\r\n\t}, []);\r\n\r\n\tconst markers = (marks: any) => {\r\n\t\tsetLoading(true);\r\n\t\tlet mks: any[] = [];\r\n\t\t(async function mars() {\r\n\t\t\t<>\r\n\t\t\t\t{\r\n\t\t\t\t\t(mks = Object.entries(marks).map(([key, value], i) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)))\r\n\t\t\t\t}\r\n\t\t\t;\r\n\t\t})();\r\n\t\tsetTimeout(() => {\r\n\t\t\tsetLoading(false);\r\n\t\t}, 1000);\r\n\t\treturn mks;\r\n\t};\r\n\r\n\treturn isLoaded ? (\r\n\t\t\r\n\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\t{valuations.length > 0 && mapDats}\r\n\t\t\t\r\n\t\t\r\n\t) : (\r\n\t\t<>\r\n\t);\r\n};\r\n\r\nexport const SidebarPanel = (props: any) => {\r\n\tconst { visible, closeSidebar, sidebarContent } = useSidebar();\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t closeSidebar()}\r\n\t\t\t\tvertical\r\n\t\t\t\tvisible={visible}\r\n\t\t\t\twidth=\"very wide\">\r\n\t\t\t\t{sidebarContent}\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst EsvdReadonlyMapsPanel = () => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default React.memo(EsvdReadonlyMapsPanel);\r\n","import { useState, useEffect } from \"react\";\r\nimport Table, { AutoResizer } from \"react-base-table\";\r\nimport \"react-base-table/styles.css\";\r\nimport { defaultSort, IS_DESCEND_DEFAULT } from \"../../shared/Literals\";\r\nimport { useEsvdValuation } from \"../../providers/EsvdValuationProvider\";\r\nimport { Esvd, EsvdArray } from \"../../models/esvd\";\r\nimport {\r\n\tbodyRowsFlattened,\r\n\tdisplayBodyRowsObjects,\r\n\tdisplayHeaderTransform,\r\n\tsetDisplayMultiColumnMaxLens,\r\n\tsetMultiColumnMaxLenFlattened,\r\n} from \"../../EsvdFunctions\";\r\nimport {\r\n\tColumnStructure,\r\n\tDisplayColumnStructure,\r\n} from \"../../models/columnStructure\";\r\nimport {\r\n\tColumnTemplate,\r\n\tDisplayColumnTemplate,\r\n} from \"../../models/columnTemplate\";\r\n\r\nconst EsvdReadonlyTable = () => {\r\n\tconst { studyEsvds } = useEsvdValuation();\r\n\r\n\tconst [valuations, setValuations] = useState([]);\r\n\tconst [sort, setSort] = useState(defaultSort);\r\n\r\n\tconst [esvds, setEsvds] = useState({\r\n\t\tesvdsAllCols: [],\r\n\t\theaderArray: [],\r\n\t\tbodyArray: [],\r\n\t});\r\n\r\n\tuseEffect(() => {\r\n\t\tif (studyEsvds) {\r\n\t\t\tsetValuations(studyEsvds);\r\n\t\t} else {\r\n\t\t\tsetValuations([]);\r\n\t\t}\r\n\t}, [studyEsvds]);\r\n\r\n\tuseEffect(() => {\r\n\t\tprocessEsvds();\r\n\t}, [valuations]);\r\n\r\n\tconst processEsvds = () => {\r\n\t\ttry {\r\n\t\t\tconst cols: DisplayColumnStructure = setDisplayMultiColumnMaxLens(\r\n\t\t\t\tvaluations,\r\n\t\t\t\tDisplayColumnTemplate\r\n\t\t\t);\r\n\t\t\tconst heads = displayHeaderTransform(valuations, cols);\r\n\t\t\tconst body = displayBodyRowsObjects(valuations, cols);\r\n\r\n\t\t\tconst allCols: ColumnStructure = setMultiColumnMaxLenFlattened(\r\n\t\t\t\tvaluations,\r\n\t\t\t\tColumnTemplate\r\n\t\t\t);\r\n\t\t\tconst items = bodyRowsFlattened(valuations, allCols);\r\n\r\n\t\t\tsetEsvds({ esvdsAllCols: items, headerArray: heads, bodyArray: body });\r\n\r\n\t\t\t// return response;\r\n\t\t} catch (error: any) {\r\n\t\t\tthrow error.response ? error.response.statusText : error.message;\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{({ width, height }) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n\t// }\r\n};\r\n\r\nexport default EsvdReadonlyTable;\r\n","import React from \"react\";\r\nimport { Card, Grid } from \"semantic-ui-react\";\r\n\r\nimport { useEsvdValuation } from \"../../providers/EsvdValuationProvider\";\r\nimport { LIMIT } from \"../../shared/Literals\";\r\nimport EsvdReadonlyTable from \"./EsvdReadonlyTable\";\r\nimport EsvdPagination from \"../esvdPanel/EsvdPagination\";\r\n\r\nconst EsvdTableReadonlyPanel = () => {\r\n\tconst { esvdCount, activePage, setActivePage } = useEsvdValuation();\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t{/* \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t */}\r\n\t\t\r\n\t);\r\n\t// }\r\n};\r\n\r\nexport default EsvdTableReadonlyPanel;\r\n","import React, { useEffect } from \"react\";\r\nimport { Button, Card } from \"semantic-ui-react\";\r\n\r\nimport { useReferenceInfo } from \"../../providers/ReferenceInfoProvider\";\r\nimport { useEsvdValuation } from \"../../providers/EsvdValuationProvider\";\r\nimport filterCheck from \"../../shared/FilterCheck\";\r\nimport agent from \"../../api/agent\";\r\nimport { Esvd } from \"../../models/esvd\";\r\nimport EsvdReadonlyTable from \"./EsvdReadonlyTable\";\r\nimport EsvdReadonlyMaps from \"./EsvdReadonlyMaps\";\r\nimport EsvdTableReadonlyPanel from \"./EsvdTableReadonlyPanel\";\r\n\r\nconst EsvdDataReadonlyWrapper = () => {\r\n\tconst { currentInfo } = useReferenceInfo();\r\n\r\n\tconst {\r\n\t\tesvdTotalCount,\r\n\t\tshowMap,\r\n\t\tsetShowMap,\r\n\t\tsaveQueryParams,\r\n\t\tesvdQueryParams,\r\n\t\tgetStudyEsvds,\r\n\t\tstudyEsvds,\r\n\t} = useEsvdValuation();\r\n\r\n\tconst [valuations, setValuations] = React.useState([]);\r\n\r\n\tReact.useEffect(() => {\r\n\t\t//read headers from the request that was made to the server\r\n\t\t// (async () => {\r\n\t\tconst urlParams = new URLSearchParams(window.location.search);\r\n\t\tconst studyId = urlParams.get(\"studyId\");\r\n\t\tif (!studyId) return;\r\n\t\tgetStudyEsvds(studyId);\r\n\r\n\t\t// })();\r\n\t}, []);\r\n\tReact.useEffect(() => {\r\n\t\tif (studyEsvds) {\r\n\t\t\tsetValuations(studyEsvds);\r\n\t\t} else {\r\n\t\t\tsetValuations([]);\r\n\t\t}\r\n\t}, [studyEsvds]);\r\n\r\n\tconst switchBetweenMapTable = () => {\r\n\t\t//save query if valid\r\n\t\tif (!esvdQueryParams.saved && filterCheck(esvdQueryParams)) {\r\n\t\t\t//save query if not saved already\r\n\t\t\tsaveQueryParams && saveQueryParams({ ...esvdQueryParams });\r\n\t\t}\r\n\t\tsetShowMap(!showMap);\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{showMap ? (\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tValuations:{\" \"}\r\n\t\t\t\t\t\t{`${\r\n\t\t\t\t\t\t\tvaluations && valuations.length\r\n\t\t\t\t\t\t} of ${esvdTotalCount}`}\r\n\t\t\t\t\t

\r\n\t\t\t\t) : (\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tValuations:{\" \"}\r\n\t\t\t\t\t\t{`${\r\n\t\t\t\t\t\t\tvaluations && valuations.length\r\n\t\t\t\t\t\t} of ${esvdTotalCount}`}\r\n\t\t\t\t\t

\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{currentInfo && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tDatabase Version: {`${currentInfo.version}`}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t switchBetweenMapTable()}\r\n\t\t\t\t\t\t\tsize=\"tiny\">\r\n\t\t\t\t\t\t\t{showMap ? \"Show Table\" : \"Show Map\"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\t{showMap ? : }\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default EsvdDataReadonlyWrapper;\r\n","import { useEffect } from \"react\";\r\nimport { Grid, Container } from \"semantic-ui-react\";\r\nimport { resetEsvds } from \"../../actions/esvdActions\";\r\nimport EsvdGetStartedPanel from \"./EsvdGetStartedPanel\";\r\nimport MediaLayout from \"../../layouts/MediaLayout\";\r\nimport {\r\n\tEsvdValuationProvider,\r\n\tuseEsvdValuation,\r\n} from \"../../providers/EsvdValuationProvider\";\r\nimport EsvdDataReadonlyWrapper from \"./EsvdDataReadonlyWrapper\";\r\nimport { ListsProvider } from \"../../providers/ListsProvider\";\r\nimport { ModalWithContextProvider } from \"../../layouts/ModalWithContext\";\r\nconst { Media, MediaContextProvider } = MediaLayout;\r\n\r\nconst EsvdDatabaseHomeReadonly = () => {\r\n\tconst { getEsvdTotalCount, getEsvdTotalMapCount } = useEsvdValuation();\r\n\r\n\tuseEffect(() => {\r\n\t\tresetEsvds();\r\n\t\t(async () => {\r\n\t\t\tawait getEsvdTotalCount();\r\n\t\t\tawait getEsvdTotalMapCount();\r\n\t\t})();\r\n\t\treturn () => {\r\n\t\t\t// clearFilter();\r\n\t\t};\r\n\t}, []);\r\n\r\n\tconst renderContent = () => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn renderContent();\r\n};\r\n\r\nconst EsvdDatabaseHomeReadonlyWrapper = (props: any) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default EsvdDatabaseHomeReadonlyWrapper;\r\n","import React from \"react\";\r\nimport { Route, Switch } from \"react-router-dom\";\r\nimport EditorStudyBoard from \"../components/editStudy/EditorStudyBoard\";\r\n\r\nimport ConfirmEmail from \"../components/logins/ConfirmEmail\";\r\nimport ForgotPassword from \"../components/logins/ForgotPassword\";\r\nimport UsernameOrEmail from \"../components/logins/UsernameOrEmail\";\r\nimport Logout from \"../components/logins/Logout\";\r\nimport Signup from \"../components/logins/Signup\";\r\nimport { resources } from \"../shared/Literals\";\r\nimport HomePage from \"../components/home/HomePage\";\r\nimport FilterQueriesDownloadsBoard from \"../components/generalDownloads/FilterQueriesDownloadsBoard\";\r\nimport SettingsMain from \"../components/settings/SettingsMain\";\r\nimport ResetPasswordWrapper from \"../components/logins/ResetPasswordWrapper\";\r\nimport UserProfile from \"../components/useraccounts/UserProfile\";\r\nimport UserProfileDownloadsBoard from \"../components/generalDownloads/UserProfileDownloadsBoard\";\r\nimport { ValuationsProvider } from \"../providers/ValuationsProvider\";\r\nimport StudyBoardWrapper from \"../components/studies/StudyBoardWrapper\";\r\nimport UploadDatasetBoard from \"../components/uploadDatasets/UploadDatasetBoard\";\r\nimport EsvdDatabaseHome from \"../components/esvdPanel/EsvdDatabaseHome\";\r\nimport VttHome from \"../components/vtts/VttHome\";\r\nimport VttCalculateHomeWrapper from \"../components/vtts/vttsCalculations/VttCalculateHome\";\r\nimport VslDatabaseHomeWrapper from \"../components/vsls/VslDatabaseHome\";\r\nimport VslUploadDatasetBoard from \"../components/vslUploadDatasets/VslUploadDatasetBoard\";\r\nimport SuggestionBoardWrapper from \"../components/studySuggest/SuggestionBoard\";\r\nimport StatsReadyBoard from \"../components/esvdStats/StatsReadyBoard\";\r\nimport ApiGeneratorBoardWrapper from \"../components/apisKeyGenerator/ApiGeneratorBoard\";\r\nimport EarlyBirdBoardwrapper from \"../components/earlybirds/EarlyBirdBoard\";\r\nimport LoginWrapper from \"../components/logins/LoginWrapper\";\r\nimport EsvdDatabaseHomeReadonlyWrapper from \"../components/esvdReadonlyPanel/EsvdDatabaseHomeReadonly\";\r\n\r\nconst Routes = (props: any) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t {\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\t//this saves the url of the page so that in case of a refresh, we get that url and navigate to that location.\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t{\" \"}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t {\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t);\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\t// setActiveItem(resources.userProfile.name);\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\t// setActiveItem(resources.filterQuery.name);\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\t// setActiveItem(resources.filterQuery.name);\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Routes;\r\n","export const feedbackCsvHeaders = {\r\n\t\"howSatisfied\": \"How satisfied are you with esvd.net? (scale 1-10)\",\r\n\t\"ideasforEsvd\": \"Do you have general feedback or ideas for esvd.net\",\r\n\t\"useforEsvd\": \"It would be of great interest to hear more about your use of the ESVD. What are you using the ESVD for and what is its added value?\",\r\n\t\"issueLoadingTables\": \"Issue - Loading table results\",\r\n\t\"issueLoadingMapResult\": \"Issue - Loading mapping results\",\r\n\t\"issueLoadingSumStart\": \"Issue - Loading summary statistics\",\r\n\t\"issueDownload\": \"Issue - Downloading the data\",\r\n\t\"issueLoggin\": \"Issue - Logging-in\",\r\n\t\"issueOther\": \"Issue - Other\",\r\n\t\"issueOtherText\": \"Issue - Other text\",\r\n\t\"additionalFeatures\":\r\n\t\t\"Additional features (new filters)\",\r\n};\r\n\r\nconst feedbackdata = {\r\n\thowSatisfied: \"How satisfied are you with esvd.net? (scale 1-10)\",\r\n\tideasforEsvd: \"Do you have general feedback or ideas for esvd.net?\",\r\n\tuseforEsvd:\r\n\t\t\"It would be of great interest to hear more about your use of the ESVD. What are you using the ESVD for and what is its added value?\",\r\n\tissue: {\r\n\t\tlabel: \"Have you experienced any technical issues or bugs?\",\r\n\t\toptions: {\r\n\t\t\tissueLoadingTables: \"Loading table results\",\r\n\t\t\tissueLoadingMapResult: \"Loading mapping results\",\r\n\t\t\tissueLoadingSumStart: \"Loading summary statistics\",\r\n\t\t\tissueDownload: \"Downloading the data\",\r\n\t\t\tissueLoggin: \"Logging-in\",\r\n\t\t\tissueOther: \"Other, please specify\",\r\n\t\t},\r\n\t\totherChecked: false,\r\n\t\tissueOtherText: \"\",\r\n\t},\r\n\tadditionalFeatures:\r\n\t\t\"Which additional features (new filters, value transfer function etc.) would you like to see on esvd.net that would help you better utilize the data?\",\r\n};\r\n\r\n\r\n\r\nexport default feedbackdata;\r\n","import React, { useEffect } from \"react\";\r\nimport {\r\n\tButton,\r\n\tLabel,\r\n\tCard,\r\n\tCheckbox,\r\n\t// Grid,\r\n\tInput,\r\n\tRating,\r\n} from \"semantic-ui-react\";\r\nimport {\r\n\tErrorMessage,\r\n\tForm,\r\n\tField,\r\n\t// FieldArray,\r\n\tFormik,\r\n\tuseField,\r\n} from \"formik\";\r\n\r\nimport * as Yup from \"yup\";\r\nimport agent from \"../../api/agent\";\r\nimport {\r\n\tModalWithContextProvider,\r\n\tuseModalWithContext,\r\n} from \"../../layouts/ModalWithContext\";\r\nimport feedbackdata, { feedbackCsvHeaders } from \"../../shared/FeedbackData\";\r\nimport { COMPANY_EMAIL } from \"../../shared/Literals\";\r\nimport { useAuth } from \"../../providers/AuthProvider\";\r\n\r\nconst RatingField = ({\r\n\tfield: name,\r\n\t...props\r\n}: {\r\n\tfield: any;\r\n\tname: string;\r\n}) => {\r\n\tconst [field, meta, helpers] = useField(name);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t helpers.setValue(rating)}\r\n\t\t\t/>\r\n\t\t\t
\r\n\t\t\t\t{Array.from({ length: 10 }, (_, i) => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{i + 1}\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t
\r\n\t\t\t{meta.touched && meta.error ? (\r\n\t\t\t\t\r\n\t\t\t\t\t{meta.error}\r\n\t\t\t\t\r\n\t\t\t) : null}\r\n\t\t
\r\n\t);\r\n};\r\nexport const TextInputField = ({\r\n\tfield: name,\r\n\t...props\r\n}: {\r\n\tfield: any;\r\n\tname: string;\r\n}) => {\r\n\tconst [field, meta, helpers] = useField(name);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t