{"version":3,"sources":["constants/actionTypes.js","agent.js","i18n.js","middleware.js","reducers/auth.js","reducers/common.js","reducers/home.js","reducers/farm.js","utils/sorter.js","reducers/crop.js","reducers/global.js","reducers/farmMachineries.js","reducers/farmInputs.js","reducers/land.js","reducers/hedgerows.js","reducers/ghgPrograms.js","reducers/index.js","store.js","theme/index.js","components/Home/SearchBar.js","components/Home/ListElement.js","components/Home/List.js","components/Home/index.js","assets/logo/italicmySoilCapital.png","components/Logo.js","utils/fieldRenderers.js","components/Login/LoginForm.js","components/Login/index.js","constants/dataStatuses.js","constants/profiles.js","constants/lockStatuses.js","utils/Permissions.js","components/SelectFarmPeriod/ConfirmPeriod.js","components/SelectFarmPeriod/index.js","components/TypographyWithIcon.js","components/Dashboard/CropsSection/CropCard.js","components/Dashboard/CropsSection/LockButton.js","components/Dashboard/CropsSection/LockingConfirmation.js","components/Dashboard/CropsSection/UnlockingConfirmation.js","components/Dashboard/CropsSection/index.js","utils/isMountedRef.js","components/Dashboard/ProfileForm/SearchCountry.js","components/Dashboard/ProfileForm/SearchRegion.js","components/Dashboard/ProfileForm/SearchAgronomist.js","components/Dashboard/ProfileForm/index.js","components/Dashboard/CardButton.js","components/Dashboard/index.js","components/Crop/SelectCrop.js","components/Crop/CropHeader.js","components/Crop/PaddockSection/OperationSection/ConfirmSingleOperation.js","components/Crop/PaddockSection/OperationSection/SearchPaddockBar.js","assets/bio/bio.jpg","components/BioLogo.js","components/Crop/PaddockSection/OperationSection/PaddockListElement.js","components/Crop/PaddockSection/OperationSection/ConfirmPaddock.js","components/Crop/PaddockSection/OperationSection/PaddockList.js","components/CustomDialogTitle.js","components/Crop/PaddockSection/OperationSection/PaddockListModal.js","components/Crop/PaddockSection/OperationSection/MenuButton.js","components/Crop/PaddockSection/OperationSection/ConfirmValidatePaddock.js","components/Crop/PaddockSection/OperationSection/OperationSectionMenu.js","components/Crop/PaddockSection/OperationSection/ValidationErrorModal.js","components/LoadingSpinner.js","components/Crop/PaddockSection/OperationSection/ValidatePaddock.js","components/FieldWithTextAdornment.js","utils/getSeparator.js","components/BlankIcon.js","components/Crop/PaddockSection/OperationSection/OperationCard/OperationStatusIcon.js","components/Crop/PaddockSection/OperationSection/OperationCard/SelectOperation.js","components/SelectDate.js","components/Crop/PaddockSection/OperationSection/OperationCard/SearchEquipment.js","components/Crop/PaddockSection/OperationSection/OperationCard/PurchaseTab.js","components/Crop/PaddockSection/OperationSection/OperationCard/OperationInputsSection/SearchFarmInputsPurchases.js","components/Crop/PaddockSection/OperationSection/OperationCard/OperationInputsSection/SearchGlobalInputsBar.js","components/Crop/PaddockSection/OperationSection/OperationCard/OperationInputsSection/PurchaseListElement.js","components/Crop/PaddockSection/OperationSection/OperationCard/OperationInputsSection/AddFarmInputPurchase.js","components/Crop/PaddockSection/OperationSection/OperationCard/OperationInputsSection/ConfirmFarmInputPurchase.js","components/Crop/PaddockSection/OperationSection/OperationCard/OperationInputsSection/PurchaseList.js","components/Crop/PaddockSection/OperationSection/OperationCard/OperationInputsSection/PurchaseListModal.js","components/DeleteConfirmation.js","components/Crop/PaddockSection/OperationSection/OperationCard/OperationInputsSection/QuantityConfirmation.js","components/Crop/PaddockSection/OperationSection/OperationCard/OperationInputsSection/OrganicModal.js","components/Crop/PaddockSection/OperationSection/OperationCard/OperationInputsSection/OperationInputsRow.js","components/Crop/PaddockSection/OperationSection/OperationCard/OperationInputsSection/index.js","components/Crop/PaddockSection/OperationSection/OperationCard/SearchGlobalMachineryBar.js","components/Crop/PaddockSection/OperationSection/OperationCard/MachineryListElement.js","components/Crop/PaddockSection/OperationSection/OperationCard/AddFarmMachinery.js","components/Crop/PaddockSection/OperationSection/OperationCard/ConfirmFarmMachinery.js","components/Crop/PaddockSection/OperationSection/OperationCard/MachineryList.js","components/Crop/PaddockSection/OperationSection/OperationCard/MachineryListModal.js","components/CancelConfirmation.js","components/Crop/PaddockSection/OperationSection/OperationCard/index.js","components/Crop/PaddockSection/OperationSection/index.js","components/Crop/PaddockSection/index.js","components/Crop/CropsResiduesSection/index.js","utils/getErrors.js","components/Crop/CropsTechsSection/CropsTechsRow/TillageSection/SelectTech.js","components/Crop/CropsTechsSection/CropsTechsRow/TillageSection/index.js","components/Crop/CropsTechsSection/CropsTechsRow/CoverCropsSection/SelectDestruction.js","components/Crop/CropsTechsSection/CropsTechsRow/CoverCropsSection/SelectCover.js","components/Crop/CropsTechsSection/CropsTechsRow/CoverCropsSection/index.js","components/Crop/CropsTechsSection/CropsTechsRow/index.js","components/Crop/CropsTechsSection/index.js","components/Crop/CropsIrrigationSection/SelectIrrigation.js","components/Crop/CropsIrrigationSection/SelectSource.js","components/Crop/CropsIrrigationSection/SelectPower.js","components/Crop/CropsIrrigationSection/CropsIrrigationRow.js","components/Crop/CropsIrrigationSection/index.js","components/Crop/NavigationBar.js","components/Crop/CropsOrganicsSection/CropsOrganicRow.js","components/Crop/CropsOrganicsSection/index.js","components/Crop/index.js","components/Equipments/Header.js","components/Equipments/Container/SearchMachineries.js","components/Equipments/Container/EquipmentRow.js","components/Equipments/Container/EquipmentsSection.js","components/Equipments/Container/index.js","components/Equipments/index.js","components/Land/Header.js","components/Land/BlocsSection/BlocRow.js","components/Land/BlocsSection/index.js","components/Land/BlocsperiSection/SelectBloc.js","components/Land/BlocsperiSection/SelectPh.js","components/Land/BlocsperiSection/SelectMoisture.js","components/Land/BlocsperiSection/SelectDrainage.js","components/Land/BlocsperiSection/SelectSoilType.js","components/Land/BlocsperiSection/ConfirmSoilType.js","components/Land/BlocsperiSection/ConfirmDevalidation.js","components/Land/BlocsperiSection/BlocperiRow.js","components/Land/BlocsperiSection/index.js","components/Land/PaddockSection/SelectCrop.js","components/Land/PaddockSection/SelectBlocperi.js","components/AdminDeleteConfirmation.js","components/Land/PaddockSection/ConfirmBlocperi.js","components/Land/PaddockSection/ConfirmCrop.js","components/Land/PaddockSection/PaddockRow.js","components/Land/PaddockSection/PaddockRowTotalArea.js","components/Land/PaddockSection/index.js","components/Land/index.js","components/Purchases/Header.js","components/Purchases/PurchasesSection/ConfirmInputs.js","components/Purchases/PurchasesSection/SearchInputs.js","utils/usePrevious.js","components/Purchases/PurchasesSection/PriceConfirmation.js","components/Purchases/PurchasesSection/CustomInput/SelectCustomType.js","components/Purchases/PurchasesSection/CustomInput/index.js","components/Purchases/PurchasesSection/PurchaseRow.js","components/Purchases/PurchasesSection/index.js","components/Purchases/index.js","components/Hedgerows/Header.js","components/Hedgerows/HedgerowsSection/SearchSpecies.js","components/Hedgerows/HedgerowsSection/HedgerowRow.js","components/Hedgerows/HedgerowsSection/index.js","components/Hedgerows/index.js","components/GhgProgram/Header.js","components/GhgProgram/GhgProgramSection/SelectProgram.js","components/GhgProgram/GhgProgramSection/SelectPeriod.js","components/GhgProgram/GhgProgramSection/GhgProgramRow.js","components/GhgProgram/GhgProgramSection/index.js","components/GhgProgram/index.js","components/LandOccupation/LandOccupationSection/ConfirmOccupation.js","components/LandOccupation/LandOccupationSection/SelectOccupation.js","components/LandOccupation/LandOccupationSection/index.js","components/LandOccupation/Header.js","components/LandOccupation/index.js","components/SelectLanguage.js","components/Header.js","components/App.js","index.js"],"names":["APP_LOAD","REDIRECT","ASYNC_START","ASYNC_END","LOGIN","LOGOUT","LOGIN_PAGE_UNLOADED","HOME_PAGE_LOADED","HOME_SERACH_RESULT","HOME_PAGE_UNLOADED","DASHBOARD_REDIRECT","SELECT_CROP","CROP_REDIRECT","SELECT_GLOBAL_PERIOD","SELECT_FARM_PERIOD","DASHBOARD_LOADED","PADDOCKS_LOADED","SELECT_PADDOCK","EQUIPMENTS_REDIRECT","PURCHASES_REDIRECT","LAND_REDIRECT","UPDATE_FARM","OPERATIONS_LOADED","OPERATION_TYPES_LOADED","SELECT_OPERATION","GLOBAL_PERIOD_LOADED","FARM_MACHINERIES_LOADED","UPDATE_FARM_MACHINERY","ADD_FARM_MACHINERY","REMOVE_FARM_MACHINERY","ADD_OPERATION","UPDATE_OPERATION","DELETE_OPERATION","FARM_INPUTS_PURCHASES_LOADED","SELECTED_INPUT_TYPE","UPDATE_FARM_INPUT_PURCHASE","ADD_FARM_INPUT_PURCHASE","REMOVE_FARM_INPUT_PURCHASE","LAND_LOADED","SET_LAND_PAGE","SET_LAND_LOADING","CROPS_LOADED","PHS_LOADED","DRAINAGES_LOADED","MOISTURES_LOADED","FREQUENCIES_LOADED","SOIL_TYPES_LOADED","UPDATE_SELECTED_PADDOCK","ADD_BLOC","UPDATE_BLOC","DELETE_BLOC","ADD_BLOCPERI","UPDATE_BLOCPERI","DELETE_BLOCPERI","ADD_PADDOCK","UPDATE_PADDOCK","DELETE_PADDOCK","UPDATE_FARM_INPUTS_PURCHASES","UPDATE_OPERATIONS","UPDATE_SELECTED_PADDOCK_STATUS","CLEAR_FARM_INPUTS_PURCHASES","SELECT_LANGUAGE","GLOBAL_LANGUAGE_LOADED","SELECT_BAR","LAND_OCCUPATION_REDIRECT","GHG_PROGRAM_REDIRECT","HEDGEROWS_REDIRECT","GLOBAL_TECHS_LOADED","GLOBAL_COVERS_LOADED","GLOBAL_PROGRAMS_LOADED","GLOBAL_SPECIES_LOADED","GLOBAL_OCCUPATIONS_LOADED","HEDGEROWS_LOADED","UPDATE_HEDGEROWS","REMOVE_HEDGEROWS","ADD_HEDGEROWS","SET_OPERATIONS","UPDATE_LOCK","GHG_PROGRAMS_LOADED","ADD_GHG_PROGRAM","UPDATE_GHG_PROGRAM","REMOVE_GHG_PROGRAM","GLOBAL_DESTRUCTIONS_LOADED","GLOBAL_IRRIGATIONS_LOADED","GLOBAL_SOURCES_LOADED","GLOBAL_POWERS_LOADED","GLOBAL_CUSTOM_TYPES_LOADED","SET_DEFAULT_PERIOD","API_ROOT","process","token","tokenPlugin","req","set","apiCatch","err","status","store","getState","common","currentUser","dispatch","type","REACT_APP_ENV","console","dir","returnRes","res","requests","url","superagent","del","use","then","catch","get","body","put","send","post","API","Auth","session","login","username","password","logout","Language","update","Users","Agronomists","search","query","Farms","limit","getOne","id","create","Lock","farmId","periodId","lock","period","lockId","unlock","Paddocks","crop","paddockId","delete","adminDelete","Operations","operationId","singleValidate","import","targetPaddockId","paddock","duplicate","validate","Canvas","FarmMachineries","FarmMachineryId","getAll","farmMachineryId","FarmInputsPurchases","inputType","getWithCrop","cropId","farmInputPurchaseId","getInputEstimated","postInputEstimated","deleteInputEstimated","NPK","check","inputId","N","P","K","Blocsperi","blocperiId","Blocs","blocId","CropsTechs","cropsTechsId","CropsResidues","cropsResiduesId","CropsIrrigations","CropsOrganic","cropsOrganicsId","LandOccupation","landOccupationId","GhgPrograms","ghgProgramId","Hedgerows","hedgerowId","Countries","Regions","countryId","OperationTypes","Periods","Machineries","Inputs","page","Prices","Quantities","Crops","Phs","Moistures","Drainages","Frequencies","SoilTypes","Languages","Covers","Programs","Species","Techs","Occupations","Destructions","Irrigations","Sources","Powers","CustomTypes","setToken","_token","i18n","detector","initReactI18next","init","detection","order","lookupLocalStorage","lookupSessionStorage","keySeparator","interpolation","escapeValue","load","fallbackLng","resources","en","translation","fr","es","promiseMiddleware","next","action","v","payload","subtype","currentView","viewChangeCounter","skipTracking","toast","promise","loading","success","error","currentState","done","usedtype","response","localStorageMiddleware","window","localStorage","setItem","sessionToken","agent","languageMiddleware","language","jwtDecode","toLowerCase","changeLanguage","setLanguage","state","inProgress","errors","defaultState","selectedFarm","Common","appLoaded","access","profile","redirectTo","tokenContent","jwt_decode","Home","farms","Farm","periods","farm","defaultPeriod","Object","keys","length","selectedPeriod","loadedCrops","forEach","item","crops","loaded","refreshFarm","selectedCrops","selectedLock","newPeriods","map","location","pathname","compareChrono","a","b","comparison","compareAlpha","sorter","data","filter","arr","sort","Crop","selectedBar","operationLoaded","selectedOperation","operations","paddocks","selectedPaddock","selectedCrop","isSelected","sortData","newData","splice","index","operationType","initDate","operation","withoutInputs","canvas","Global","selectedGlobalPeriod","operationTypes","phs","moistures","drainages","frequencies","soilTypes","languages","techs","covers","programs","species","occupations","destructions","irrigations","sources","powers","customTypes","farmMachineries","farmMachinery","FarmInputs","selectedInputType","farmInputsPurchases","farmInputPurchase","i","Land","blocsperi","blocs","selectedLandPage","bloc","deletedBloc","find","blocperi","hedgerows","hedgerow","ghgPrograms","ghgProgram","createRootReducer","history","combineReducers","router","connectRouter","form","formReducer","auth","home","global","farmInputs","land","createBrowserHistory","initialState","JSON","parse","getItem","LoginForm","persistedState","preloadedState","createStore","compose","applyMiddleware","routerMiddleware","defaultTheme","createMuiTheme","palette","primary","main","secondary","text","faded","fade","info","light","dark","warning","bio","overrides","MuiCssBaseline","html","MuiFormControl","marginNormal","marginTop","marginBottom","root","height","MuiContainer","width","MuiLinearProgress","colorPrimary","backgroundColor","grey","colorSecondary","barColorPrimary","background","barColorSecondary","MuiDialogTitle","MuiSelect","select","MuiTooltip","tooltip","fontSize","shape","borderRadius","props","MuiTextField","variant","size","color","MuiButton","Typography","FormControl","connect","setSearchResult","label","className","useState","setQuery","useEffect","timer","setTimeout","clearTimeout","TextField","fullWidth","value","onChange","event","target","InputProps","endAdornment","InputAdornment","position","IconButton","style","marginRight","padding","onClick","edge","useStyles","makeStyles","theme","ListElement","itemIndex","classes","t","useTranslation","variableListBackground","newBadge","verified","Chip","customTheme","contrastText","ListItem","button","Grid","container","alignItems","nameColumn","xs","noWrap","lastName","firstName","country","region","justify","Box","display","ItemRenderer","items","List","Paper","itemData","itemSize","itemCount","onLoad","onDashboardRedirect","withStyles","title","spacing","buttonContainer","justifyContent","intercomBoot","useIntercom","boot","intercomInit","setIntercomInit","name","Container","Button","Logo","paddingTop","alt","src","logo","renderTextField","input","meta","touched","loginError","invalid","custom","placeholder","Boolean","helperText","inputProps","autoCorrect","spellCheck","reduxForm","handleSubmit","pristine","submitting","onSubmit","direction","Field","component","disabled","marginLeft","paddingBottom","margin","to","elevation","statuses","CANVAS","INVALID","UNEXPECTED","AUTO_VALIDATED","AGRO_VALIDATED","profiles","_ADM","_AGRS","_AGR","_ENC","_AUD","lockStatuses","NOT_LOCKER","UNLOCKED","LOCKED","Permissions","dataStatus","lockStatus","requiredProfiles","isAdmin","currentProfile","isEditProfile","isCurrentProfile","some","isViewProfile","isViewProfileForStatus","dataStatuses","canEdit","canVerify","canView","this","ConfirmPeriod","open","onConfirm","onCancel","onVisualize","Dialog","disableBackdropClick","disableEscapeKeyDown","maxWidth","DialogTitle","DialogContent","dividers","DialogActions","setSelectedPeriod","setDefaultPeriod","confirmPeriodOpen","setConfirmPeriodOpen","setPeriod","Select","e","currentTarget","dataset","parseInt","MenuItem","Portal","updateDefaultPeriod","TypographyWithIcon","icon","Fragment","fontWeight","lineHeight","desc","progressValid","titleBox","progress","progressLabel","Card","CardActionArea","LinearProgress","Number","LockButton","handleCreateLock","handleLocking","handleUnlocking","LockingConfirmation","UnlockingConfirmation","setPassword","onCropCardClick","updateLock","culturesList","paper","match","lockingOpen","setLockingOpen","unlockingOpen","setUnlockingOpen","setLoading","setError","permissions","cropsList","uuid","params","align","createLock","lockingLock","unlockLock","handleUnlockingConfirm","IsMountedRef","ref","useRef","current","changeRegion","change","countries","setCountries","setLooaded","isMountedRef","useIsMountedRef","errorText","locked","getCountries","Tooltip","arrow","InputLabel","paddingRight","paddingLeft","shrink","selector","formValueSelector","regions","setRegions","getRegions","SearchAgronomist","agronomists","setAgronomists","getAgronomists","Autocomplete","closeIcon","freeSolo","options","getOptionLabel","option","renderInput","autoComplete","InputLabelProps","InitialFormState","undefined","farmName","tel","mobile","email","address","postalCode","city","agronomist","renderSearchCountry","floatingLabelText","renderFormHelper","renderSearchRegion","renderSearchAgronomist","FormHelperText","initialValues","updateFarm","values","field","Translation","test","destroyOnUnmount","enableReinitialize","topBar","actionButtons","edit","setEdit","verify","setVerify","normalizePhone","prev","replace","noValidate","createFarm","difference","k","isEqual","request","modifyFarm","normalize","toUpperCase","countryLocked","agronomistLocked","dataWoi","CardContent","redirectEquipments","redirectPurchases","redirectLand","redirectProgram","redirectHedgerows","redirectOccupation","setSelectedCrop","CropsHeader","ConfirmSingleOperation","SearchPaddockBar","handleClear","BioLogo","bioLogo","textOverflow","overflow","whiteSpace","valid","isOrganic","ConfirmPaddock","PaddockList","onClose","setOperations","selectedPaddockId","openConfirm","setOpenConfirm","setTarget","targetId","importOperations","closeButton","right","top","children","disableTypography","PaddockListModal","searchQuery","setSearchQuery","setPaddocks","getPaddocks","left","disabledTitle","SvgIcon","ConfirmValidatePaddock","addOperation","setSelectedOperation","validatePaddock","setCanvas","paddockModal","setPaddockModal","singleConfirm","setSingleConfirm","validateOpen","setValidateOpen","setSingleOperation","FormatListBulletedIcon","AddCircleIcon","ImportExportIcon","VerifiedUserIcon","ValidationErrorModal","errorList","ListItemIcon","ListItemText","LoadingSpinner","CircularProgress","cursor","handleValidatePaddock","disabledMessage","FieldWithTextAdornment","locale","separatorType","attribute","errList","format","adornment","message","toString","i18next","Intl","NumberFormat","formatToParts","part","onFocus","styles","BlankIcon","opacity","statusIcon","OperationStatusIcon","focused","displayEmpty","SelectDate","isOpen","setIsOpen","disableFuture","maxDate","minDate","handleChange","visibilty","visibility","initialFocusedDate","onOpen","autoOk","inputVariant","date","KeyboardButtonProps","createFilterOptions","SearchEquipment","currentMachinery","noteMachinery","equipments","setEquipments","setOpen","getFarmMachineries","forcePopupIcon","popupIcon","filterOptions","filtered","push","dbData","inputValue","missing","givenName","renderOption","PurchaseTab","operationInputs","selected","count","titleList","operationInput","quantity","operationUnit","SearchFarmInputsPurchases","selectedInputsType","note","setFarmInputsPurchases","getFarmInputsPurchases","disableClearable","getOptionDisabled","SearchGlobalInputsBar","AddFarmInputPurchase","onAdd","ConfirmFarmInputPurchase","usedFarmInputPurchase","machinery","inputs","PurchaseList","setFarmInputPurchase","selectedInput","setSelectedInput","setUsedFarmInputPurchase","openAdd","setOpenAdd","onSelectMachinery","handleAddFarmInputPurchase","requestBody","price","createPurchase","PurchaseListModal","setInputs","searchInputs","getInputs","DeleteConfirmation","QuantityConfirmation","min","max","unit","setQuantity","OrganicModal","passedYears","setPassedYears","percentage","setPercentage","changed","setChanged","setErrors","validateData","useCallback","handleCreate","reqBody","cropsOrganics","fertiliser","OperationInputsRow","purchase","handleInputErrors","inputErrors","onInputsChange","setEditing","setCheckStatus","setId","operationPrice","setOperationPrice","totalQuantity","setTotalQuantity","totalPrice","setTotalPrice","quantityMin","setQuantityMin","quantityMax","setQuantityMax","currency","setCurrency","setStatus","setNote","confirmOpen","setConfirmOpen","confirmed","setConfirmed","openPurchaseModal","setOpenPurchaseModal","deleteOpen","setDeleteOpen","organicOpen","setOrganicOpen","String","quantities","setOperationInputErrors","invalidErrors","parseFloat","area","toFixed","handleDelete","handleFarmInputPurchaseChange","selectedFarmInputPurchase","hasOrganicData","handleAddDuplicate","boxShadow","OperationInputsSection","purchases","SearchGlobalMachineryBar","AddFarmMachinery","setGivenName","ConfirmFarmMachinery","machineries","MachineryList","gName","setFarmMachinery","selectedMachinery","setSelectedMachinery","usedFarmMachinery","setUsedFarmMachinery","handleAddMachinery","MachineryListModal","setMachineries","getMachineries","CancelConfirmation","border","focusedCard","notFocusedCard","cannotEdit","inactiveOverlay","borderWidth","zIndex","activeOverlay","operationMenu","operationContainer","fieldContainer","menuButton","remove","addNewContainer","containerActive","activeNote","inactiveAddOperation","validateButton","cancelButton","updateOperation","deleteOperation","updateSelectedPaddockStatus","setFocused","dateIsOpen","setDateIsOpen","setSelectedInputsType","setInputErrors","editing","hovered","setHovered","openMachineryModal","setOpenMachineryModal","hasError","setHasError","canValidate","setCanValidate","cancelOpen","setCancelOpen","checkStatus","setDate","setInitDate","setType","setNoteMachinery","passageNumber","setPassageNumber","time","setTime","consumption","setConsumption","setPrice","defaultPrice","setDefaultPrice","useDefaultPrice","setUseDefaultPrice","seeds","setSeeds","fertilisers","setFertilisers","pesticides","setPesticides","setLock","operationInputTypes","generateRequestBody","newInput","handleOperationSelection","isInvalid","seed","pesticide","handleEquipmentChange","handleSave","saveOperation","handleCancelled","removeOperation","handleCopy","toastId","handleAddOperation","changeOperation","onMouseOver","onMouseOut","stopPropagation","Date","startAdornment","Checkbox","checked","multiline","rows","rowsMax","createBody","validateOperation","createOperation","clsx","transform","alignContent","setOperationTypes","updateOperations","addButtonContainer","description","validationErrors","setValidationErrors","openErrors","setOpenErrors","validationLoading","setValidationLoading","onbeforeunload","getOperationTypes","validateOperations","operItems","updatePaddock","textField","paddockArea","setPaddockArea","paddockYield","setPaddockYield","isAccurateYield","setIsAccurateYield","yield","newYield","newArea","changePaddock","RadioGroup","row","FormControlLabel","control","Radio","outlinedContainer","underline","borderBottom","breakline","typoMarginRight","typoMarginLeft","isSold","setIsSold","soldArea","setSoldArea","soldQuantity","setSoldQuantity","totalArea","setTotalArea","pageLoading","setPageLoading","checkValidate","handleUpdate","cropsResidues","sold","updateCropResidue","mounted","getCropsResidues","getErrors","currentError","helperError","useStyle","mainOutlinedContainer","blocTitle","TillageSection","changedTechs","setChangedTechs","tech","setTech","amount","setAmount","maxYears","setMaxYears","checkValidateSoilWork","handleUpdateSoilWork","cropsTechs","soilWork","updateCropTechs","ended","exportedTitle","CoverCropsSection","changedCovers","setChangedCovers","cover","setCover","biomass","setBiomass","biodiversity","setBiodiversity","leguminous","setLeguminous","sowingDate","setSowingDate","destructionDate","setDestructionDate","destruction","setDestruction","exported","setExported","sowingDateIsOpen","setSowingDateIsOpen","destructionDateIsOpen","setDestructionDateIsOpen","residuesExported","checkValidateLandCover","handleUpdateLandCover","landCover","setBloc","setSoilWork","coverCrops","setCoverCrops","onTechsLoaded","onCoversLoaded","onDestructionsLoaded","setCropsTechs","getTechsLoaded","getCoversLoaded","getDestructionsLoaded","getCropsTechs","cropsTechsList","cropIrrigation","changedIrrigation","setChangedIrrigation","irrigation","setIrrigation","source","setSource","depth","setDepth","horizontal","setHorizontal","power","setPower","total","setTotal","proportion","setProportion","updateIrrigation","onIrrigationsLoaded","onSourcesLoaded","onPowersLoaded","cropsIrrigations","setCropsIrrigations","getCropsIrrigations","cropIrrigations","getIrrigations","getSources","getPowers","cropsIrrigationsList","setSelectedPaddock","setSelectedBar","tab","borderColor","textAlign","maxHeight","tabStatic","minWidth","barStart","barEnd","barStyle","borderTop","borderLeft","borderRight","active","add","getPaddock","newValue","rowContainer","checkboxes","confirmInputs","CropsOrganicRow","organic","setCropsOrganics","setFertiliser","notDeletable","setNotDeletable","flagDelete","updateCropOrganic","handleStatus","deleteCropOrganic","getCropsOrganics","cropsOrganicsList","content","CropHeader","EquipmentsHeader","SearchMachineries","onInputChange","getOptionSelected","opt","usedByFarm","updateFarmMachinery","addFarmMachinery","removeFarmMachinery","setMachinery","thirdParty","setThirdParty","setBody","isUsed","setIsUsed","errorsG","updateMachinery","deleteMachinery","createMachinery","EquipmentSection","operationName","containers","EquipmentsSection","Equipments","React","Component","setLandPage","titleContainer","tabTypes","addBloc","updateBloc","deleteBloc","setName","setArea","nameInput","changeBloc","actionType","createBloc","focus","inputRef","removeBloc","soilTypesLoad","loadSoilTypes","blocList","ListboxProps","ph","moisture","drainage","soilType","ConfirmSoilType","ConfirmDevalidation","addBlocperi","updateBlocperi","deleteBlocperi","setSoilType","orga","setOrga","setPh","setDrainage","setMoisture","confirmSoilTypeOpen","setConfirmSoilTypeOpen","confirmDevalidationOpen","setConfirmDevalidationOpen","changeBlocperi","createBlocperi","blocIndex","removeBlocperi","phsLoad","moisturesLoad","drainagesLoad","frequenciesLoad","loadPhs","loadMoistures","loadDrainages","loadFrequencies","blocperiList","setValue","onBlur","d","AdminDeleteConfirmation","ConfirmBlocperi","ConfirmCrop","addPaddock","deletePaddock","radioGroup","setCrop","setBlocperi","adminDeleteOpen","setAdminDeleteOpen","setIsOrganic","isSecondCrop","setIsSecondCrop","blocperiConfirmOpen","setBlocperiConfirmOpen","cropConfirmOpen","setCropConfirmOpen","removePaddock","createPaddock","notchedOutline","cropLoad","getCrops","paddockList","loadLand","loadPaddocks","loadBlocsperi","loadBlocs","Promise","all","BlocsSection","setInputType","inputEstimated","setInputEstimated","purchasesTypes","handleConfirmInputs","ListboxComponent","forwardRef","onScroll","child","SearchInputs","setPage","dataEnd","setDataEnd","initialLoaded","setInitialLoaded","prevQuery","usePrevious","getInputsPage","list","scrollTop","clientHeight","scrollHeight","PriceConfirmation","setCustomTypes","selectedType","npk","getCustomTypes","rightMargin","CustomInput","requiresNpk","setRequiresNpk","useDefaultName","setUseDefaultName","setUnit","setN","setP","setK","getComposition","exist","updateFarmInputPurchase","addFarmInputPurchase","deleteFarmInputPurchase","prevSelectedInputTypeRef","prevSelectedInputType","isGrouped","setIsGrouped","grouped","setGrouped","priceMin","setPriceMin","priceMax","setPriceMax","setLast","average","setAverage","isAverage","setIsAverage","setInput","customOpen","setCustomOpen","composition","setComposition","prices","last","inputName","inputUnit","inputOperationUnit","inputPrice","clear","updatePurchase","errCheck","NLabel","PLabel","KLabel","deletePurchase","updateFarmInputsPurchases","clearFarmInputsPurchases","validatePurchases","inputEstimation","SearchSpecies","setSpecies","getSpecies","trees","val","addHedgerow","updateHedgerow","deleteHedgerow","setDifference","lastYearSize","setLastYearSize","currentYearSize","setCurrentYearSize","lastYear","changeHedgerow","createHedgerow","removeHedgerow","getHedgerowsLoaded","hedgerowsList","start","end","baselinePeriod","onGhgProgramCreate","onGhgProgramDelete","program","setProgram","setBaselinePeriod","startPeriod","setStartPeriod","endPeriod","setEndPeriod","deleteGhgProgram","createGhgProgram","onGhgProgramsLoaded","onProgramsLoaded","onPeriodLoaded","getGhgProgram","getProgramsLoaded","GhgProgram","ConfirmOccupation","toConfirm","onOccupationsLoaded","changedOccupation","setChangedOccupation","occupation","setOccupation","confirmValue","setConfirmValue","landOccupation","updateLandOccupation","getLandOccupation","getOccupationsLoaded","iso3languages","EN","FR","DE","ES","IT","onLanguagesLoaded","setSelectedLanguage","getLoadedLanguages","onSelectChange","prevLanguage","code","useLocation","crumbs","setCrumbs","generateCrumbs","routeArr","uri","RouterLink","split","handleLogout","navigator","Breadcrumbs","separator","App","nextProps","onRedirect","hotjar","initialize","PrivateRoute","isLoggedIn","computedMatch","FarmRoute","ThemeProvider","CssBaseline","libInstance","moment","utils","MomentUtils","exact","path","render","routeProps","Login","appName","withTranslation","subscribe","stringify","ReactDOM","appId","reverseOrder","toastOptions","duration","iconTheme","document","getElementById"],"mappings":"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","file":"static/js/main.4332a27d.chunk.js","sourcesContent":["/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nexport const APP_LOAD = \"APP_LOAD\";\nexport const REDIRECT = \"REDIRECT\";\nexport const ASYNC_START = \"ASYNC_START\";\nexport const ASYNC_END = \"ASYNC_END\";\nexport const LOGIN = \"LOGIN\";\nexport const LOGOUT = \"LOGOUT\";\nexport const LOGIN_PAGE_UNLOADED = \"LOGIN_PAGE_UNLOADED\";\nexport const HOME_PAGE_LOADED = \"HOME_PAGE_LOADED\";\nexport const HOME_SERACH_RESULT = \"HOME_SERACH_RESULT\";\nexport const HOME_PAGE_UNLOADED = \"HOME_PAGE_UNLOADED\";\nexport const DASHBOARD_REDIRECT = \"DASHBOARD_REDIRECT\";\nexport const SELECT_CROP = \"SELECT_CROP\";\nexport const CROP_REDIRECT = \"CROP_REDIRECT\";\nexport const SELECT_GLOBAL_PERIOD = \"SELECT_GLOBAL_PERIOD\";\nexport const SELECT_FARM_PERIOD = \"SELECT_FARM_PERIOD\";\nexport const DASHBOARD_LOADED = \"DASHBOARD_LOADED\";\nexport const DASHBOARD_UNLOADED = \"DASHBOARD_UNLOADED\";\nexport const PADDOCKS_LOADED = \"PADDOCKS_LOADED\";\nexport const PADDOCKS_UNLOADED = \"PADDOCKS_UNLOADED\";\nexport const SELECT_PADDOCK = \"SELECT_PADDOCK\";\nexport const PADDOCK_LOADED = \"PADDOCK_LOADED\";\nexport const PADDOCK_UNLOADED = \"PADDOCK_UNLOADED\";\nexport const PADDOCK_NAME = \"PADDOCK_NAME\";\nexport const PADDOCK_AREA = \"PADDOCK_AREA\";\nexport const PADDOCK_YIELD = \"PADDOCK_YIELD\";\nexport const PADDOCK_SELECT_OPERATION = \"PADDOCK_SELECT_OPERATION\";\nexport const EQUIPMENTS_REDIRECT = \"EQUIPMENTS_REDIRECT\";\nexport const PURCHASES_REDIRECT = \"PURCHASES_REDIRECT\";\nexport const LAND_REDIRECT = \"LAND_REDIRECT\";\nexport const UPDATE_FARM = \"UPDATE_FARM\";\nexport const OPERATIONS_LOADED = \"OPERATIONS_LOADED\";\nexport const OPERATION_TYPES_LOADED = \"OPERATION_TYPES_LOADED\";\nexport const SELECT_OPERATION = \"SELECT_OPERATION\";\nexport const PERIOD_LOADED = \"SELECT_OPERATION\";\nexport const GLOBAL_PERIOD_LOADED = \"GLOBAL_PERIOD_LOADED\";\nexport const FARM_MACHINERIES_LOADED = \"FARM_MACHINERIES_LOADED\";\nexport const UPDATE_FARM_MACHINERY = \"UPDATE_FARM_MACHINERY\";\nexport const ADD_FARM_MACHINERY = \"ADD_FARM_MACHINERY\";\nexport const REMOVE_FARM_MACHINERY = \"REMOVE_FARM_MACHINERY\";\nexport const ADD_OPERATION = \"ADD_OPERATION\";\nexport const UPDATE_OPERATION = \"UPDATE_OPERATION\";\nexport const DELETE_OPERATION = \"DELETE_OPERATION\";\nexport const FARM_INPUTS_PURCHASES_LOADED = \"FARM_INPUTS_PURCHASES_LOADED\";\nexport const SELECTED_INPUT_TYPE = \"SELECTED_INPUT_TYPE\";\nexport const UPDATE_FARM_INPUT_PURCHASE = \"UPDATE_FARM_INPUT_PURCHASE\";\nexport const ADD_FARM_INPUT_PURCHASE = \"ADD_FARM_INPUT_PURCHASE\";\nexport const REMOVE_FARM_INPUT_PURCHASE = \"REMOVE_FARM_INPUT_PURCHASE\";\nexport const LAND_LOADED = \"LAND_LOADED\";\nexport const SET_LAND_PAGE = \"SET_LAND_PAGE\";\nexport const SET_LAND_LOADING = \"SET_LAND_LOADING\";\nexport const CROPS_LOADED = \"CROPS_LOADED\";\nexport const PHS_LOADED = \"PHS_LOADED\";\nexport const DRAINAGES_LOADED = \"DRAINAGES_LOADED\";\nexport const MOISTURES_LOADED = \"MOISTURES_LOADED\";\nexport const FREQUENCIES_LOADED = \"FREQUENCIES_LOADED\";\nexport const SOIL_TYPES_LOADED = \"SOIL_TYPES_LOADED\";\nexport const UPDATE_SELECTED_PADDOCK = \"UPDATE_SELECTED_PADDOCK\";\nexport const ADD_BLOC = \"ADD_BLOC\";\nexport const UPDATE_BLOC = \"UPDATE_BLOC\";\nexport const DELETE_BLOC = \"DELETE_BLOC\";\nexport const ADD_BLOCPERI = \"ADD_BLOCPERI\";\nexport const UPDATE_BLOCPERI = \"UPDATE_BLOCPERI\";\nexport const DELETE_BLOCPERI = \"DELETE_BLOCPERI\";\nexport const ADD_PADDOCK = \"ADD_PADDOCK\";\nexport const UPDATE_PADDOCK = \"UPDATE_PADDOCK\";\nexport const DELETE_PADDOCK = \"DELETE_PADDOCK\";\nexport const UPDATE_FARM_INPUTS_PURCHASES = \"UPDATE_FARM_INPUTS_PURCHASES\";\nexport const UPDATE_OPERATIONS = \"UPDATE_OPERATIONS\";\nexport const UPDATE_SELECTED_PADDOCK_STATUS = \"UPDATE_SELECTED_PADDOCK_STATUS\";\nexport const CLEAR_FARM_INPUTS_PURCHASES = \"CLEAR_FARM_INPUTS_PURCHASES\";\nexport const SELECT_LANGUAGE = \"SELECT_LANGUAGE\";\nexport const GLOBAL_LANGUAGE_LOADED = \"GLOBAL_LANGUAGE_LOADED\";\nexport const SELECT_BAR = \"SELECT_BAR\";\nexport const LAND_OCCUPATION_REDIRECT = \"LAND_OCCUPATION_REDIRECT\";\nexport const GHG_PROGRAM_REDIRECT = \"GHG_PROGRAM_REDIRECT\";\nexport const HEDGEROWS_REDIRECT = \"HEDGEROWS_REDIRECT\";\nexport const GLOBAL_TECHS_LOADED = \"GLOBAL_TECHS_LOADED\";\nexport const GLOBAL_COVERS_LOADED = \"GLOBAL_COVERS_LOADED\";\nexport const GLOBAL_PROGRAMS_LOADED = \"GLOBAL_PROGRAMS_LOADED\";\nexport const GLOBAL_SPECIES_LOADED = \"GLOBAL_SPECIES_LOADED\";\nexport const GLOBAL_OCCUPATIONS_LOADED = \"GLOBAL_OCCUPATIONS_LOADED\";\nexport const HEDGEROWS_LOADED = \"HEDGEROWS_LOADED\";\nexport const UPDATE_HEDGEROWS = \"UPDATE_HEDGEROWS\";\nexport const REMOVE_HEDGEROWS = \"REMOVE_HEDGEROWS\";\nexport const ADD_HEDGEROWS = \"ADD_HEDGEROWS\";\nexport const SET_OPERATIONS = \"SET_OPERATIONS\";\nexport const UPDATE_LOCK = \"UPDATE_LOCK\";\nexport const GHG_PROGRAMS_LOADED = \"GHG_PROGRAMS_LOADED\";\nexport const ADD_GHG_PROGRAM = \"ADD_GHG_PROGRAM\";\nexport const UPDATE_GHG_PROGRAM = \"UPDATE_GHG_PROGRAM\";\nexport const REMOVE_GHG_PROGRAM = \"REMOVE_GHG_PROGRAM\";\nexport const GLOBAL_DESTRUCTIONS_LOADED = \"GLOBAL_DESTRUCTIONS_LOADED\";\nexport const GLOBAL_IRRIGATIONS_LOADED = \"GLOBAL_IRRIGATIONS_LOADED\";\nexport const GLOBAL_SOURCES_LOADED = \"GLOBAL_SOURCES_LOADED\";\nexport const GLOBAL_POWERS_LOADED = \"GLOBAL_POWERS_LOADED\";\nexport const GLOBAL_CUSTOM_TYPES_LOADED = \"GLOBAL_CUSTOM_TYPES_LOADED\";\nexport const SET_DEFAULT_PERIOD = \"SET_DEFAULT_PERIOD\";\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport superagent from \"superagent\";\nimport { LOGOUT } from \"./constants/actionTypes\";\nimport { store } from \"./store\";\n\n// Deployment API URL ENDPOINT from .env\nconst API_ROOT = process.env.REACT_APP_API_BASE_URL;\n\nlet token = null;\n\n// Token Filler\nconst tokenPlugin = req => {\n if (token) {\n req.set(\"Authorization\", `Bearer ${token}`);\n }\n};\n\n// Manage Catched Errors\nconst apiCatch = err => {\n if (err.status === 401 && store.getState().common.currentUser != null) {\n store.dispatch({ type: LOGOUT });\n }\n if (process.env.REACT_APP_ENV === \"development\") console.dir(err);\n throw err;\n};\n\n//Manage Return\nconst returnRes = res => {\n return res;\n};\n\n// Base API service\nconst requests = {\n del: url =>\n superagent\n .del(`${API_ROOT}${url}`)\n .use(tokenPlugin)\n .then(returnRes)\n .catch(apiCatch),\n get: url =>\n superagent\n .get(`${API_ROOT}${url}`)\n .use(tokenPlugin)\n .then(returnRes)\n .catch(apiCatch),\n put: (url, body) =>\n superagent\n .put(`${API_ROOT}${url}`)\n .send(body)\n .use(tokenPlugin)\n .then(returnRes)\n .catch(apiCatch),\n post: (url, body) =>\n superagent\n .post(`${API_ROOT}${url}`)\n .send(body)\n .use(tokenPlugin)\n .then(returnRes)\n .catch(apiCatch)\n};\n\n// API devided per class\nconst Auth = {\n session: () => requests.get(\"/user\"),\n login: (username, password) =>\n requests.post(\"/users/login\", { username, password }),\n logout: () => requests.del(\"/user/session\"),\n Language: {\n update: body => requests.put(\"/user/language\", body)\n }\n};\n\nconst Users = {\n Agronomists: {\n get: () => requests.get(\"/users/agronomists\"),\n search: query => requests.get(`/users/agronomists?query=${query}`)\n }\n};\n\nconst Farms = {\n get: limit => requests.get(`/farms?limit=${limit}`),\n search: query => requests.get(`/farms?query=${query}`),\n getOne: id => requests.get(`/farm/${id}`),\n update: (id, body) => requests.put(`/farm/${id}`, body),\n create: body => requests.post(\"/farm\", body),\n Lock: {\n create: (farmId, periodId) =>\n requests.post(`/farm/${farmId}/lock`, {\n lock: {\n period: {\n id: periodId\n }\n }\n }),\n lock: (farmId, lockId) =>\n requests.put(`/farm/${farmId}/lock/${lockId}`, { lock: { status: 2 } }),\n unlock: (farmId, lockId, password) =>\n requests.put(`/farm/${farmId}/lock/${lockId}`, {\n lock: { status: 1, password: password }\n })\n },\n Paddocks: {\n get: (farmId, periodId = null) =>\n requests.get(\n `/farm/${farmId}/paddocks${periodId ? `?periodId=${periodId}` : \"\"}`\n ),\n create: (farmId, body) => requests.post(`/farm/${farmId}/paddock`, body),\n search: (farmId, period, crop) =>\n requests.get(\n `/farm/${farmId}/paddocks?periodId=${period}&cropId=${crop}`\n ),\n update: (farmId, paddockId, body) =>\n requests.put(`/farm/${farmId}/paddock/${paddockId}`, body),\n delete: (farmId, paddockId) =>\n requests.del(`/farm/${farmId}/paddock/${paddockId}`),\n adminDelete: (farmId, paddockId) =>\n requests.del(`/farm/${farmId}/paddock/${paddockId}?admin=1`),\n Operations: {\n get: (farmId, paddockId) =>\n requests.get(`/farm/${farmId}/paddock/${paddockId}/operations`),\n update: (farmId, paddockId, operationId, body) =>\n requests.put(\n `/farm/${farmId}/paddock/${paddockId}/operation/${operationId}`,\n body\n ),\n singleValidate: (farmId, paddockId, operationId, body) =>\n requests.put(\n `/farm/${farmId}/paddock/${paddockId}/operation/${operationId}/validate`,\n body\n ),\n import: (farmId, paddockId, targetPaddockId) =>\n requests.put(`/farm/${farmId}/paddock/${paddockId}/operations/import`, {\n paddock: { id: targetPaddockId }\n }),\n duplicate: (farmId, paddockId, operationId) =>\n requests.get(\n `/farm/${farmId}/paddock/${paddockId}/operation/${operationId}/copy`\n ),\n create: (farmId, paddockId, body) =>\n requests.post(`/farm/${farmId}/paddock/${paddockId}/operation`, body),\n delete: (farmId, paddockId, operationId) =>\n requests.del(\n `/farm/${farmId}/paddock/${paddockId}/operation/${operationId}`\n ),\n validate: (farmId, paddockId) =>\n requests.put(\n `/farm/${farmId}/paddock/${paddockId}/operations/validate`\n ),\n Canvas: {\n delete: (farmId, paddockId) =>\n requests.del(`/farm/${farmId}/paddock/${paddockId}/operations/canvas`)\n }\n }\n },\n FarmMachineries: {\n get: (farmId, periodId, operationId) =>\n requests.get(\n `/farm/${farmId}/farmMachineries?periodId=${periodId}&operationTypeId=${operationId}`\n ),\n getOne: (farmId, FarmMachineryId) =>\n requests.get(`/farm/${farmId}/farmMachinery/${FarmMachineryId}`),\n getAll: (farmId, periodId) =>\n requests.get(`/farm/${farmId}/farmMachineries?periodId=${periodId}`),\n search: (farmId, periodId, operationId, query) =>\n requests.get(\n `/farm/${farmId}/farmMachineries?periodId=${periodId}&operationType=${operationId}&query=${query}`\n ),\n update: (farmId, farmMachineryId, body) =>\n requests.put(`/farm/${farmId}/farmMachinery/${farmMachineryId}`, body),\n create: (farmId, body) =>\n requests.post(`/farm/${farmId}/farmMachinery`, body),\n delete: (farmId, farmMachineryId) =>\n requests.del(`/farm/${farmId}/farmMachinery/${farmMachineryId}`)\n },\n FarmInputsPurchases: {\n get: (farmId, inputType, periodId) =>\n requests.get(\n `/farm/${farmId}/farmInputsPurchases/${inputType}?periodId=${periodId}`\n ),\n getWithCrop: (farmId, inputType, periodId, cropId) =>\n requests.get(\n `/farm/${farmId}/farmInputsPurchases/${inputType}?periodId=${periodId}&cropId=${cropId}`\n ),\n getOne: (farmId, inputType, farmInputPurchaseId) =>\n requests.get(\n `/farm/${farmId}/farmInputPurchase/${inputType}/${farmInputPurchaseId}`\n ),\n getInputEstimated: (farmId, periodId) =>\n requests.get(`/farm/${farmId}/inputEstimation?periodId=${periodId}`),\n postInputEstimated: (farmId, periodId) =>\n requests.post(`/farm/${farmId}/inputEstimation?periodId=${periodId}`),\n deleteInputEstimated: (farmId, periodId) =>\n requests.del(`/farm/${farmId}/inputEstimation?periodId=${periodId}`),\n update: (farmId, inputType, farmInputPurchaseId, body) =>\n requests.put(\n `/farm/${farmId}/farmInputPurchase/${inputType}/${farmInputPurchaseId}`,\n body\n ),\n create: (farmId, inputType, body) =>\n requests.post(`/farm/${farmId}/farmInputPurchase/${inputType}`, body),\n delete: (farmId, inputType, farmInputPurchaseId) =>\n requests.del(\n `/farm/${farmId}/farmInputPurchase/${inputType}/${farmInputPurchaseId}`\n ),\n validate: (farmId, inputType, periodId) =>\n requests.put(\n `/farm/${farmId}/farmInputsPurchases/${inputType}/validate?periodId=${periodId}`\n ),\n NPK: {\n check: (farmId, periodId, inputId, N, P, K) =>\n requests.get(\n `/farm/${farmId}/input/npk?periodId=${periodId}&fertId=${inputId}&N=${N}&P=${P}&K=${K}`\n )\n }\n },\n Blocsperi: {\n get: (farmId, periodId) =>\n requests.get(`/farm/${farmId}/blocperi?periodId=${periodId}`),\n create: (farmId, body) => requests.post(`/farm/${farmId}/blocperi`, body),\n update: (farmId, blocperiId, body) =>\n requests.put(`/farm/${farmId}/blocperi/${blocperiId}`, body),\n delete: (farmId, blocperiId) =>\n requests.del(`/farm/${farmId}/blocperi/${blocperiId}`)\n },\n Blocs: {\n get: (farmId, periodId) =>\n requests.get(`/farm/${farmId}/blocs?periodId=${periodId}`),\n create: (farmId, body) => requests.post(`/farm/${farmId}/bloc`, body),\n update: (farmId, blocId, body) =>\n requests.put(`/farm/${farmId}/bloc/${blocId}`, body),\n delete: (farmId, blocId) => requests.del(`/farm/${farmId}/bloc/${blocId}`)\n },\n CropsTechs: {\n get: (farmId, periodId, cropId) =>\n requests.get(\n `/farm/${farmId}/cropsTechs?cropId=${cropId}&periodId=${periodId}`\n ),\n update: (farmId, cropsTechsId, body) =>\n requests.put(`/farm/${farmId}/cropsTechs/${cropsTechsId}`, body)\n },\n CropsResidues: {\n get: (farmId, periodId, cropId) =>\n requests.get(\n `/farm/${farmId}/cropsResidues?cropId=${cropId}&periodId=${periodId}`\n ),\n update: (farmId, cropsResiduesId, body) =>\n requests.put(`/farm/${farmId}/cropsResidues/${cropsResiduesId}`, body)\n },\n CropsIrrigations: {\n get: (farmId, periodId, cropId) =>\n requests.get(\n `/farm/${farmId}/cropIrrigations?cropId=${cropId}&periodId=${periodId}`\n ),\n update: (farmId, cropsResiduesId, body) =>\n requests.put(`/farm/${farmId}/cropIrrigation/${cropsResiduesId}`, body)\n },\n CropsOrganic: {\n get: (farmId, periodId, cropId) =>\n requests.get(\n `/farm/${farmId}/cropsOrganics?cropId=${cropId}&periodId=${periodId}`\n ),\n create: (farmId, periodId, cropId, body) =>\n requests.post(\n `/farm/${farmId}/cropsOrganics?periodId=${periodId}&cropId=${cropId}`,\n body\n ),\n update: (farmId, cropsOrganicsId, body) =>\n requests.put(`/farm/${farmId}/cropsOrganics/${cropsOrganicsId}`, body),\n delete: (farmId, cropsOrganicsId) =>\n requests.del(`/farm/${farmId}/cropsOrganics/${cropsOrganicsId}`)\n },\n LandOccupation: {\n get: (farmId, periodId) =>\n requests.get(`/farm/${farmId}/landOccupation?periodId=${periodId}`),\n update: (farmId, landOccupationId, body) =>\n requests.put(`/farm/${farmId}/landOccupation/${landOccupationId}`, body)\n },\n GhgPrograms: {\n get: farmId => requests.get(`/farm/${farmId}/ghgPrograms`),\n create: (farmId, body) => requests.post(`/farm/${farmId}/ghgProgram`, body),\n update: (farmId, ghgProgramId, body) =>\n requests.put(`/farm/${farmId}/ghgProgram/${ghgProgramId}`, body),\n delete: (farmId, ghgProgramId) =>\n requests.del(`/farm/${farmId}/ghgProgram/${ghgProgramId}`)\n },\n Hedgerows: {\n get: (farmId, periodId) =>\n requests.get(`/farm/${farmId}/hedgerows?periodId=${periodId}`),\n create: (farmId, body) => requests.post(`/farm/${farmId}/hedgerows`, body),\n update: (farmId, hedgerowId, body) =>\n requests.put(`/farm/${farmId}/hedgerows/${hedgerowId}`, body),\n delete: (farmId, hedgerowId) =>\n requests.del(`/farm/${farmId}/hedgerows/${hedgerowId}`)\n }\n};\n\nconst Machineries = {\n get: (operationId, periodId, farmId) =>\n requests.get(\n `/machineries?operationTypeId=${operationId}&periodId=${periodId}&farmId=${farmId}`\n ),\n search: (operationId, periodId, farmId, query) =>\n requests.get(\n `/machineries?operationTypeId=${operationId}&periodId=${periodId}&farmId=${farmId}&query=${query}`\n )\n};\n\nconst Inputs = {\n get: (inputType, periodId, farmId) =>\n requests.get(\n `/inputs/${inputType}?periodId=${periodId}&farmId=${farmId}&limit=50`\n ),\n search: (inputType, periodId, farmId, query, page = 0) =>\n requests.get(\n `/inputs/${inputType}?periodId=${periodId}&farmId=${farmId}&query=${query}&page=${page}&limit=50`\n ),\n Prices: {\n get: (inputType, inputId, periodId, farmId) =>\n requests.get(\n `/input/${inputType}/${inputId}/prices?periodId=${periodId}&farmId=${farmId}`\n )\n },\n Quantities: {\n get: (inputType, inputId, periodId) =>\n requests.get(\n `/input/${inputType}/${inputId}/quantities?periodId=${periodId}`\n )\n }\n};\n\nconst Countries = {\n get: () => requests.get(\"/countries\"),\n search: query => requests.get(`/countries?query=${query}`)\n};\n\nconst Regions = {\n get: countryId => requests.get(`/country/${countryId}/regions`),\n search: (countryId, query) =>\n requests.get(`/country/${countryId}/regions?query=${query}`)\n};\n\nconst OperationTypes = {\n get: () => requests.get(\"/operation-types\")\n};\n\nconst Periods = {\n get: farmId => requests.get(`/periods?farmId=${farmId}`)\n};\n\nconst Crops = {\n get: () => requests.get(\"/crops\")\n};\n\nconst Phs = {\n get: () => requests.get(\"/ph\")\n};\n\nconst Moistures = {\n get: () => requests.get(\"/moistures\")\n};\n\nconst Drainages = {\n get: () => requests.get(\"/drainages\")\n};\n\nconst Frequencies = {\n get: () => requests.get(\"/frequencies\")\n};\n\nconst SoilTypes = {\n get: () => requests.get(\"/soiltypes\")\n};\n\nconst Languages = {\n get: () => requests.get(\"/languages\")\n};\n\nconst Techs = {\n get: () => requests.get(\"/techs\")\n};\n\nconst Covers = {\n get: () => requests.get(\"/covers\")\n};\n\nconst Programs = {\n get: () => requests.get(\"/programs\")\n};\n\nconst Species = {\n get: () => requests.get(\"/trees\"),\n search: query => requests.get(`/trees?query=${query}`)\n};\n\nconst Occupations = {\n get: () => requests.get(\"/occupations\")\n};\n\nconst Destructions = {\n get: () => requests.get(\"/destructions\")\n};\n\nconst Irrigations = {\n get: () => requests.get(\"/irrigations\")\n};\n\nconst Sources = {\n get: () => requests.get(\"/sources\")\n};\n\nconst Powers = {\n get: () => requests.get(\"/powers\")\n};\n\nconst CustomTypes = {\n get: farmId => requests.get(`/customTypes?farmId=${farmId}`)\n};\n\nconst API = {\n Auth,\n Users,\n Farms,\n Countries,\n Regions,\n OperationTypes,\n Periods,\n Machineries,\n Inputs,\n Crops,\n Phs,\n Moistures,\n Drainages,\n Frequencies,\n SoilTypes,\n Languages,\n Covers,\n Programs,\n Species,\n Techs,\n Occupations,\n Destructions,\n Irrigations,\n Sources,\n Powers,\n CustomTypes,\n setToken: _token => {\n token = _token;\n }\n};\n\nexport default API;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport i18n from \"i18next\";\nimport detector from \"i18next-browser-languagedetector\";\nimport { initReactI18next } from \"react-i18next\";\nimport fr from \"./locale/fr/fr.json\";\nimport en from \"./locale/en/en.json\";\nimport es from \"./locale/es/es.json\";\n\ni18n\n .use(detector)\n .use(initReactI18next)\n .init({\n detection: {\n order: [\"localStorage\", \"sessionStorage\", \"navigator\"],\n lookupLocalStorage: \"i18nextLng\",\n lookupSessionStorage: \"i18nextLng\",\n },\n keySeparator: \".\",\n interpolation: {\n escapeValue: false,\n },\n load: \"languageOnly\",\n fallbackLng: \"en\",\n resources: {\n en: { translation: en },\n fr: { translation: fr },\n es: { translation: es },\n },\n });\nexport default i18n;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport agent from \"./agent\";\nimport { ASYNC_START, ASYNC_END, LOGIN, LOGOUT, APP_LOAD } from \"./constants/actionTypes\";\nimport i18n from \"./i18n\";\nimport jwtDecode from \"jwt-decode\";\n\n//Notification\nimport toast from \"react-hot-toast\";\n\nconst promiseMiddleware = (store) => (next) => (action) => {\n if (isPromise(action.payload)) {\n store.dispatch({ type: ASYNC_START, subtype: action.type });\n\n const currentView = store.getState().viewChangeCounter;\n const skipTracking = action.skipTracking;\n\n if (action.type === \"LOGIN\") {\n toast.promise(action.payload, {\n loading: \"Loading...\",\n success: \"Succesfully logged in\",\n error: \"Error while logging in\",\n });\n }\n\n action.payload\n .then((res) => {\n const currentState = store.getState();\n if (!skipTracking && currentState.viewChangeCounter !== currentView) {\n return;\n }\n action.done = true;\n action.payload = res.body;\n store.dispatch({\n type: ASYNC_END,\n usedtype: action.type,\n promise: action.payload,\n });\n store.dispatch(action);\n })\n .catch((error) => {\n const currentState = store.getState();\n if (!skipTracking && currentState.viewChangeCounter !== currentView) {\n return;\n }\n action.error = true;\n action.payload = error.response ? error.response.body : error;\n if (!action.skipTracking) {\n store.dispatch({ type: ASYNC_END, promise: action.payload });\n }\n store.dispatch(action);\n });\n\n return;\n }\n\n next(action);\n};\n\nconst localStorageMiddleware = (store) => (next) => (action) => {\n if (action.type === LOGIN) {\n if (!action.error) {\n window.localStorage.setItem(\"sessionToken\", action.payload.sessionToken);\n agent.setToken(action.payload.sessionToken);\n }\n } else if (action.type === LOGOUT) {\n window.localStorage.setItem(\"sessionToken\", \"\");\n localStorage.setItem(\"reduxState\", \"\");\n agent.setToken(null);\n }\n\n next(action);\n};\n\nconst setLanguage = (language) => {\n localStorage.setItem(\"i18nextLng\", language);\n i18n.changeLanguage(language);\n};\n\nconst languageMiddleware = (store) => (next) => (action) => {\n if (action.type === LOGIN) {\n if (!action.error) {\n const language = jwtDecode(action.payload.sessionToken).language.toLowerCase();\n localStorage.setItem(\"i18nextLng\", language);\n i18n.changeLanguage(language);\n }\n } else if (action.type === APP_LOAD && action.payload && action.payload.language) {\n const language = action.payload.language.toLowerCase();\n setLanguage(language);\n }\n\n next(action);\n};\n\nfunction isPromise(v) {\n return v && typeof v.then === \"function\";\n}\n\nexport { promiseMiddleware, localStorageMiddleware, languageMiddleware };\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport { LOGIN, LOGIN_PAGE_UNLOADED, ASYNC_START } from \"../constants/actionTypes\";\n\nconst Auth = (state = {}, action) => {\n switch (action.type) {\n case LOGIN:\n return {\n ...state,\n inProgress: false,\n errors: action.error ? action.payload : null,\n };\n case LOGIN_PAGE_UNLOADED:\n return {};\n case ASYNC_START:\n if (action.subtype === LOGIN) {\n return { ...state, inProgress: true };\n }\n break;\n default:\n return state;\n }\n\n return state;\n};\n\nexport default Auth;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport {\n APP_LOAD,\n REDIRECT,\n LOGIN,\n LOGOUT,\n LOGIN_PAGE_UNLOADED,\n HOME_PAGE_UNLOADED,\n DASHBOARD_REDIRECT,\n EQUIPMENTS_REDIRECT,\n PURCHASES_REDIRECT,\n LAND_REDIRECT,\n CROP_REDIRECT,\n SELECT_LANGUAGE,\n GHG_PROGRAM_REDIRECT,\n HEDGEROWS_REDIRECT,\n LAND_OCCUPATION_REDIRECT,\n} from \"../constants/actionTypes\";\nimport jwt_decode from \"jwt-decode\";\n\nconst defaultState = {\n token: null,\n viewChangeCounter: 0,\n language: null,\n error: false,\n selectedFarm: null,\n};\n\nconst Common = (state = defaultState, action) => {\n switch (action.type) {\n case APP_LOAD:\n return {\n ...state,\n token: action.token || null,\n appLoaded: true,\n currentUser: action.payload ? action.payload.username : null,\n language: action.payload ? action.payload.language : null,\n access: action.payload ? action.payload.profile : null,\n };\n case CROP_REDIRECT:\n return {\n ...state,\n redirectTo: `/farm/${action.payload.farmId}/crop`,\n };\n case DASHBOARD_REDIRECT:\n return {\n ...state,\n selectedFarm: action.payload.farmId,\n redirectTo: `/farm/${action.payload.farmId}/dashboard`,\n };\n case EQUIPMENTS_REDIRECT:\n return {\n ...state,\n redirectTo: `/farm/${action.payload.farmId}/equipments`,\n };\n case PURCHASES_REDIRECT:\n return {\n ...state,\n redirectTo: `/farm/${action.payload.farmId}/purchases`,\n };\n case LAND_REDIRECT:\n return {\n ...state,\n redirectTo: `/farm/${action.payload.farmId}/land`,\n };\n case GHG_PROGRAM_REDIRECT:\n return {\n ...state,\n redirectTo: `/farm/${action.payload.farmId}/program`,\n };\n case HEDGEROWS_REDIRECT:\n return {\n ...state,\n redirectTo: `/farm/${action.payload.farmId}/hedgerows`,\n };\n case LAND_OCCUPATION_REDIRECT:\n return {\n ...state,\n redirectTo: `/farm/${action.payload.farmId}/occupation`,\n };\n case REDIRECT:\n return {\n ...state,\n viewChangeCounter: state.viewChangeCounter + 1,\n redirectTo: null,\n };\n case LOGOUT:\n return { ...state, redirectTo: \"/\", token: null, currentUser: null };\n case LOGIN:\n const tokenContent = action.payload.sessionToken\n ? jwt_decode(action.payload.sessionToken)\n : null;\n return {\n ...state,\n redirectTo: action.error ? null : \"/\",\n token: action.error ? null : action.payload.sessionToken,\n currentUser: !action.error && tokenContent ? tokenContent.username : null,\n language: tokenContent ? tokenContent.language : null,\n access: tokenContent ? tokenContent.profile : null,\n error: !tokenContent,\n };\n case SELECT_LANGUAGE:\n return {\n ...state,\n language: action.payload,\n };\n case HOME_PAGE_UNLOADED:\n case LOGIN_PAGE_UNLOADED:\n return { ...state, viewChangeCounter: state.viewChangeCounter + 1 };\n default:\n return state;\n }\n};\n\nexport default Common;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport {\n HOME_PAGE_LOADED,\n HOME_PAGE_UNLOADED,\n HOME_SERACH_RESULT,\n} from \"../constants/actionTypes\";\n\nconst Home = (state = { farms: [] }, action) => {\n switch (action.type) {\n case HOME_PAGE_LOADED:\n case HOME_SERACH_RESULT:\n return {\n ...state,\n farms: action.payload.farms,\n };\n case HOME_PAGE_UNLOADED:\n return {};\n default:\n return state;\n }\n};\n\nexport default Home;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport {\n DASHBOARD_LOADED,\n SELECT_FARM_PERIOD,\n SELECT_GLOBAL_PERIOD,\n UPDATE_FARM,\n UPDATE_LOCK,\n SET_DEFAULT_PERIOD,\n UPDATE_PADDOCK,\n ADD_PADDOCK,\n DELETE_PADDOCK,\n DELETE_BLOCPERI,\n DELETE_BLOC,\n DASHBOARD_REDIRECT,\n UPDATE_BLOCPERI,\n UPDATE_SELECTED_PADDOCK_STATUS,\n SELECT_LANGUAGE,\n} from \"../constants/actionTypes\";\n\nconst Farm = (state = {}, action) => {\n switch (action.type) {\n case DASHBOARD_LOADED:\n const periods =\n action.payload && action.payload.farm && action.payload.farm.periods\n ? action.payload.farm.periods\n : [];\n const defaultPeriod =\n action.payload.farm &&\n action.payload.farm.defaultPeriod &&\n Object.keys(action.payload.farm.defaultPeriod).length > 0\n ? action.payload.farm.defaultPeriod.id\n : null;\n const selectedPeriod =\n state.selectedPeriod && state.farm.id === action.payload.farm.id\n ? state.selectedPeriod\n : defaultPeriod && defaultPeriod !== \"\"\n ? defaultPeriod\n : periods.length > 0\n ? periods[periods.length - 1].id\n : null;\n let loadedCrops = [];\n let lock = {};\n periods.forEach((item) => {\n if (item.id === selectedPeriod) {\n loadedCrops = item.crops;\n lock = item.lock && item.lock.id ? item.lock : { status: 0 };\n }\n });\n return {\n ...state,\n farm: action.payload.farm ? action.payload.farm : null,\n periods,\n selectedPeriod: selectedPeriod,\n defaultPeriod: defaultPeriod,\n crops: loadedCrops,\n lock: lock,\n loaded: true,\n refreshFarm: false,\n };\n case SELECT_GLOBAL_PERIOD:\n return {\n ...state,\n selectedPeriod: action.payload,\n };\n case SELECT_FARM_PERIOD:\n let selectedCrops = [];\n let selectedLock = {};\n state.periods.forEach((item) => {\n if (item.id === action.payload) {\n selectedCrops = item.crops;\n selectedLock = item.lock && item.lock.id ? item.lock : { status: 0 };\n }\n });\n return {\n ...state,\n selectedPeriod: action.payload,\n crops: selectedCrops,\n lock: selectedLock,\n };\n case UPDATE_FARM:\n return {\n ...state,\n farm: action.payload.farm,\n };\n case UPDATE_LOCK:\n const newPeriods = state.periods.map((item) => {\n let period = { ...item };\n if (item.id === action.periodId) {\n period.lock = action.payload;\n return period;\n }\n return item;\n });\n return {\n ...state,\n periods: newPeriods,\n lock: action.payload,\n };\n case SET_DEFAULT_PERIOD:\n return {\n ...state,\n defaultPeriod: action.payload,\n };\n case UPDATE_PADDOCK:\n case ADD_PADDOCK:\n case DELETE_PADDOCK:\n case DELETE_BLOCPERI:\n case UPDATE_BLOCPERI:\n case SELECT_LANGUAGE:\n case DELETE_BLOC:\n case DASHBOARD_REDIRECT:\n case UPDATE_SELECTED_PADDOCK_STATUS:\n return {\n ...state,\n refreshFarm: true,\n };\n case \"@@router/LOCATION_CHANGE\":\n if (action.payload.location.pathname === \"/\") {\n return {\n ...state,\n farm: { id: null },\n };\n }\n return state;\n default:\n return state;\n }\n};\n\nexport default Farm;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nconst compareChrono = (a, b) => {\n let comparison = 0;\n if (a.status >= 0 && b.status < 0) {\n comparison = -1;\n } else if (a.status < 0 && b.status >= 0) {\n comparison = 1;\n } else if (a.status < 0 && b.status < 0) {\n comparison = 0;\n } else if (a.status >= 0 && b.status >= 0) {\n comparison = 0;\n }\n return comparison;\n};\n\nconst compareAlpha = () => {\n return 0;\n};\n\nconst sorter = (data, filter) => {\n let arr = [...data];\n switch (filter) {\n case \"chrono\":\n arr.sort(compareChrono);\n break;\n case \"alpha\":\n arr.sort(compareAlpha);\n break;\n default:\n break;\n }\n return arr;\n};\n\nexport default sorter;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport {\n SELECT_CROP,\n CROP_REDIRECT,\n PADDOCKS_LOADED,\n SELECT_PADDOCK,\n OPERATIONS_LOADED,\n SELECT_OPERATION,\n SELECT_FARM_PERIOD,\n DASHBOARD_LOADED,\n ADD_OPERATION,\n UPDATE_OPERATION,\n DELETE_OPERATION,\n UPDATE_SELECTED_PADDOCK,\n UPDATE_OPERATIONS,\n UPDATE_SELECTED_PADDOCK_STATUS,\n SELECT_BAR,\n SET_OPERATIONS,\n} from \"../constants/actionTypes\";\nimport sortData from \"../utils/sorter\";\n\nconst Crop = (state = { selectedBar: null, operationLoaded: false }, action) => {\n switch (action.type) {\n case DASHBOARD_LOADED:\n return {\n ...state,\n selectedOperation: null,\n operations: [],\n paddocks: null,\n selectedPaddock: null,\n selectedBar: null,\n };\n case SELECT_FARM_PERIOD:\n return {\n ...state,\n operationLoaded: false,\n };\n case CROP_REDIRECT:\n return {\n ...state,\n selectedCrop: action.payload.cropId,\n selectedOperation: null,\n operations: [],\n paddocks: null,\n selectedPaddock: null,\n selectedBar: null,\n operationLoaded: false,\n };\n case SELECT_CROP:\n return {\n ...state,\n selectedCrop: action.payload,\n operations: [],\n selectedOperation: null,\n selectedPaddock: null,\n selectedBar: null,\n operationLoaded: false,\n };\n case SELECT_PADDOCK: {\n return {\n ...state,\n selectedBar: \"paddock\",\n selectedPaddock:\n (state.selectedPaddock && state.selectedPaddock.id === action.payload) ||\n state.paddocks.filter((item) => item.id === action.payload)[0],\n selectedOperation: null,\n operations: [],\n operationLoaded: false,\n };\n }\n case SELECT_BAR: {\n return {\n ...state,\n selectedBar: action.payload,\n selectedPaddock: null,\n selectedOperation: null,\n operations: [],\n };\n }\n case UPDATE_SELECTED_PADDOCK:\n return {\n ...state,\n selectedPaddock: action.payload,\n };\n case UPDATE_SELECTED_PADDOCK_STATUS:\n return {\n ...state,\n selectedPaddock: {\n ...state.selectedPaddock,\n status: action.status,\n },\n paddocks: state.paddocks.map((item) => {\n if (item.id === action.id) {\n return {\n ...item,\n status: action.status,\n };\n }\n return item;\n }),\n };\n case PADDOCKS_LOADED:\n var isSelected = [];\n if (action.payload.paddocks) {\n isSelected = action.payload.paddocks.filter(\n (item) => state.selectedPaddock && item.id === state.selectedPaddock.id\n );\n }\n return {\n ...state,\n paddocks: action.payload.paddocks,\n selectedPaddock:\n state.selectedBar && state.selectedBar !== \"paddock\"\n ? null\n : isSelected.length > 0\n ? state.selectedPaddock\n : action.payload.paddocks[0],\n selectedBar: state.selectedBar ? state.selectedBar : \"paddock\",\n };\n case OPERATIONS_LOADED:\n if (\n state.selectedPaddock &&\n state.selectedPaddock.id === action.paddockId &&\n action.payload &&\n action.payload.operations\n ) {\n return {\n ...state,\n operations: sortData(action.payload.operations, \"chrono\"),\n operationLoaded: true,\n selectedOperation: null,\n };\n }\n return {\n ...state,\n };\n case SET_OPERATIONS:\n return {\n ...state,\n operations: action.payload,\n };\n case UPDATE_OPERATIONS:\n return {\n ...state,\n operations: sortData(action.payload, \"chrono\"),\n };\n case ADD_OPERATION:\n const newData = [...state.operations];\n newData.splice(\n action.index + 1,\n 0,\n action.payload\n ? action.payload\n : {\n id: \"new\",\n type: action.operationType,\n initDate: action.initDate ? action.initDate : null,\n }\n );\n return {\n ...state,\n operations: sortData(newData, \"chrono\"),\n selectedOperation: action.payload ? action.payload.id : \"new\",\n };\n case UPDATE_OPERATION:\n return {\n ...state,\n operations: state.operations.map((operation, index) => {\n if (index === action.index) return action.payload;\n return operation;\n }),\n selectedOperation: !action.withoutInputs ? null : action.payload.id,\n };\n case DELETE_OPERATION:\n return {\n ...state,\n operations: state.operations.filter((operation, index) => index !== action.index),\n selectedOperation: null,\n };\n case SELECT_OPERATION:\n const operations = action.canvas\n ? state.operations.map((operation, index) => {\n if (index === action.index && operation.status === -1) operation.status = 0;\n return operation;\n })\n : [...state.operations];\n return {\n ...state,\n operations,\n selectedOperation: action.payload,\n };\n default:\n return state;\n }\n};\n\nexport default Crop;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport {\n SELECT_GLOBAL_PERIOD,\n OPERATION_TYPES_LOADED,\n GLOBAL_PERIOD_LOADED,\n SELECT_FARM_PERIOD,\n CROPS_LOADED,\n PHS_LOADED,\n MOISTURES_LOADED,\n DRAINAGES_LOADED,\n FREQUENCIES_LOADED,\n SOIL_TYPES_LOADED,\n GLOBAL_LANGUAGE_LOADED,\n GLOBAL_TECHS_LOADED,\n GLOBAL_COVERS_LOADED,\n GLOBAL_PROGRAMS_LOADED,\n GLOBAL_SPECIES_LOADED,\n GLOBAL_OCCUPATIONS_LOADED,\n GLOBAL_DESTRUCTIONS_LOADED,\n GLOBAL_IRRIGATIONS_LOADED,\n GLOBAL_SOURCES_LOADED,\n GLOBAL_POWERS_LOADED,\n GLOBAL_CUSTOM_TYPES_LOADED,\n} from \"../constants/actionTypes\";\n\nconst Global = (state = {}, action) => {\n switch (action.type) {\n case GLOBAL_PERIOD_LOADED:\n const periods = action.payload.periods;\n return {\n ...state,\n periods,\n selectedGlobalPeriod: state.selectedGlobalPeriod\n ? state.selectedGlobalPeriod\n : periods[periods.length - 1].id,\n lock: state.selectedGlobalPeriod ? state.lock : periods[periods.length - 1].lock,\n };\n case SELECT_GLOBAL_PERIOD:\n return {\n ...state,\n selectedGlobalPeriod: action.payload,\n lock: action.lock,\n };\n case SELECT_FARM_PERIOD:\n return {\n ...state,\n selectedGlobalPeriod: action.payload,\n lock: action.lock,\n };\n case OPERATION_TYPES_LOADED:\n return {\n ...state,\n operationTypes: action.payload,\n };\n case CROPS_LOADED:\n return {\n ...state,\n crops: action.payload,\n };\n case PHS_LOADED:\n return {\n ...state,\n phs: action.payload,\n };\n case MOISTURES_LOADED:\n return {\n ...state,\n moistures: action.payload,\n };\n case DRAINAGES_LOADED:\n return {\n ...state,\n drainages: action.payload,\n };\n case FREQUENCIES_LOADED:\n return {\n ...state,\n frequencies: action.payload,\n };\n case SOIL_TYPES_LOADED:\n return {\n ...state,\n soilTypes: action.payload,\n };\n case GLOBAL_LANGUAGE_LOADED:\n return {\n ...state,\n languages: action.payload,\n };\n case GLOBAL_TECHS_LOADED:\n return {\n ...state,\n techs: action.payload,\n };\n case GLOBAL_COVERS_LOADED:\n return {\n ...state,\n covers: action.payload,\n };\n case GLOBAL_PROGRAMS_LOADED:\n return {\n ...state,\n programs: action.payload,\n };\n case GLOBAL_SPECIES_LOADED:\n return {\n ...state,\n species: action.payload,\n };\n case GLOBAL_OCCUPATIONS_LOADED:\n return {\n ...state,\n occupations: action.payload,\n };\n case GLOBAL_DESTRUCTIONS_LOADED:\n return {\n ...state,\n destructions: action.payload,\n };\n case GLOBAL_IRRIGATIONS_LOADED:\n return {\n ...state,\n irrigations: action.payload,\n };\n case GLOBAL_SOURCES_LOADED:\n return {\n ...state,\n sources: action.payload,\n };\n case GLOBAL_POWERS_LOADED:\n return {\n ...state,\n powers: action.payload,\n };\n case GLOBAL_CUSTOM_TYPES_LOADED:\n return {\n ...state,\n customTypes: action.payload,\n };\n default:\n return state;\n }\n};\n\nexport default Global;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport {\n FARM_MACHINERIES_LOADED,\n UPDATE_FARM_MACHINERY,\n ADD_FARM_MACHINERY,\n REMOVE_FARM_MACHINERY,\n SELECT_GLOBAL_PERIOD,\n} from \"../constants/actionTypes\";\n\nconst FarmMachineries = (state = {}, action) => {\n switch (action.type) {\n case FARM_MACHINERIES_LOADED:\n return {\n ...state,\n farmMachineries: action.payload.operationTypes,\n };\n case SELECT_GLOBAL_PERIOD:\n return {\n ...state,\n farmMachineries: [],\n };\n case UPDATE_FARM_MACHINERY:\n return {\n ...state,\n farmMachineries: state.farmMachineries.map((operationType) => {\n if (operationType.id === action.operationId) {\n return {\n ...operationType,\n farmMachineries: operationType.farmMachineries.map((farmMachinery, index) =>\n index === action.index ? { ...action.payload } : { ...farmMachinery }\n ),\n };\n }\n return operationType;\n }),\n };\n case ADD_FARM_MACHINERY:\n return {\n ...state,\n farmMachineries: state.farmMachineries.map((operationType) => {\n if (operationType.id === action.operationId) {\n return {\n ...operationType,\n farmMachineries: [...operationType.farmMachineries, action.payload],\n };\n }\n return operationType;\n }),\n };\n case REMOVE_FARM_MACHINERY:\n return {\n ...state,\n farmMachineries: state.farmMachineries.map((operationType) => {\n if (operationType.id === action.operationId) {\n return {\n ...operationType,\n farmMachineries: operationType.farmMachineries.filter(\n (item) => item.id !== action.payload\n ),\n };\n }\n return operationType;\n }),\n };\n default:\n return state;\n }\n};\n\nexport default FarmMachineries;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport {\n SELECTED_INPUT_TYPE,\n FARM_INPUTS_PURCHASES_LOADED,\n UPDATE_FARM_INPUT_PURCHASE,\n ADD_FARM_INPUT_PURCHASE,\n REMOVE_FARM_INPUT_PURCHASE,\n UPDATE_FARM_INPUTS_PURCHASES,\n CLEAR_FARM_INPUTS_PURCHASES,\n SELECT_GLOBAL_PERIOD,\n} from \"../constants/actionTypes\";\n\nconst FarmInputs = (state = { selectedInputType: \"seed\" }, action) => {\n switch (action.type) {\n case SELECTED_INPUT_TYPE:\n return {\n ...state,\n loaded: false,\n selectedInputType: action.payload,\n };\n case SELECT_GLOBAL_PERIOD:\n return {\n ...state,\n loaded: false,\n };\n case FARM_INPUTS_PURCHASES_LOADED:\n return {\n ...state,\n loaded: true,\n farmInputsPurchases: action.payload.farmInputsPurchases,\n };\n case UPDATE_FARM_INPUTS_PURCHASES:\n return {\n ...state,\n farmInputsPurchases: action.payload,\n };\n case UPDATE_FARM_INPUT_PURCHASE:\n return {\n ...state,\n farmInputsPurchases: state.farmInputsPurchases.map((farmInputPurchase, index) => {\n if (index === action.index) {\n return action.payload;\n }\n return farmInputPurchase;\n }),\n };\n case ADD_FARM_INPUT_PURCHASE:\n return {\n ...state,\n farmInputsPurchases: [...state.farmInputsPurchases, action.payload],\n };\n case REMOVE_FARM_INPUT_PURCHASE:\n return {\n ...state,\n farmInputsPurchases: [\n ...state.farmInputsPurchases.filter((i, index) => action.index !== index),\n ],\n };\n case CLEAR_FARM_INPUTS_PURCHASES:\n return {\n ...state,\n loaded: false,\n farmInputsPurchases: [],\n };\n default:\n return state;\n }\n};\n\nexport default FarmInputs;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport {\n LAND_LOADED,\n SET_LAND_PAGE,\n SET_LAND_LOADING,\n ADD_BLOC,\n UPDATE_BLOC,\n DELETE_BLOC,\n ADD_BLOCPERI,\n UPDATE_BLOCPERI,\n DELETE_BLOCPERI,\n ADD_PADDOCK,\n UPDATE_PADDOCK,\n DELETE_PADDOCK,\n} from \"../constants/actionTypes\";\n\nconst Land = (state = { loaded: false }, action) => {\n switch (action.type) {\n case LAND_LOADED:\n return {\n ...state,\n loaded: true,\n paddocks:\n action.payload.length >= 2 && action.payload[2]\n ? action.payload[2].paddocks\n : [],\n blocsperi:\n action.payload.length >= 1 && action.payload[1]\n ? action.payload[1].blocsperi\n : [],\n blocs:\n action.payload.length >= 0 && action.payload[0] ? action.payload[0].blocs : [],\n };\n case SET_LAND_LOADING:\n return {\n ...state,\n loaded: action.payload,\n };\n case SET_LAND_PAGE:\n return {\n ...state,\n selectedLandPage: action.payload,\n };\n case UPDATE_BLOC:\n return {\n ...state,\n blocs: state.blocs.map((bloc, index) => {\n if (index === action.index) {\n return { ...bloc, ...action.payload };\n }\n return bloc;\n }),\n };\n case ADD_BLOC:\n return {\n ...state,\n blocs: [...state.blocs, action.payload],\n };\n case DELETE_BLOC:\n const deletedBloc = state.blocs.find((i, index) => action.index === index);\n return {\n ...state,\n blocs: [...state.blocs.filter((i, index) => action.index !== index)],\n blocsperi: [...state.blocsperi.filter((item) => item.bloc.id !== deletedBloc.id)],\n };\n case UPDATE_BLOCPERI:\n return {\n ...state,\n blocsperi: state.blocsperi.map((blocperi, index) => {\n if (index === action.index) {\n return action.payload;\n }\n return blocperi;\n }),\n paddocks: state.paddocks.map((paddock) => {\n if (paddock.blocperi.id === action.payload.id) {\n return { ...paddock, status: 0 };\n }\n return paddock;\n }),\n };\n case ADD_BLOCPERI:\n return {\n ...state,\n blocsperi: [...state.blocsperi, action.payload],\n blocs: state.blocs.map((bloc) => {\n if (bloc.id === action.payload.bloc.id) {\n bloc.blocperi = 1;\n }\n return bloc;\n }),\n };\n case DELETE_BLOCPERI:\n const blocId = state.blocsperi.filter((i, index) => action.index === index)[0].bloc\n .id;\n return {\n ...state,\n blocsperi: [...state.blocsperi.filter((i, index) => action.index !== index)],\n blocs: state.blocs.map((bloc) => {\n if (bloc.id === blocId) {\n bloc.blocperi = 0;\n }\n return bloc;\n }),\n };\n case UPDATE_PADDOCK:\n return {\n ...state,\n paddocks: state.paddocks.map((paddock, index) => {\n if (index === action.index) {\n return action.payload;\n }\n return paddock;\n }),\n };\n case ADD_PADDOCK:\n return {\n ...state,\n paddocks: [...state.paddocks, action.payload],\n };\n case DELETE_PADDOCK:\n return {\n ...state,\n paddocks: [...state.paddocks.filter((i, index) => action.index !== index)],\n };\n default:\n return state;\n }\n};\n\nexport default Land;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport {\n HEDGEROWS_LOADED,\n ADD_HEDGEROWS,\n UPDATE_HEDGEROWS,\n REMOVE_HEDGEROWS,\n} from \"../constants/actionTypes\";\n\nconst Hedgerows = (state = {}, action) => {\n switch (action.type) {\n case HEDGEROWS_LOADED:\n return {\n ...state,\n hedgerows: action.payload,\n };\n case ADD_HEDGEROWS:\n return {\n ...state,\n hedgerows: [...state.hedgerows, action.payload],\n };\n case UPDATE_HEDGEROWS:\n return {\n ...state,\n hedgerows: state.hedgerows.map((hedgerow, index) => {\n if (index === action.index) {\n return action.payload;\n }\n return hedgerow;\n }),\n };\n case REMOVE_HEDGEROWS:\n return {\n ...state,\n hedgerows: [...state.hedgerows.filter((i, index) => action.index !== index)],\n };\n default:\n return state;\n }\n};\n\nexport default Hedgerows;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport {\n GHG_PROGRAMS_LOADED,\n ADD_GHG_PROGRAM,\n UPDATE_GHG_PROGRAM,\n REMOVE_GHG_PROGRAM,\n} from \"../constants/actionTypes\";\n\nconst GhgPrograms = (state = { loaded: false }, action) => {\n switch (action.type) {\n case GHG_PROGRAMS_LOADED:\n return {\n ...state,\n ghgPrograms: action.payload,\n loaded: true,\n };\n case ADD_GHG_PROGRAM:\n return {\n ...state,\n ghgPrograms: [...state.ghgPrograms, action.payload],\n };\n case UPDATE_GHG_PROGRAM:\n return {\n ...state,\n ghgPrograms: state.ghgPrograms.map((ghgProgram, index) => {\n if (index === action.index) {\n return action.payload;\n }\n return ghgProgram;\n }),\n };\n case REMOVE_GHG_PROGRAM:\n return {\n ...state,\n ghgPrograms: [...state.ghgPrograms.filter((i, index) => action.index !== index)],\n };\n default:\n return state;\n }\n};\n\nexport default GhgPrograms;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport { combineReducers } from \"redux\";\nimport { connectRouter } from \"connected-react-router\";\nimport { reducer as formReducer } from \"redux-form\";\nimport auth from \"./auth\";\nimport common from \"./common\";\nimport home from \"./home\";\nimport farm from \"./farm\";\nimport crop from \"./crop\";\nimport global from \"./global\";\nimport farmMachineries from \"./farmMachineries\";\nimport farmInputs from \"./farmInputs\";\nimport land from \"./land\";\nimport hedgerows from \"./hedgerows\";\nimport ghgPrograms from \"./ghgPrograms\";\n\nconst createRootReducer = (history) =>\n combineReducers({\n router: connectRouter(history),\n form: formReducer,\n auth,\n common,\n home,\n farm,\n crop,\n global,\n farmMachineries,\n farmInputs,\n land,\n hedgerows,\n ghgPrograms,\n });\nexport default createRootReducer;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport { applyMiddleware, compose, createStore } from \"redux\";\nimport { createLogger } from \"redux-logger\";\nimport { routerMiddleware } from \"connected-react-router\";\nimport { createBrowserHistory } from \"history\";\n\nimport {\n promiseMiddleware,\n localStorageMiddleware,\n languageMiddleware,\n} from \"./middleware\";\nimport createRootReducer from \"./reducers\";\n\nexport const history = createBrowserHistory();\n\nconst initialState = JSON.parse(localStorage.getItem(\"reduxState\"));\n\nif (initialState) {\n initialState.crop.selectedOperation = null;\n initialState.crop.operations = [];\n initialState.crop.operationLoaded = false;\n initialState.common.currentUser = null;\n initialState.common.appLoaded = null;\n initialState.common.error = null;\n initialState.form.LoginForm = null;\n initialState.crop.selectedPaddock = null;\n initialState.global.customTypes = [];\n initialState.farm.loaded = false;\n initialState.farm.refreshFarm = false;\n}\n\nconst persistedState = localStorage.getItem(\"reduxState\") ? initialState : {};\n\nconst getMiddleware = () => {\n if (process.env.NODE_ENV === \"production\") {\n return applyMiddleware(\n routerMiddleware(history),\n promiseMiddleware,\n localStorageMiddleware,\n languageMiddleware\n );\n } else {\n return applyMiddleware(\n routerMiddleware(history),\n promiseMiddleware,\n localStorageMiddleware,\n languageMiddleware,\n createLogger()\n );\n }\n};\n\nfunction configureStore(preloadedState) {\n const store = createStore(\n createRootReducer(history),\n preloadedState,\n compose(getMiddleware())\n );\n\n return store;\n}\n\nexport const store = configureStore(persistedState);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport { createMuiTheme } from \"@material-ui/core/styles\";\nimport { fade } from \"@material-ui/core/styles/colorManipulator\";\nconst defaultTheme = createMuiTheme();\n\nconst palette = {\n primary: { main: \"#F4CE83\" },\n secondary: { main: \"#B07C49\" },\n text: { primary: \"#4d4f45\", faded: fade(\"#4d4f45\", 0.7) },\n info: {\n light: \"#8ca7da\",\n main: \"#527BC7\",\n dark: \"#32579a\",\n },\n warning: {\n light: \"#ffc97e\",\n main: \"#FFA931\",\n dark: \"#e48500\",\n },\n error: {\n light: \"#ee8a8e\",\n main: \"#d92027\",\n dark: \"#96161b\",\n },\n success: {\n light: \"#a7da8c\",\n main: \"#7bc752\",\n dark: \"#579a32\",\n },\n bio: {\n main: \"#37a640\",\n },\n};\n\nconst shape = {\n borderRadius: 8,\n};\n\nconst overrides = {\n MuiCssBaseline: {\n \"@global\": {\n \"input::-webkit-search-cancel-button\": {\n \"-webkit-appearance\": \"none\",\n },\n html: {\n \"overflow-y\": \"scroll\",\n },\n \"input[type=number]::-webkit-inner-spin-button\": {\n \"-webkit-appearance\": \"none\",\n },\n \"input[type=number]::-webkit-outer-spin-button\": {\n \"-webkit-appearance\": \"none\",\n },\n \"input[type=number]\": {\n \"-moz-appearance\": \"textfield\",\n },\n },\n },\n MuiFormControl: {\n marginNormal: {\n marginTop: 0,\n marginBottom: 0,\n },\n root: {\n height: \"fit-content\",\n },\n },\n MuiContainer: {\n root: {\n width: \"1200px\",\n },\n },\n MuiLinearProgress: {\n colorPrimary: {\n backgroundColor: defaultTheme.palette.grey[400],\n },\n colorSecondary: {\n backgroundColor: defaultTheme.palette.grey[400],\n },\n barColorPrimary: {\n background: `linear-gradient(45deg, ${defaultTheme.palette.info.light} 50%, ${defaultTheme.palette.info.dark} 90%)`,\n },\n barColorSecondary: {\n background: `linear-gradient(45deg, ${defaultTheme.palette.success.light} 50%, ${defaultTheme.palette.success.dark} 90%)`,\n },\n },\n MuiDialogTitle: {\n root: {\n backgroundColor: palette.primary.main,\n },\n },\n MuiSelect: {\n select: {\n \"&:focus\": {\n backgroundColor: \"inherit\",\n },\n },\n },\n MuiTooltip: {\n tooltip: {\n fontSize: \"1.2em\",\n },\n },\n};\n\nconst props = {\n MuiTextField: {\n variant: \"outlined\",\n size: \"small\",\n color: \"secondary\",\n },\n MuiButton: {\n variant: \"contained\",\n size: \"medium\",\n color: \"secondary\",\n },\n Typography: {\n color: \"textPrimary\",\n },\n FormControl: {\n color: \"secondary\",\n },\n};\n\nexport default createMuiTheme({ palette, shape, overrides, props });\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { HOME_SERACH_RESULT } from \"../../constants/actionTypes\";\n\n//API\nimport agent from \"../../agent\";\n\n//UI Components\nimport TextField from \"@material-ui/core/TextField\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n label: PropTypes.string.isRequired,\n className: PropTypes.string.isRequired,\n\n //Provided props\n setSearchResult: PropTypes.func, // Provided by Redux\n};\n\nfunction SearchBar({ label, className, setSearchResult }) {\n const [query, setQuery] = useState(\"\");\n\n useEffect(() => {\n let timer;\n if (query !== \"\") {\n timer = setTimeout(() => {\n setSearchResult(agent.Farms.search(query));\n }, 100);\n\n return () => clearTimeout(timer);\n } else {\n timer = setTimeout(() => {\n setSearchResult(agent.Farms.get(200));\n }, 100);\n\n return () => clearTimeout(timer);\n }\n }, [query, setSearchResult]);\n\n const handleSearch = (event) => {\n setQuery(event.target.value);\n };\n\n const handleClear = () => {\n setQuery(\"\");\n };\n\n return (\n \n \n \n \n \n ) : (\n \n \n \n ),\n }}\n />\n );\n}\n\nSearchBar.propTypes = propsDefinition;\n\nconst mapDispatchToProps = (dispatch) => ({\n setSearchResult: (payload) => dispatch({ type: HOME_SERACH_RESULT, payload }),\n});\n\nexport default connect(null, mapDispatchToProps)(SearchBar);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//HOC\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//Theme\nimport customTheme from \"../../theme\";\n\n//UI Components\nimport ListItem from \"@material-ui/core/ListItem\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Box from \"@material-ui/core/Box\";\nimport Typography from \"@material-ui/core/Typography\";\nimport NavigateNextIcon from \"@material-ui/icons/NavigateNext\";\nimport Chip from \"@material-ui/core/Chip\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.grey[200],\n },\n}));\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n data: PropTypes.object.isRequired,\n style: PropTypes.object,\n index: PropTypes.object,\n onClick: PropTypes.func.isRequired,\n};\n\nfunction ListElement({ data, itemIndex, style, index, onClick }) {\n const classes = useStyles();\n const { t } = useTranslation();\n\n const variableListBackground = itemIndex % 2 ? classes.root : \"\";\n const newBadge =\n data.verified === 0 ? (\n \n ) : (\n \"\"\n );\n\n return (\n {\n onClick(data.id);\n }}\n >\n \n \n \n {data.lastName} {data.firstName}\n \n \n {data.country} - {data.region}\n \n \n \n {newBadge}\n \n \n \n \n {t(\"home.list-element.dashboard-label\")}\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nListElement.propTypes = propsDefinition;\n\nexport default ListElement;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport { FixedSizeList } from \"react-window\";\nimport PropTypes from \"prop-types\";\n\n//Custom Components\nimport ListElement from \"./ListElement\";\n\n//UI Components\nimport Paper from \"@material-ui/core/Paper\";\n\nconst ItemRenderer = ({ data, index, style }) => {\n // Access the items array using the \"data\" prop:\n const item = data.items[index];\n\n return (\n \n );\n};\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n onClick: PropTypes.func.isRequired,\n items: PropTypes.array.isRequired,\n};\n\nconst List = ({ onClick, items }) => {\n return (\n \n {items ? (\n \n {ItemRenderer}\n \n ) : (\n \"\"\n )}\n \n );\n};\n\nList.propTypes = propsDefinition;\n\nexport default List;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useIntercom } from \"react-use-intercom\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { HOME_PAGE_LOADED, DASHBOARD_REDIRECT } from \"../../constants/actionTypes\";\n\n//API\nimport agent from \"../../agent\";\n\n//HOC\nimport { useTranslation } from \"react-i18next\";\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom Components\nimport SearchBar from \"./SearchBar\";\nimport List from \"./List\";\n\n//UI Components\nimport Container from \"@material-ui/core/Container\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Button from \"@material-ui/core/Button\";\n\nconst styles = (theme) => ({\n root: {\n width: \"70%\",\n },\n title: {\n marginBottom: theme.spacing(2),\n },\n search: {\n marginBottom: theme.spacing(2),\n },\n buttonContainer: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n },\n button: { marginTop: theme.spacing(2) },\n});\n\nconst propsDefinition = {\n //Provided props\n currentUser: PropTypes.string, // Provided by Redux\n onDashboardRedirect: PropTypes.func, // Provided by Redux\n farms: PropTypes.array, // Provided by Redux\n onLoad: PropTypes.func, // Provided by Redux\n classes: PropTypes.object, // Provided by Material Ui Style\n};\n\nconst Home = ({ onLoad, classes, currentUser, farms, onDashboardRedirect }) => {\n const { t } = useTranslation();\n const { boot: intercomBoot } = useIntercom();\n const [intercomInit, setIntercomInit] = useState();\n\n useEffect(() => {\n if (!intercomInit && currentUser) {\n intercomBoot({\n name: currentUser,\n });\n setIntercomInit(true);\n }\n }, [intercomInit, currentUser, intercomBoot]);\n\n useEffect(() => {\n onLoad(agent.Farms.get(200));\n }, [onLoad]);\n\n return (\n \n
\n {t(\"home.welcome-title\", { currentUser })}\n {t(\"home.search-question\")}\n
\n \n \n
\n onDashboardRedirect(\"new\")}\n >\n {t(\"home.add-farm-button-label\")}\n \n
\n
\n );\n};\n\nHome.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n farms: state.home.farms,\n currentUser: state.common.currentUser,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onLoad: (payload) => dispatch({ type: HOME_PAGE_LOADED, payload: payload }),\n onDashboardRedirect: (farmId) =>\n dispatch({ type: DASHBOARD_REDIRECT, payload: { farmId } }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Home));\n","export default __webpack_public_path__ + \"static/media/italicmySoilCapital.38b3790a.png\";","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//UI Components\nimport logo from \"../assets/logo/italicmySoilCapital.png\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n className: PropTypes.string.isRequired,\n};\n\nfunction Logo({ className }) {\n return (\n logo\n );\n}\n\nLogo.propTypes = propsDefinition;\n\nexport default Logo;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport TextField from \"@material-ui/core/TextField\";\n\nexport const renderTextField = ({\n label,\n input,\n meta: { touched, invalid, error },\n loginError,\n ...custom\n}) => (\n \n);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { Field, reduxForm } from \"redux-form\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom Components\nimport { renderTextField } from \"../../utils/fieldRenderers\";\n\n//UI Components\nimport Grid from \"@material-ui/core/Grid\";\nimport Button from \"@material-ui/core/Button\";\n\nconst propsDefinition = {\n //Provided props\n handleSubmit: PropTypes.func, // Provided by Redux\n pristine: PropTypes.bool, // Provided by Redux\n submitting: PropTypes.bool, // Provided by Redux\n loginError: PropTypes.string, // Provided by Redux\n};\n\nfunction LoginForm({ handleSubmit, pristine, submitting, loginError }) {\n const { t } = useTranslation();\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nLoginForm.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n loginError: state.common.error,\n});\n\nexport default connect(mapStateToProps)(reduxForm({ form: \"LoginForm\" })(LoginForm));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { LOGIN } from \"../../constants/actionTypes\";\n\n//API\nimport agent from \"../../agent\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom Components\nimport Logo from \"../Logo\";\nimport LoginForm from \"./LoginForm\";\n\n//UI Components\nimport Box from \"@material-ui/core/Box\";\nimport Paper from \"@material-ui/core/Paper\";\n\nconst styles = (theme) => ({\n root: {\n width: 280,\n padding: theme.spacing(2),\n },\n logo: {\n width: \"70%\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n paddingBottom: \"24px\",\n display: \"block\",\n },\n form: {\n margin: theme.spacing(2),\n marginTop: 0,\n },\n});\n\nconst propsDefinition = {\n //Provided props\n currentUser: PropTypes.string, // Provided by Redux\n classes: PropTypes.object, // Provided by Material Ui Style\n onSubmit: PropTypes.func, // Provided by Redux\n};\n\nconst Login = ({ classes, currentUser, onSubmit }) => {\n const submitForm = ({ username, password }) => {\n onSubmit(username, password);\n };\n\n if (currentUser) {\n return ;\n }\n return (\n \n \n \n \n \n \n );\n};\n\nLogin.propTypes = propsDefinition;\n\nconst mapDispatchToProps = (dispatch) => ({\n onSubmit: (username, password) =>\n dispatch({\n type: LOGIN,\n payload: agent.Auth.login(username, password),\n }),\n});\n\nconst mapStateToProps = (state) => {\n return {\n currentUser: state.common.currentUser,\n };\n};\n\nexport { Login, styles };\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Login));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nconst statuses = {\n CANVAS: -1,\n INVALID: 0,\n UNEXPECTED: 1,\n AUTO_VALIDATED: 2,\n AGRO_VALIDATED: 3,\n};\n\nexport default statuses;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nconst profiles = {\n _ADM: \"ADMIN\",\n _AGRS: \"INTERNAL_AGRONOMIST\",\n _AGR: \"AGRONOMIST\",\n _ENC: \"ENCODER\",\n _AUD: \"AUDITOR\",\n};\n\nexport default profiles;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nconst lockStatuses = {\n NOT_LOCKER: 0,\n UNLOCKED: 1,\n LOCKED: 2,\n};\n\nexport default lockStatuses;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport { store } from \"../store\";\nimport dataStatuses from \"../constants/dataStatuses\";\nimport profiles from \"../constants/profiles\";\nimport lockStatuses from \"../constants/lockStatuses\";\n\n/*\n ** Permission Class for managing permission access in app.\n **\n ** Edit required params Premissions(dataStatus, lockStatus)\n ** Data statuses and lockStatuses are provided from backend API's.\n **\n ** View required params Permissions(null, null, requiredProfiles)\n ** Profile import contains the profiles enumeration. Import it in required components.\n */\nclass Permissions {\n constructor(dataStatus = null, lockStatus = null, requiredProfiles = null) {\n this.currentProfile = profiles[store.getState().common.access];\n\n this.dataStatus = dataStatus;\n this.lockStatus = lockStatus;\n this.requiredProfiles = requiredProfiles;\n this.dataStatuses = dataStatuses;\n this.profiles = profiles;\n this.lockStatuses = lockStatuses;\n }\n\n isAdmin = (currentProfile) => {\n if (this.currentProfile === profiles._ADM || currentProfile === profiles._ADM) {\n return true;\n }\n return false;\n };\n\n // private\n isEditProfile = (currentProfile) => {\n switch (currentProfile) {\n case profiles._ADM:\n case profiles._AGRS:\n case profiles._AGR:\n return true;\n case profiles._ENC:\n case profiles._AUD:\n return false;\n default:\n return false;\n }\n };\n\n // private\n isCurrentProfile = (requiredProfiles) => {\n return requiredProfiles.some((profile) => profile === this.currentProfile);\n };\n\n // private\n isViewProfile = (requiredProfiles) => {\n if (requiredProfiles !== null) {\n if (this.isCurrentProfile(requiredProfiles)) {\n return true;\n }\n\n return false;\n }\n\n return true;\n };\n\n // private\n isViewProfileForStatus = (dataStatus) => {\n switch (dataStatus) {\n case dataStatuses.AGRO_VALIDATED:\n return this.isViewProfile([profiles._ADM, profiles._AGRS, profiles._AGR]);\n default:\n return this.isViewProfile(null);\n }\n };\n\n // Returns edit access boolean\n canEdit = () => {\n if (this.lockStatus !== lockStatuses.LOCKED) {\n if (\n this.isCurrentProfile([\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n profiles._ENC,\n ]) &&\n (this.dataStatus === null || this.dataStatus !== dataStatuses.AGRO_VALIDATED)\n ) {\n return true;\n }\n return this.isEditProfile(this.currentProfile);\n }\n return false;\n };\n\n // Return verified access boolean\n canVerify = () => {\n if (\n this.dataStatus !== null &&\n this.dataStatus === dataStatuses.AGRO_VALIDATED\n ) {\n return false;\n }\n return true;\n };\n\n // Returns view access boolean\n canView = () => {\n if (this.dataStatus !== null && this.requiredProfiles === null) {\n return this.isViewProfileForStatus(this.dataStatus);\n }\n return this.isViewProfile(this.requiredProfiles);\n };\n}\n\nexport default Permissions;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n onConfirm: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n onVisualize: PropTypes.func.isRequired,\n};\n\nconst ConfirmPeriod = ({ open, onConfirm, onCancel, onVisualize }) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"farm-period.period.modal.title\")}\n \n \n {t(\"farm-period.period.modal.description\")}\n \n \n \n \n {t(\"farm-period.period.modal.visualize-button-label\")}\n \n \n \n \n );\n};\n\nConfirmPeriod.propTypes = propsDefinition;\n\nexport default ConfirmPeriod;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { SELECT_FARM_PERIOD, SET_DEFAULT_PERIOD } from \"../../constants/actionTypes\";\n\n//Notification\nimport toast from \"react-hot-toast\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//API\nimport agent from \"../../agent\";\n\n//Custom Components\nimport ConfirmPeriod from \"./ConfirmPeriod\";\n\n//UI Components\nimport LockIcon from \"@material-ui/icons/Lock\";\nimport HomeIcon from \"@material-ui/icons/Home\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport Portal from \"@material-ui/core/Portal\";\n\nconst propsDefinition = {\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n periods: PropTypes.array, // Provided by Redux\n selectedPeriod: PropTypes.string, // Provided by Redux\n defaultPeriod: PropTypes.string, // Provided by Redux\n setSelectedPeriod: PropTypes.func, // Provided by Redux\n setDefaultPeriod: PropTypes.func, // Provided by Redux\n};\n\nconst SelectFarmPeriod = ({\n periods,\n selectedPeriod,\n defaultPeriod,\n setSelectedPeriod,\n farmId,\n setDefaultPeriod,\n}) => {\n const [confirmPeriodOpen, setConfirmPeriodOpen] = useState(false);\n const [period, setPeriod] = useState(false);\n\n const { t } = useTranslation();\n\n const onSelectChange = (e) => {\n const { lock } = e.currentTarget.dataset;\n if (e.target.value !== defaultPeriod) {\n setPeriod({ id: e.target.value, lock: parseInt(lock) });\n setConfirmPeriodOpen(true);\n } else {\n setSelectedPeriod(e.target.value, parseInt(lock));\n }\n };\n\n if (periods && selectedPeriod) {\n return (\n <>\n \n \n {periods.map((item, i) => {\n return (\n \n
\n {item.id === defaultPeriod && (\n \n )}\n {item.name}\n {item.lock && item.lock.status === 2 && (\n \n )}\n
\n
\n );\n })}\n \n
\n \n {\n setConfirmPeriodOpen(false);\n }}\n onConfirm={() => {\n const updateDefaultPeriod = agent.Farms.update(farmId, {\n farm: { defaultPeriod: { id: period.id } },\n }).then((res) => {\n setDefaultPeriod(res.body.farm.defaultPeriod.id);\n setSelectedPeriod(period.id, period.lock);\n setConfirmPeriodOpen(false);\n });\n\n toast.promise(updateDefaultPeriod, {\n loading: t(\"global.loading\"),\n success: t(\"login.notifications.success\"),\n error: t(\"login.notifications.error\"),\n });\n }}\n onVisualize={() => {\n setSelectedPeriod(period.id, period.lock);\n setConfirmPeriodOpen(false);\n }}\n />\n \n \n );\n }\n return null;\n};\n\nSelectFarmPeriod.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n selectedPeriod: state.farm.selectedPeriod,\n farmId: state.farm.farm.id,\n periods: state.farm.periods,\n defaultPeriod: state.farm.defaultPeriod,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n setSelectedPeriod: (payload, lock) =>\n dispatch({\n type: SELECT_FARM_PERIOD,\n payload,\n lock,\n }),\n setDefaultPeriod: (payload) =>\n dispatch({\n type: SET_DEFAULT_PERIOD,\n payload,\n }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SelectFarmPeriod);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//UI Components\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n variant: PropTypes.string,\n color: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n icon: PropTypes.object.isRequired,\n};\n\nconst TypographyWithIcon = ({ variant, color, label, icon }) => {\n return (\n \n \n {label}\n \n \n {icon}\n \n \n );\n};\n\nTypographyWithIcon.propTypes = propsDefinition;\n\nexport default TypographyWithIcon;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom Components\nimport TypographyWithIcon from \"../../TypographyWithIcon\";\n\n//UI Components\nimport Card from \"@material-ui/core/Card\";\nimport CardActionArea from \"@material-ui/core/CardActionArea\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Box from \"@material-ui/core/Box\";\nimport Typography from \"@material-ui/core/Typography\";\nimport NavigateNextIcon from \"@material-ui/icons/NavigateNext\";\n\nconst styles = (theme) => ({\n root: {\n marginBottom: theme.spacing(1.4),\n },\n title: {\n fontSize: 18,\n fontWeight: 700,\n lineHeight: 1.2,\n padding: theme.spacing(0.75, 2),\n },\n desc: {\n padding: theme.spacing(0, 1),\n },\n progressValid: {\n backgroundColor: \"green\",\n },\n titleBox: {\n display: \"flex\",\n alignItems: \"center\",\n },\n progress: {\n height: 5,\n },\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n classes: PropTypes.object,\n verified: PropTypes.number.isRequired,\n title: PropTypes.string.isRequired,\n progress: PropTypes.number.isRequired,\n onClick: PropTypes.func.isRequired,\n};\n\nconst CropCard = ({ classes, verified, title, progress, onClick }) => {\n const { t } = useTranslation();\n\n let progressLabel = t(\"dashboard.crops.crop-card.start-encoding-label\");\n if (progress > 0 && progress < 100) {\n progressLabel = t(\"dashboard.crops.crop-card.continue-encoding-label\");\n } else if (progress !== 0) {\n progressLabel = t(\"dashboard.crops.crop-card.modify-encoding-label\");\n }\n\n return (\n \n \n \n \n \n \n \n \n {title}\n \n \n \n }\n />\n \n \n \n \n );\n};\n\nCropCard.propTypes = propsDefinition;\n\nexport default withStyles(styles)(CropCard);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport LockOpenOutlinedIcon from \"@material-ui/icons/LockOpenOutlined\";\nimport LockOutlinedIcon from \"@material-ui/icons/LockOutlined\";\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n marginRight: \"8px\",\n },\n lock: {\n backgroundColor: theme.palette.error.main,\n \"&:hover\": {\n backgroundColor: theme.palette.error.dark,\n },\n },\n unlock: {\n backgroundColor: theme.palette.info.main,\n \"&:hover\": {\n backgroundColor: theme.palette.info.dark,\n },\n },\n}));\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n lock: PropTypes.object.isRequired,\n handleCreateLock: PropTypes.func.isRequired,\n handleLocking: PropTypes.func.isRequired,\n handleUnlocking: PropTypes.func.isRequired,\n};\n\nconst LockButton = ({ lock, handleCreateLock, handleLocking, handleUnlocking }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n\n switch (lock.status) {\n case 0:\n return (\n \n );\n case 1:\n return (\n \n );\n case 2:\n return (\n \n );\n default:\n return null;\n }\n};\n\nLockButton.propTypes = propsDefinition;\n\nexport default LockButton;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n onConfirm: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n};\n\nconst LockingConfirmation = ({ open, onConfirm, onCancel, disabled }) => {\n const { t } = useTranslation();\n\n const handleConfirm = () => {\n onConfirm();\n };\n\n const handleCancel = () => {\n onCancel();\n };\n\n return (\n \n \n {t(\"lock.locking-modal.title\")}\n \n \n {t(\"lock.locking-modal.description\")}\n \n \n \n {t(\"lock.locking-modal.cancel-button-label\")}\n \n \n \n \n );\n};\n\nLockingConfirmation.propTypes = propsDefinition;\n\nexport default LockingConfirmation;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\nimport TextField from \"@material-ui/core/TextField\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n onConfirm: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n error: PropTypes.string.isRequired,\n};\n\nconst UnlockingConfirmation = ({ open, onConfirm, onCancel, disabled, error }) => {\n const [password, setPassword] = useState(\"\");\n\n const { t } = useTranslation();\n\n const handleConfirm = () => {\n onConfirm(password);\n setPassword(\"\");\n };\n\n const handleCancel = () => {\n onCancel();\n };\n\n return (\n \n \n {t(\"lock.unlock-modal.title\")}\n \n \n {t(\"lock.unlock-modal.description\")}\n {\n setPassword(e.target.value);\n }}\n />\n \n \n \n {t(\"lock.unlock-modal.cancel-button-label\")}\n \n \n {t(\"lock.unlock-modal.confirm-button-label\")}\n \n \n \n );\n};\n\nUnlockingConfirmation.propTypes = propsDefinition;\n\nexport default UnlockingConfirmation;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n CROP_REDIRECT,\n SELECT_FARM_PERIOD,\n UPDATE_LOCK,\n} from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//HOC\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\nimport profiles from \"../../../constants/profiles\";\nimport SelectFarmPeriod from \"../../SelectFarmPeriod\";\nimport CropCard from \"./CropCard\";\n\n//Custom Components\nimport LockButton from \"./LockButton\";\nimport LockingConfirmation from \"./LockingConfirmation\";\nimport UnlockingConfirmation from \"./UnlockingConfirmation\";\n\n//Theme\nimport { grey } from \"@material-ui/core/colors\";\n\n//UI Components\nimport { withStyles } from \"@material-ui/core/styles\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Portal from \"@material-ui/core/Portal\";\n\nconst styles = (theme) => ({\n period: {\n fontSize: 20,\n },\n culturesList: {\n marginBottom: theme.spacing(1),\n },\n root: {\n width: \"100%\",\n height: \"100%\",\n backgroundColor: grey[300],\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: theme.spacing(2),\n },\n paper: {\n backgroundColor: \"inherit\",\n },\n});\n\nconst propsDefinition = {\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n periodId: PropTypes.string, // Provided by Redux\n crops: PropTypes.array, // Provided by Redux\n lock: PropTypes.object, // Provided by Redux\n classes: PropTypes.object, // provided by Material UI Style\n match: PropTypes.object, // provided by the router\n updateLock: PropTypes.func, // Provided by Redux\n};\n\nconst CropsSection = ({\n classes,\n crops,\n onCropCardClick,\n lock,\n farmId,\n periodId,\n updateLock,\n match,\n}) => {\n const { t } = useTranslation();\n const [lockingOpen, setLockingOpen] = useState(false);\n const [unlockingOpen, setUnlockingOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(\"\");\n\n const permissions = new Permissions(null, null, [profiles._ADM]);\n\n const handleLockingConfirm = () => {\n setLoading(true);\n if (lock.status === 0) {\n const createLock = agent.Farms.Lock.create(farmId, periodId)\n .then((res) => {\n setLockingOpen(false);\n updateLock(res.body.lock, periodId);\n setLoading(false);\n })\n .catch((err) => {\n setLoading(false);\n });\n\n toast.promise(createLock, {\n loading: t(\"global.loading\"),\n success: t(\"lock.locking-modal.notification.success\"),\n error: t(\"lock.locking-modal.notification.error\"),\n });\n } else {\n const lockingLock = agent.Farms.Lock.lock(farmId, lock.id)\n .then((res) => {\n setLockingOpen(false);\n updateLock(res.body.lock, periodId);\n setLoading(false);\n })\n .catch((err) => {\n setLoading(false);\n });\n\n toast.promise(lockingLock, {\n loading: t(\"global.loading\"),\n success: t(\"lock.locking-modal.notification.success\"),\n error: t(\"lock.locking-modal.notification.error\"),\n });\n }\n };\n\n const handleLockingCancel = () => {\n setLockingOpen(false);\n };\n\n const handleUnlockingConfirm = (password) => {\n setLoading(true);\n const unlockLock = agent.Farms.Lock.unlock(farmId, lock.id, password)\n .then((res) => {\n updateLock(res.body.lock, periodId);\n setUnlockingOpen(false);\n setLoading(false);\n })\n .catch((err) => {\n setError(err.response.body.error);\n setLoading(false);\n });\n\n toast.promise(unlockLock, {\n loading: t(\"global.loading\"),\n success: t(\"lock.unlock-modal.notification.success\"),\n error: t(\"lock.unlock-modal.notification.error\"),\n });\n };\n\n const handleUnlockingCancel = () => {\n setUnlockingOpen(false);\n };\n\n let cropsList = [];\n if (crops) {\n cropsList = crops.map((item, index) => {\n return (\n onCropCardClick(farmId, item.id)}\n />\n );\n });\n }\n\n if (match.params.farmId === \"new\") {\n return (\n \n \n {t(\"dashboard.crops.new-farm-message\")}\n \n \n );\n }\n\n if (crops) {\n return (\n \n {t(\"dashboard.crops.title\")}\n \n \n \n {t(\"dashboard.crops.period-title\")}\n \n \n \n \n \n \n {permissions.canView() && (\n setUnlockingOpen(true)}\n handleLocking={() => setLockingOpen(true)}\n handleCreateLock={() => setLockingOpen(true)}\n />\n )}\n \n \n
{cropsList}
\n \n \n \n \n handleUnlockingConfirm(password)}\n onCancel={handleUnlockingCancel}\n />\n \n
\n );\n }\n\n return (\n \n \n {t(\"dashboard.crops.empty-crops-message\")}\n \n \n );\n};\n\nCropsSection.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n crops: state.farm.crops,\n lock: state.farm.lock,\n periodId: state.farm.selectedPeriod,\n farmId: state.farm.farm ? state.farm.farm.id : null,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onCropCardClick: (farmId, cropId, selectedPeriod) => {\n dispatch({\n type: CROP_REDIRECT,\n payload: { farmId, cropId, selectedPeriod },\n });\n },\n setSelectedPeriod: (payload) =>\n dispatch({\n type: SELECT_FARM_PERIOD,\n payload,\n }),\n updateLock: (payload, periodId) => dispatch({ type: UPDATE_LOCK, payload, periodId }),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(CropsSection));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport { useEffect, useRef } from \"react\";\n\nfunction IsMountedRef() {\n const ref = useRef(null);\n useEffect(() => {\n ref.current = true;\n return () => (ref.current = false);\n });\n return ref;\n}\n\nexport default IsMountedRef;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\nimport { change } from \"redux-form\";\n\n//Custom\nimport useIsMountedRef from \"../../../utils/isMountedRef\";\n\n//Custom theme\nimport customTheme from \"../../../theme\";\n\n//UI Components\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.oneOfType([PropTypes.object, PropTypes.string]).isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n errorText: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n locked: PropTypes.bool,\n\n //Provided props\n changeRegion: PropTypes.func, // Provided by Redux\n};\n\nconst SearchCountry = (props) => {\n const { t } = useTranslation();\n const [countries, setCountries] = useState([\n { id: 0, name: t(\"dashboard.form.fields.country-search\") },\n ]);\n const [loaded, setLooaded] = useState(false);\n const isMountedRef = useIsMountedRef();\n const {\n value,\n onChange,\n disabled,\n errorText,\n name,\n label,\n changeRegion,\n locked,\n } = props;\n\n useEffect(() => {\n const getCountries = async () => {\n const { body } = await agent.Countries.get();\n if (isMountedRef.current) {\n setCountries(body.countries);\n setLooaded(true);\n }\n };\n getCountries();\n }, [isMountedRef]);\n\n const onChangeCustom = (event, data) => {\n changeRegion();\n onChange(event, { id: event.target.value });\n };\n\n if (countries) {\n return (\n \n \n \n {label}\n \n 1) || disabled}\n name={name}\n value={loaded && value.id ? value.id || \"\" : \"\"}\n onChange={onChangeCustom}\n data-woi='country'\n >\n {countries.map((item, i) => {\n return (\n \n {item.name}\n \n );\n })}\n \n \n \n );\n }\n return null;\n};\n\nSearchCountry.propTypes = propsDefinition;\n\nexport default connect(null, {\n changeRegion: () => change(\"ProfileForm\", \"region\", null),\n})(SearchCountry);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { formValueSelector } from \"redux-form\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom\nimport useIsMountedRef from \"../../../utils/isMountedRef\";\n\n// Custom theme\nimport customTheme from \"../../../theme\";\n\n//UI Components\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\n\nconst selector = formValueSelector(\"ProfileForm\");\n\nconst mapStateToProps = (state) => {\n const country = selector(state, \"country\");\n return {\n country,\n };\n};\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.oneOfType([PropTypes.object, PropTypes.string]).isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n errorText: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n locked: PropTypes.bool,\n\n //Provided props\n country: PropTypes.object, // Provided by Redux\n};\n\nconst SearchRegion = ({\n value,\n onChange,\n disabled,\n errorText,\n name,\n label,\n country,\n locked,\n}) => {\n const { t } = useTranslation();\n const [regions, setRegions] = useState([\n { id: 0, disabled: true, name: t(\"dashboard.form.fields.region-search\") },\n ]);\n const [loaded, setLooaded] = useState(false);\n const isMountedRef = useIsMountedRef();\n\n useEffect(() => {\n if (country && country.id) {\n setRegions([\n { id: 0, disabled: true, name: t(\"dashboard.form.fields.region-search\") },\n ]);\n const getRegions = async (countryId) => {\n const { body, error } = await agent.Regions.get(countryId);\n if (isMountedRef.current && !error) {\n setRegions(body.regions);\n setLooaded(true);\n }\n };\n getRegions(country.id);\n }\n }, [country, isMountedRef, t]);\n\n const onChangeCustom = (event, data) => {\n onChange(event, { id: event.target.value });\n };\n\n if (regions) {\n return (\n \n \n \n {label}\n \n 0) || !country || disabled}\n name={name}\n value={loaded ? value.id || \"\" : \"\"}\n onChange={onChangeCustom}\n data-woi='region'\n >\n {regions.map((item, i) => {\n return (\n \n {item.name}\n \n );\n })}\n \n \n \n );\n }\n return null;\n};\n\nSearchRegion.propTypes = propsDefinition;\n\nexport default connect(mapStateToProps)(SearchRegion);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom\nimport useIsMountedRef from \"../../../utils/isMountedRef\";\n\n//UI Components\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport TextField from \"@material-ui/core/TextField\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.oneOfType([PropTypes.object, PropTypes.string]).isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n errorText: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n locked: PropTypes.bool,\n};\n\nconst SearchAgronomist = ({\n value,\n onChange,\n disabled,\n errorText,\n name,\n label,\n locked,\n}) => {\n const { t } = useTranslation();\n const [agronomists, setAgronomists] = useState([\n { id: 0, name: t(\"dashboard.form.fields.agronomist-search\") },\n ]);\n const isMountedRef = useIsMountedRef();\n\n useEffect(() => {\n const getAgronomists = async () => {\n const { body, error } = await agent.Users.Agronomists.get();\n if (isMountedRef.current && !error) {\n setAgronomists(body.agronomists);\n if (!(body.agronomists.length > 1)) {\n onChange(null, body.agronomists[0]);\n }\n }\n };\n getAgronomists();\n }, [isMountedRef, onChange]);\n\n if (agronomists) {\n return (\n \n \n }\n fullWidth={true}\n value={value}\n onChange={onChange}\n size='small'\n freeSolo\n disabled={!(agronomists.length > 1) || disabled}\n name={name}\n options={agronomists || [\"\"]}\n getOptionLabel={(option) =>\n option.name ? option.name : typeof option === \"string\" ? option : \"\"\n }\n renderInput={(params) => (\n \n )}\n />\n \n );\n }\n return null;\n};\n\nSearchAgronomist.propTypes = propsDefinition;\n\nexport default SearchAgronomist;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport isEqual from \"lodash/isEqual\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { Field, reduxForm } from \"redux-form\";\nimport { UPDATE_FARM, DASHBOARD_REDIRECT } from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation, Translation } from \"react-i18next\";\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Notification\nimport toast from \"react-hot-toast\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\nimport profiles from \"../../../constants/profiles\";\n\n//Custom Components\nimport SearchCountry from \"./SearchCountry\";\nimport SearchRegion from \"./SearchRegion\";\nimport SearchAgronomist from \"./SearchAgronomist\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\n//UI Components\nimport Chip from \"@material-ui/core/Chip\";\nimport TextField from \"@material-ui/core/TextField\";\nimport FormHelperText from \"@material-ui/core/FormHelperText\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Button from \"@material-ui/core/Button\";\nimport SmartphoneIcon from \"@material-ui/icons/Smartphone\";\nimport PhoneIcon from \"@material-ui/icons/Phone\";\nimport EmailIcon from \"@material-ui/icons/Email\";\n\nconst InitialFormState = {\n id: undefined,\n farmName: \"\",\n firstName: \"\",\n lastName: \"\",\n tel: \"\",\n mobile: \"\",\n email: \"\",\n address: \"\",\n postalCode: \"\",\n city: \"\",\n country: { id: \"\" },\n region: { id: \"\" },\n agronomist: { id: \"\" },\n};\n\nconst validate = (values) => {\n const errors = {};\n const requiredFields = [\n \"firstName\",\n \"lastName\",\n \"email\",\n \"postalCode\",\n \"city\",\n \"country\",\n \"region\",\n ];\n requiredFields.forEach((field) => {\n if (!values[field]) {\n errors[field] = (\n {(t) => t(\"dashboard.form.fields.errors.required\")}\n );\n }\n });\n if (values.email && !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(values.email)) {\n errors.email = (\n {(t) => t(\"dashboard.form.fields.errors.invalid-email\")}\n );\n }\n return errors;\n};\n\nconst renderTextField = ({\n label,\n input,\n meta: { touched, invalid, error },\n ...custom\n}) => (\n \n);\n\nconst renderSearchCountry = ({ input, label, meta: { touched, error }, ...custom }) => (\n \n input.onChange(data)}\n {...custom}\n label={label}\n />\n {renderFormHelper({ touched, error })}\n \n);\n\nconst renderSearchRegion = ({ input, label, meta: { touched, error }, ...custom }) => (\n \n input.onChange(data)}\n {...custom}\n label={label}\n />\n {renderFormHelper({ touched, error })}\n \n);\n\nconst renderSearchAgronomist = ({\n input,\n label,\n meta: { touched, error },\n ...custom\n}) => (\n \n input.onChange(data)}\n {...custom}\n label={label}\n />\n {renderFormHelper({ touched, error })}\n \n);\n\nconst renderFormHelper = ({ touched, error }) => {\n if (!(touched && error)) {\n return;\n } else {\n return {touched && error};\n }\n};\n\nconst styles = (theme) => ({\n root: {\n padding: theme.spacing(2),\n backgroundColor: \"#faf5ea\",\n },\n topBar: {\n height: \"30px\",\n marginBottom: theme.spacing(2),\n },\n actionButtons: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n});\n\nconst propsDefinition = {\n //Provided props\n farm: PropTypes.object, // Provided by Redux\n updateFarm: PropTypes.func, // Provided by Redux\n onDashboardRedirect: PropTypes.func, // Provided by Redux\n classes: PropTypes.object, // Provided by Material Ui Style\n initialValues: PropTypes.object, // Provided by Redux-Form\n submitting: PropTypes.bool, // Provided by Redux-Form\n handleSubmit: PropTypes.func, // Provided by Redux-Form\n match: PropTypes.object, // Provided by Router\n};\n\nconst ProfileForm = ({\n handleSubmit,\n submitting,\n classes,\n match,\n onDashboardRedirect,\n updateFarm,\n initialValues,\n farm,\n}) => {\n const [edit, setEdit] = useState(false);\n const [verify, setVerify] = useState(false);\n const { t } = useTranslation();\n\n const permissions = new Permissions(initialValues.verified ? 3 : 0, null, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n ]);\n\n useEffect(() => {\n if (match.params.farmId === \"new\") {\n setEdit(true);\n }\n }, [match, setEdit]);\n\n const handleForm = (values) => {\n if (match.params.farmId === \"new\") {\n const createFarm = agent.Farms.create({\n farm: { ...values },\n }).then((res) => {\n onDashboardRedirect(res.body.farm.id);\n });\n\n toast.promise(createFarm, {\n loading: t(\"global.loading\"),\n success: t(\"dashboard.form.notifications.farm-added\"),\n error: t(\"dashboard.form.notifications.error\"),\n });\n } else {\n const difference = Object.keys(values).filter(\n (k) => !isEqual(values[k], initialValues[k])\n );\n const request = { farm: {} };\n difference.forEach((item) => {\n request.farm[item] = values[item];\n });\n if (verify) {\n request.farm.verified = 3;\n }\n if (difference.length > 0 || verify) {\n const modifyFarm = agent.Farms.update(initialValues.id, request).then((res) => {\n updateFarm(res.body);\n });\n\n toast.promise(modifyFarm, {\n loading: t(\"global.loading\"),\n success: t(\"dashboard.form.notifications.farm-saved\"),\n error: t(\"dashboard.form.notifications.error\"),\n });\n }\n setEdit(false);\n setVerify(false);\n }\n };\n\n const normalizePhone = (value, prev) => {\n if (!value) {\n return value;\n }\n const onlyNums = value.replace(/[^0-9+]/g, \"\");\n\n return onlyNums;\n };\n\n return (\n \n \n {!edit && !verify && permissions.canView() && (\n \n \n {initialValues.verified === 0 && (\n \n )}\n \n \n {permissions.canView() ? (\n \n ) : null}\n {permissions.canVerify() && (\n \n )}\n \n \n )}\n \n \n value.toUpperCase()}\n autoComplete='chrome-off'\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {edit && (\n \n \n \n )}\n {permissions.canView() && verify && (\n \n \n \n )}\n \n \n \n );\n};\n\nProfileForm.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => {\n return {\n initialValues: state.farm.farm ? state.farm.farm : InitialFormState,\n farm: state.farm.farm,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n updateFarm: (payload) => dispatch({ type: UPDATE_FARM, payload }),\n onDashboardRedirect: (farmId) =>\n dispatch({ type: DASHBOARD_REDIRECT, payload: { farmId } }),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(\n reduxForm({\n form: \"ProfileForm\",\n validate,\n destroyOnUnmount: false,\n enableReinitialize: true,\n })(withStyles(styles)(ProfileForm))\n);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Theme\nimport customTheme from \"../../theme\";\n\n//UI Components\nimport Card from \"@material-ui/core/Card\";\nimport Grid from \"@material-ui/core/Grid\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport CardActionArea from \"@material-ui/core/CardActionArea\";\nimport Typography from \"@material-ui/core/Typography\";\nimport NavigateNextIcon from \"@material-ui/icons/NavigateNext\";\n\nconst styles = (theme) => ({\n root: {\n margin: theme.spacing(1, 0),\n },\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n title: PropTypes.string.isRequired,\n desc: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n dataWoi: PropTypes.string.isRequired,\n\n //Provided props\n classes: PropTypes.object, // Provided by Material Ui Style\n};\n\nconst CardButton = ({ classes, title, desc, onClick, dataWoi }) => {\n return (\n \n \n \n \n \n \n {title}\n \n {desc}\n \n \n \n \n \n \n \n \n );\n};\n\nCardButton.propTypes = propsDefinition;\n\nexport default withStyles(styles)(CardButton);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n DASHBOARD_LOADED,\n EQUIPMENTS_REDIRECT,\n PURCHASES_REDIRECT,\n LAND_REDIRECT,\n GHG_PROGRAM_REDIRECT,\n HEDGEROWS_REDIRECT,\n LAND_OCCUPATION_REDIRECT,\n} from \"../../constants/actionTypes\";\n\n//API\nimport agent from \"../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom Components\nimport CropSection from \"./CropsSection\";\nimport ProfileForm from \"./ProfileForm\";\nimport CardButton from \"./CardButton\";\n\n//UI Components\nimport Grid from \"@material-ui/core/Grid\";\n\nconst propsDefinition = {\n //Provided props\n match: PropTypes.object, // Provided by Router\n farm: PropTypes.object, // Provided by Redux\n redirectEquipments: PropTypes.func, // Provided by Redux\n redirectPurchases: PropTypes.func, // Provided by Redux\n redirectLand: PropTypes.func, // Provided by Redux\n redirectHedgerows: PropTypes.func, // Provided by Redux\n redirectOccupation: PropTypes.func, // Provided by Redux\n redirectProgram: PropTypes.func, // Provided by Redux\n onLoad: PropTypes.func, // Provided by Redux\n selectedFarm: PropTypes.string, // Provided by Redux\n loaded: PropTypes.bool, // Provided by Redux\n refreshFarm: PropTypes.bool, // Provided by Redux\n};\n\nconst Dashboard = ({\n match,\n farm,\n redirectEquipments,\n redirectPurchases,\n redirectLand,\n redirectHedgerows,\n redirectOccupation,\n redirectProgram,\n onLoad,\n selectedFarm,\n loaded,\n refreshFarm,\n}) => {\n const { t } = useTranslation();\n\n useEffect(() => {\n if (!loaded || refreshFarm) {\n if (selectedFarm !== \"new\") {\n onLoad(agent.Farms.getOne(selectedFarm));\n } else {\n onLoad({ farm: {} });\n }\n }\n }, [selectedFarm, onLoad, loaded, refreshFarm]);\n\n if (selectedFarm === \"new\") {\n return (\n \n \n \n \n \n \n \n \n );\n }\n if (farm && selectedFarm === farm.id) {\n return (\n \n \n \n \n \n \n \n \n \n redirectEquipments(match.params)}\n />\n \n \n redirectPurchases(match.params)}\n />\n \n \n redirectLand(match.params)}\n />\n \n \n redirectProgram(match.params)}\n />\n \n \n redirectHedgerows(match.params)}\n />\n \n \n redirectOccupation(match.params)}\n />\n \n \n );\n }\n return null;\n};\n\nDashboard.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n ...state.farm,\n selectedFarm: state.common.selectedFarm,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onLoad: (payload) => dispatch({ type: DASHBOARD_LOADED, payload }),\n redirectEquipments: (payload) => dispatch({ type: EQUIPMENTS_REDIRECT, payload }),\n redirectPurchases: (payload) => dispatch({ type: PURCHASES_REDIRECT, payload }),\n redirectLand: (payload) => dispatch({ type: LAND_REDIRECT, payload }),\n redirectProgram: (payload) => dispatch({ type: GHG_PROGRAM_REDIRECT, payload }),\n redirectHedgerows: (payload) => dispatch({ type: HEDGEROWS_REDIRECT, payload }),\n redirectOccupation: (payload) => dispatch({ type: LAND_OCCUPATION_REDIRECT, payload }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Dashboard);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { SELECT_CROP } from \"../../constants/actionTypes\";\n\n//UI Components\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\n\nconst propsDefinition = {\n //Provided props\n crops: PropTypes.array, // Provided by Redux\n selectedCrop: PropTypes.string, // Provided by Redux\n selectedOperation: PropTypes.string, // Provided by Redux\n setSelectedCrop: PropTypes.func, // Provided by Redux\n};\n\nconst SelectCrop = ({ crops, selectedCrop, selectedOperation, setSelectedCrop }) => {\n useEffect(() => {\n if (crops && !crops.some((item) => item.id === selectedCrop)) {\n setSelectedCrop(crops[0].id);\n }\n }, [crops, setSelectedCrop, selectedCrop]);\n\n const onSelectChange = (event) => {\n setSelectedCrop(event.target.value);\n };\n\n if (crops && crops.some((item) => item.id === selectedCrop)) {\n return (\n \n \n {crops.map((item, i) => {\n return (\n \n {item.name}\n \n );\n })}\n \n \n );\n }\n return null;\n};\n\nSelectCrop.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n crops: state.farm.crops,\n selectedCrop: state.crop.selectedCrop,\n selectedOperation: state.crop.selectedOperation,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n setSelectedCrop: (payload) => dispatch({ type: SELECT_CROP, payload }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SelectCrop);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom Components\nimport SelectCrop from \"./SelectCrop\";\n\n//UI Components\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Provided props\n match: PropTypes.object, // Provided by Router\n};\n\nconst CropsHeader = ({ match }) => {\n const { t } = useTranslation();\n\n return (\n \n \n \n {t(\"operations.crop-title\")}\n \n \n \n \n );\n};\n\nCropsHeader.propTypes = propsDefinition;\n\nexport default CropsHeader;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n onCancel: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n};\n\nconst ConfirmSingleOperation = ({ onCancel, onConfirm, open }) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"operations.section.menu.confirm-modal.title\")}\n \n \n {t(\"operations.section.menu.confirm-modal.subtitle\")}\n {t(\"operations.section.menu.confirm-modal.description\")}\n \n \n \n \n \n \n );\n};\n\nConfirmSingleOperation.propTypes = propsDefinition;\n\nexport default ConfirmSingleOperation;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//UI Components\nimport TextField from \"@material-ui/core/TextField\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n query: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n handleClear: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n className: PropTypes.string,\n};\n\nconst SearchPaddockBar = ({ query, onChange, handleClear, label, className }) => {\n return (\n \n \n \n \n \n ) : (\n \n \n \n ),\n }}\n />\n );\n};\n\nSearchPaddockBar.propTypes = propsDefinition;\n\nexport default SearchPaddockBar;\n","export default __webpack_public_path__ + \"static/media/bio.7abe615a.jpg\";","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//UI Components\nimport bioLogo from \"../assets/bio/bio.jpg\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n style: PropTypes.object,\n height: PropTypes.string,\n};\n\nconst BioLogo = ({ style, height }) => {\n return (\n \n );\n};\n\nBioLogo.propTypes = propsDefinition;\n\nexport default BioLogo;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom Components\nimport BioLogo from \"../../../BioLogo\";\n\n//UI Components\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Box from \"@material-ui/core/Box\";\nimport Typography from \"@material-ui/core/Typography\";\nimport NavigateNextIcon from \"@material-ui/icons/NavigateNext\";\n\nconst styles = (theme) => ({\n root: {\n backgroundColor: theme.palette.grey[200],\n },\n title: {\n maxWidth: \"70%\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n },\n valid: {\n color: theme.palette.success.main,\n marginRight: \"8px\",\n },\n invalid: {\n color: theme.palette.error.main,\n marginRight: \"8px\",\n },\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n onClick: PropTypes.func.isRequired,\n style: PropTypes.object,\n data: PropTypes.object.isRequired,\n itemIndex: PropTypes.number.isRequired,\n\n //Provided props\n classes: PropTypes.object, // Provided by Material Ui Style\n index: PropTypes.index, // Provided by React Window\n};\n\nconst PaddockListElement = ({ classes, style, itemIndex, data, onClick, index }) => {\n const { t } = useTranslation();\n\n const variableListBackground = itemIndex % 2 ? classes.root : \"\";\n\n return (\n {\n const paddockId = data ? data.id : null;\n onClick(paddockId);\n }}\n >\n \n \n \n {data.blocperi.period.name}\n \n \n \n {data.status === 3 ? (\n \n \n \n ) : (\n \n \n \n )}\n \n {data.blocperi.bloc.name}\n \n {data.isOrganic ? : \"\"}\n \n \n \n \n {t(\"operations.paddock-modal.list-element.add-label\")}\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nPaddockListElement.propTypes = propsDefinition;\n\nexport default withStyles(styles)(PaddockListElement);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n onCancel: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n};\n\nconst ConfirmPaddock = ({ onCancel, onConfirm, open }) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"operations.paddock-modal.confirm-modal.title\")}\n \n \n {t(\"operations.paddock-modal.confirm-modal.description\")}\n \n \n \n \n \n \n );\n};\n\nConfirmPaddock.propTypes = propsDefinition;\n\nexport default ConfirmPaddock;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { FixedSizeList } from \"react-window\";\n\n//API\nimport agent from \"../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//Custom Components\nimport PaddockListElement from \"./PaddockListElement\";\nimport ConfirmPaddock from \"./ConfirmPaddock\";\n\n//UI Components\nimport Paper from \"@material-ui/core/Paper\";\nimport Portal from \"@material-ui/core/Portal\";\n\nconst ItemRenderer = ({ data, index, style }) => {\n // Access the items array using the \"data\" prop:\n const paddock = data.paddocks[index];\n\n return (\n \n );\n};\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n paddocks: PropTypes.array.isRequired,\n onClose: PropTypes.func.isRequired,\n setOperations: PropTypes.func.isRequired,\n farmId: PropTypes.string.isRequired,\n selectedPaddockId: PropTypes.string.isRequired,\n};\n\nconst PaddockList = ({ paddocks, onClose, setOperations, farmId, selectedPaddockId }) => {\n const [openConfirm, setOpenConfirm] = useState(false);\n const [loading, setLoading] = useState(false);\n const [target, setTarget] = useState(\"\");\n const { t } = useTranslation();\n\n const onSelectPaddock = (targetId) => {\n setTarget(targetId);\n setOpenConfirm(true);\n };\n\n const handleSetOperation = () => {\n setLoading(true);\n const importOperations = agent.Farms.Paddocks.Operations.import(\n farmId,\n selectedPaddockId,\n target\n )\n .then((res) => {\n setOperations(res.body.operations);\n setLoading(false);\n setOpenConfirm(false);\n onClose();\n })\n .catch((err) => {\n setLoading(false);\n setOpenConfirm(false);\n onClose();\n throw err;\n });\n\n toast.promise(importOperations, {\n loading: t(\"global.loading\"),\n success: t(\"operations.section.notifications.operations-imported\"),\n error: (err) => err.response.body.error,\n });\n };\n\n return (\n \n {paddocks ? (\n \n {ItemRenderer}\n \n ) : (\n \"\"\n )}\n \n setOpenConfirm(false)}\n loading={loading}\n open={openConfirm}\n />\n \n \n );\n};\n\nPaddockList.propTypes = propsDefinition;\n\nexport default PaddockList;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//UI Components\nimport MuiDialogTitle from \"@material-ui/core/DialogTitle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst styles = (theme) => ({\n root: {\n margin: 0,\n padding: theme.spacing(2),\n },\n closeButton: {\n position: \"absolute\",\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.error.main,\n },\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n children: PropTypes.array.isRequired,\n onClose: PropTypes.func.isRequired,\n\n //Provided props\n classes: PropTypes.object, // Provided by Material Ui Style\n};\n\nconst CustomDialogTitle = ({ children, classes, onClose }) => {\n return (\n \n {children}\n {onClose ? (\n \n \n \n ) : null}\n \n );\n};\n\nCustomDialogTitle.propTypes = propsDefinition;\n\nexport default withStyles(styles)(CustomDialogTitle);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom Components\nimport SearchPaddockBar from \"./SearchPaddockBar\";\nimport PaddockList from \"./PaddockList\";\nimport CustomDialogTitle from \"../../../CustomDialogTitle\";\n\n//UI Components\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport Dialog from \"@material-ui/core/Dialog\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n farmId: PropTypes.string.isRequired,\n selectedCrop: PropTypes.string.isRequired,\n selectedPaddockId: PropTypes.string.isRequired,\n setOperations: PropTypes.func.isRequired,\n selectedPeriod: PropTypes.string.isRequired,\n};\n\nconst PaddockListModal = ({\n open,\n onClose,\n farmId,\n selectedCrop,\n selectedPaddockId,\n setOperations,\n selectedPeriod,\n}) => {\n const { t } = useTranslation();\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [paddocks, setPaddocks] = useState([]);\n\n const handleClose = () => {\n onClose();\n };\n\n useEffect(() => {\n if (open) {\n const getPaddocks = async () => {\n const { body, error } = await agent.Farms.Paddocks.search(\n farmId,\n selectedPeriod,\n selectedCrop\n );\n\n if (!error) {\n setPaddocks(body.paddocks);\n }\n };\n\n getPaddocks();\n }\n }, [farmId, selectedCrop, searchQuery, selectedPeriod, open]);\n\n return (\n \n \n {t(\"operations.paddock-modal.title\")}\n \n \n setSearchQuery(e.target.value)}\n handleClear={() => setSearchQuery(\"\")}\n label={t(\"operations.paddock-modal.search-bar-label\")}\n />\n \n \n \n );\n};\n\nPaddockListModal.propTypes = propsDefinition;\n\nexport default PaddockListModal;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { fade } from \"@material-ui/core/styles/colorManipulator\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//UI Components\nimport Card from \"@material-ui/core/Card\";\nimport CardActionArea from \"@material-ui/core/CardActionArea\";\nimport Grid from \"@material-ui/core/Grid\";\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\n\nconst styles = (theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n icon: {\n fontSize: \"64px\",\n color: theme.palette.secondary.main,\n },\n disabled: {\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n backgroundColor: fade(theme.palette.grey[300], 0.75),\n \"z-index\": 1000,\n },\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n icon: PropTypes.object.isRequired,\n title: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n disabledTitle: PropTypes.string,\n color: PropTypes.string,\n\n //Provided props\n classes: PropTypes.object, // Provided by Material Ui Style\n};\n\nconst MenuButton = ({\n classes,\n icon,\n title,\n onClick,\n disabled,\n disabledTitle,\n color,\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n {title}\n \n \n \n {disabled &&
}\n \n \n \n );\n};\n\nMenuButton.propTypes = propsDefinition;\n\nexport default withStyles(styles)(MenuButton);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n onCancel: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n};\n\nconst ConfirmValidatePaddock = ({ onCancel, onConfirm, open }) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"operations.section.menu.validate-modal.title\")}\n \n \n {t(\"operations.section.menu.validate-modal.description\")}\n \n \n \n \n \n \n );\n};\n\nConfirmValidatePaddock.propTypes = propsDefinition;\n\nexport default ConfirmValidatePaddock;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n ADD_OPERATION,\n SELECT_OPERATION,\n SET_OPERATIONS,\n} from \"../../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom\nimport Permissions from \"../../../../utils/Permissions\";\n\n//Custom Components\nimport ConfirmSingleOperation from \"./ConfirmSingleOperation\";\nimport PaddockListModal from \"./PaddockListModal\";\nimport MenuButton from \"./MenuButton\";\nimport ConfirmValidatePaddock from \"./ConfirmValidatePaddock\";\n\n//Theme\nimport customTheme from \"../../../../theme\";\n\n//UI Components\nimport Portal from \"@material-ui/core/Portal\";\nimport FormatListBulletedIcon from \"@material-ui/icons/FormatListBulleted\";\nimport AddCircleIcon from \"@material-ui/icons/AddCircle\";\nimport ImportExportIcon from \"@material-ui/icons/ImportExport\";\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport Grid from \"@material-ui/core/Grid\";\n\nconst propsDefinition = {\n //Provided props\n operations: PropTypes.array, // Provided by Redux\n addOperation: PropTypes.func, // Provided by Redux\n operationTypes: PropTypes.array, // Provided by Redux\n setSelectedOperation: PropTypes.func, // Provided by Redux\n selectedCrop: PropTypes.string, // Provided by Redux\n selectedPaddock: PropTypes.object, // Provided by Redux\n farmId: PropTypes.string, // Provided by Redux\n setOperations: PropTypes.func, // Provided by Redux\n selectedPeriod: PropTypes.string, // Provided by Redux\n lock: PropTypes.number, // Provided by Redux\n validatePaddock: PropTypes.func, // Provided by Redux\n};\n\nconst OperationSectionMenu = ({\n operations,\n addOperation,\n operationTypes,\n setSelectedOperation,\n selectedCrop,\n selectedPaddock,\n farmId,\n setOperations,\n selectedPeriod,\n lock,\n validatePaddock,\n}) => {\n const { t } = useTranslation();\n\n const [canvas, setCanvas] = useState([]);\n const [paddockModal, setPaddockModal] = useState(false);\n const [singleConfirm, setSingleConfirm] = useState(false);\n const [validateOpen, setValidateOpen] = useState(false);\n\n const permissions = new Permissions(null, lock);\n\n useEffect(() => {\n setCanvas(operations.filter((item) => item.status === -1));\n }, [operations]);\n\n const handleSingleOperation = () => {\n if (canvas.length > 0) {\n setSingleConfirm(true);\n } else {\n setSingleOperation();\n }\n };\n\n const setSingleOperation = async () => {\n const { body, error } = await agent.Farms.Paddocks.Operations.Canvas.delete(\n farmId,\n selectedPaddock.id\n );\n if (!error) {\n setOperations(body.operations);\n addOperation(0, operationTypes[0]);\n }\n };\n\n return (\n
\n \n \n setSelectedOperation(canvas[0].id, true, 0)}\n />\n \n \n \n \n \n setPaddockModal(true)}\n />\n \n \n setValidateOpen(true)}\n />\n \n \n \n setPaddockModal(false)}\n farmId={farmId}\n selectedCrop={selectedCrop}\n selectedPaddockId={selectedPaddock.id}\n setOperations={setOperations}\n selectedPeriod={selectedPeriod}\n />\n \n \n setSingleConfirm(false)}\n onConfirm={setSingleOperation}\n />\n \n \n setValidateOpen(false)}\n onConfirm={() => {\n setValidateOpen(false);\n validatePaddock();\n }}\n />\n \n
\n );\n};\n\nOperationSectionMenu.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n operationTypes: state.global.operationTypes,\n selectedPaddock: state.crop.selectedPaddock,\n farmId: state.farm.farm.id,\n selectedCrop: state.crop.selectedCrop,\n selectedPeriod: state.farm.selectedPeriod,\n lock: state.farm.lock.status,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n addOperation: (index, operationType, payload = false) =>\n dispatch({ type: ADD_OPERATION, index, operationType, payload }),\n setSelectedOperation: (payload, canvas = false, index = false) =>\n dispatch({\n type: SELECT_OPERATION,\n payload,\n canvas,\n index,\n }),\n setOperations: (payload) => dispatch({ type: SET_OPERATIONS, payload }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OperationSectionMenu);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom Components\nimport CustomDialogTitle from \"../../../CustomDialogTitle\";\n\n//Theme\nimport customTheme from \"../../../../theme\";\n\n//UI Components\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport List from \"@material-ui/core/List\";\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n errors: PropTypes.array.isRequired,\n onClose: PropTypes.func.isRequired,\n};\n\nconst ValidationErrorModal = ({ open, onClose, errors }) => {\n const { t } = useTranslation();\n\n const handleClose = () => {\n onClose();\n };\n\n const errorList = errors.map((item, index) => (\n \n \n \n \n \n \n ));\n\n return (\n \n \n {t(\"operations.validation-modal.title\")}\n \n \n {errorList}\n \n \n );\n};\n\nValidationErrorModal.propTypes = propsDefinition;\n\nexport default ValidationErrorModal;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//UI Components\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n size: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n className: PropTypes.string,\n\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n};\n\nconst LoadingSpinner = ({ size, color, className }) => {\n return ;\n};\n\nLoadingSpinner.propTypes = propsDefinition;\n\nexport default LoadingSpinner;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport LoadingSpinner from \"../../../LoadingSpinner\";\n\nconst styles = (theme) => ({\n root: {\n backgroundColor: theme.palette.success.dark,\n \"&:hover\": {\n backgroundColor: theme.palette.success.main,\n },\n },\n loading: {\n backgroundColor: theme.palette.info.dark,\n \"&:hover\": {\n backgroundColor: theme.palette.info.dark,\n cursor: \"default\",\n },\n },\n icon: {\n color: \"#FFF\",\n marginRight: \"8px\",\n },\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n disabled: PropTypes.bool.isRequired,\n loading: PropTypes.bool.isRequired,\n label: PropTypes.string.isRequired,\n disabledMessage: PropTypes.string.isRequired,\n handleValidatePaddock: PropTypes.func.isRequired,\n\n //Provided props\n classes: PropTypes.object, // Provided by Material Ui Style\n};\n\nconst ValidatePaddock = ({\n handleValidatePaddock,\n classes,\n disabled,\n disabledMessage,\n label,\n loading,\n}) => {\n return (\n \n
\n {}}\n data-woi='validate-paddock-button'\n >\n {!loading ? (\n \n ) : (\n \n )}\n {label}\n \n
\n
\n );\n};\n\nValidatePaddock.propTypes = propsDefinition;\n\nexport default withStyles(styles)(ValidatePaddock);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//i18n\nimport i18next from \"i18next\";\n\n//utils\nimport getSeparator from \"../utils/getSeparator\";\n\n//UI Components\nimport TextField from \"@material-ui/core/TextField\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport Box from \"@material-ui/core/Box\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n tooltip: PropTypes.string,\n error: PropTypes.bool,\n helperText: PropTypes.string,\n width: PropTypes.string,\n style: PropTypes.object,\n label: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n disabled: PropTypes.bool,\n attribute: PropTypes.string,\n errors: PropTypes.array,\n name: PropTypes.string,\n format: PropTypes.object,\n InputProps: PropTypes.object,\n onChange: PropTypes.func,\n adornment: PropTypes.string,\n};\n\nconst FieldWithTextAdornment = ({\n tooltip = \"\",\n error = false,\n helperText,\n width,\n style,\n label,\n value,\n disabled,\n attribute,\n errors: errList,\n name,\n format,\n InputProps,\n onChange,\n adornment,\n}) => {\n const errors = errList && errList.filter((item) => item.field === name);\n const { field, message } = errors && errors.length > 0 ? errors[0] : {};\n\n return (\n {tooltip} : \"\"}>\n {\n if (\n e.target.value.match(format || /[0-9]+([.,][0-9]+)?/) ||\n e.target.value === \"\"\n ) {\n e.target.value = e.target.value.replace(\",\", \".\");\n onChange(e);\n }\n }}\n onFocus={(event) => event.target.select()}\n error={field || error ? true : false}\n helperText={message ? message : helperText ? helperText : null}\n InputProps={{\n endAdornment:\n InputProps && InputProps.endAdornment ? (\n InputProps.endAdornment\n ) : (\n \n \n {adornment}\n \n \n ),\n ...InputProps,\n }}\n InputLabelProps={{\n shrink: true,\n }}\n data-woi={attribute}\n />\n \n );\n};\n\nFieldWithTextAdornment.propTypes = propsDefinition;\n\nexport default FieldWithTextAdornment;\n","export default function getSeparator(locale, separatorType) {\n const numberWithGroupAndDecimalSeparator = 1000.1;\n return Intl.NumberFormat(locale)\n .formatToParts(numberWithGroupAndDecimalSeparator)\n .find((part) => part.type === separatorType).value;\n}\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\n\n//UI Components\nimport RadioButtonUncheckedIcon from \"@material-ui/icons/RadioButtonUnchecked\";\n\nconst BlankIcon = () => ;\n\nexport default BlankIcon;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useTranslation } from \"react-i18next\";\n\n//Custom\nimport Permissions from \"../../../../../utils/Permissions\";\nimport profiles from \"../../../../../constants/profiles\";\n\n//Custom Components\nimport BlankIcon from \"../../../../BlankIcon\";\n\n//Theme\nimport customTheme from \"../../../../../theme\";\n\n//UI Components\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport WarningIcon from \"@material-ui/icons/Warning\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\n\nconst useStyles = makeStyles((theme) => ({\n statusIcon: {\n marginTop: \"4px\",\n },\n}));\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n status: PropTypes.number,\n};\n\nconst OperationStatusIcon = ({ status }) => {\n const classes = useStyles();\n const { t } = useTranslation();\n\n const permissions = new Permissions(null, null, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n ]);\n\n let statusIcon = ;\n\n switch (status) {\n case 0:\n if (permissions.canView())\n statusIcon = (\n \n \n \n );\n break;\n case 1:\n if (permissions.canView())\n statusIcon = (\n \n \n \n );\n break;\n case 2:\n if (permissions.canView())\n statusIcon = (\n \n \n \n );\n break;\n case 3:\n statusIcon = (\n \n \n \n );\n break;\n default:\n statusIcon = ;\n break;\n }\n\n return <>{statusIcon};\n};\n\nOperationStatusIcon.propTypes = propsDefinition;\n\nexport default OperationStatusIcon;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//UI Components\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n focused: PropTypes.bool.isRequired,\n\n //Provided props\n operationTypes: PropTypes.array, // Provided by Redux\n};\n\nconst SelectOperation = ({ value, onChange, operationTypes, focused }) => {\n if (operationTypes && operationTypes.length > 0 && value >= 0) {\n return (\n \n \n \n );\n }\n return null;\n};\n\nSelectOperation.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n operationTypes: state.global.operationTypes,\n});\n\nexport default connect(mapStateToProps)(SelectOperation);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//UI Components\nimport { KeyboardDatePicker } from \"@material-ui/pickers\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n initDate: PropTypes.string,\n name: PropTypes.string,\n isOpen: PropTypes.bool.isRequired,\n focused: PropTypes.bool,\n value: PropTypes.object,\n label: PropTypes.string.isRequired,\n setIsOpen: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n width: PropTypes.string.isRequired,\n disableFuture: PropTypes.bool,\n maxDate: PropTypes.object,\n minDate: PropTypes.object,\n errors: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nconst SelectDate = ({\n initDate,\n name,\n isOpen,\n focused = true,\n value,\n label,\n setIsOpen,\n disabled = false,\n width,\n disableFuture,\n maxDate,\n minDate,\n errors: errList,\n onChange: handleChange,\n}) => {\n const errors = errList ? errList.filter((item) => item.field === name) : [];\n const { field, message } = errors.length > 0 ? errors[0] : {};\n\n const onChange = (date) => {\n date ? handleChange(date.format(\"yyyy-MM-DD\")) : handleChange(null);\n };\n\n return (\n setIsOpen(true)}\n onClose={() => setIsOpen(false)}\n error={field ? true : false}\n helperText={message ? message : null}\n autoOk\n maxDate={maxDate}\n minDate={minDate}\n disableFuture={disableFuture}\n variant='inline'\n inputVariant='outlined'\n format='DD-MM-yyyy'\n onChange={onChange}\n label={label}\n value={value}\n InputLabelProps={{\n shrink: true,\n }}\n KeyboardButtonProps={{\n style: { padding: 0 },\n }}\n />\n );\n};\n\nSelectDate.propTypes = propsDefinition;\n\nexport default SelectDate;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Autocomplete, { createFilterOptions } from \"@material-ui/lab/Autocomplete\";\nimport TextField from \"@material-ui/core/TextField\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport SearchIcon from \"@material-ui/icons/Search\";\n\nconst filter = createFilterOptions();\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n farmId: PropTypes.string.isRequired,\n selectedPeriod: PropTypes.string.isRequired,\n operationId: PropTypes.string.isRequired,\n currentMachinery: PropTypes.object.isRequired,\n focused: PropTypes.bool.isRequired,\n noteMachinery: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n error: PropTypes.bool.isRequired,\n errors: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n width: PropTypes.string.isRequired,\n};\n\nconst SearchEquipment = ({\n farmId,\n selectedPeriod,\n operationId,\n currentMachinery,\n focused,\n noteMachinery,\n label,\n error,\n errors: errList,\n onChange,\n name,\n width,\n}) => {\n const [equipments, setEquipments] = useState([{}]);\n const [open, setOpen] = useState(false);\n\n const errors = errList.filter((item) => item.field === name);\n const { field, message } = errors.length > 0 ? errors[0] : {};\n const { t } = useTranslation();\n\n const getFarmMachineries = async () => {\n const { body, error } = await agent.Farms.FarmMachineries.get(\n farmId,\n selectedPeriod,\n operationId\n );\n !error &&\n body.operationTypes.length > 0 &&\n setEquipments(body.operationTypes[0].farmMachineries);\n };\n\n const onOpen = async () => {\n setOpen(true);\n await getFarmMachineries();\n };\n\n const onClose = () => {\n setOpen(false);\n };\n\n return (\n }\n disabled={focused ? false : true}\n style={{\n width,\n }}\n onChange={onChange}\n onOpen={onOpen}\n onClose={onClose}\n size='small'\n freeSolo\n forcePopupIcon={open || (currentMachinery && currentMachinery.id) ? false : true}\n popupIcon={}\n filterOptions={(options, params) => {\n const filtered = filter(options, params);\n\n filtered.push({\n dbData: true,\n });\n\n if (params.inputValue !== \"\") {\n filtered.push({\n missing: true,\n givenName: params.inputValue,\n });\n }\n\n return filtered;\n }}\n value={currentMachinery}\n getOptionLabel={(option) => (option.givenName ? option.givenName : \"\")}\n renderOption={(option) => {\n return option ? (\n option.id ? (\n
{option.givenName}
\n ) : option.missing ? (\n
\n
\n {t(\"operations.search-equipment.missing.1\")}\n
\n {option.givenName}\n
\n ) : option.dbData ? (\n
\n {t(\"operations.search-equipment.open-database\")}\n
\n ) : (\n \"\"\n )\n ) : (\n \"\"\n );\n }}\n options={equipments.length > 0 ? equipments : [{ ...currentMachinery }]}\n renderInput={(params) => (\n \n \n \n )}\n data-woi='select-machine'\n />\n );\n};\n\nSearchEquipment.propTypes = propsDefinition;\n\nexport default SearchEquipment;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Theme\nimport customTheme from \"../../../../../theme\";\n\n//UI Components\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Button from \"@material-ui/core/Button\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n operationInputs: PropTypes.array.isRequired,\n focused: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n selected: PropTypes.string,\n label: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n};\n\nconst PurchaseTab = ({\n operationInputs,\n focused,\n onClick,\n selected,\n label,\n type,\n disabled,\n}) => {\n const { t } = useTranslation();\n let count = 0;\n let errors = 0;\n\n const titleList =\n operationInputs.length > 0\n ? operationInputs.map((operationInput, index) => {\n if (operationInput.status >= 0) {\n count++;\n if (!(operationInput.quantity > 0) || !operationInput.farmInputPurchase.id) {\n errors++;\n }\n return (\n
\n {operationInput.farmInputPurchase.name ? (\n operationInput.farmInputPurchase.name\n ) : (\n \n {t(\"operations.operation-input.tab.missing\")}\n \n )}{\" \"}\n -\n 0) ? \"error.light\" : \"primary.main\"}\n style={{ marginLeft: 2 }}\n >\n {operationInput.quantity + \" \"}\n {operationInput.farmInputPurchase.operationUnit}\n \n
\n );\n }\n return null;\n })\n : t(\"operations.operation-input.tab.empty\");\n\n return (\n \n {label}\n {titleList}\n \n }\n >\n
\n \n selected === type ? onClick(null) : focused ? onClick(type) : {}\n }\n data-woi='input-tab'\n >\n \n \n {label}\n \n 0\n ? customTheme.palette.error.main\n : focused\n ? customTheme.palette.text.primary\n : customTheme.palette.text.faded,\n }}\n >\n ({count})\n \n \n \n
\n \n );\n};\n\nPurchaseTab.propTypes = propsDefinition;\n\nexport default PurchaseTab;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport Autocomplete, { createFilterOptions } from \"@material-ui/lab/Autocomplete\";\nimport TextField from \"@material-ui/core/TextField\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\n\nconst filter = createFilterOptions();\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n selectedInputsType: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n periodId: PropTypes.string.isRequired,\n farmId: PropTypes.string.isRequired,\n setOpen: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n note: PropTypes.string,\n selectedCrop: PropTypes.string.isRequired,\n errors: PropTypes.array.isRequired,\n};\n\nconst SearchFarmInputsPurchases = ({\n value,\n onChange,\n name,\n selectedInputsType,\n label,\n periodId,\n farmId,\n setOpen,\n open,\n note,\n selectedCrop,\n errors,\n}) => {\n const { t } = useTranslation();\n\n const [farmInputsPurchases, setFarmInputsPurchases] = useState([]);\n\n useEffect(() => {\n setFarmInputsPurchases([\n {\n id: \"chargement\",\n input: { name: t(\"operations.operation-card.farm-input-search.loading\") },\n },\n ]);\n }, [selectedInputsType, t]);\n\n const getFarmInputsPurchases = async () => {\n const { body, error } = await agent.Farms.FarmInputsPurchases.getWithCrop(\n farmId,\n selectedInputsType,\n periodId,\n selectedCrop\n );\n if (!error) {\n setFarmInputsPurchases(body.farmInputsPurchases);\n } else {\n setFarmInputsPurchases({ id: \"error\", name: \"error\" });\n }\n };\n\n const onOpen = async () => {\n setOpen(true);\n await getFarmInputsPurchases();\n };\n\n const onClose = () => {\n setOpen(false);\n };\n\n return (\n : \"\"\n }\n props={{ disableClearable: true }}\n fullWidth={true}\n value={value}\n onClose={onClose}\n onChange={(e, data) => onChange(data)}\n onOpen={onOpen}\n filterOptions={(options, params) => {\n const filtered = filter(options, params);\n\n filtered.push({\n dbData: true,\n });\n\n if (params.inputValue !== \"\") {\n filtered.push({\n missing: true,\n name: params.inputValue,\n });\n }\n\n return filtered;\n }}\n freeSolo\n size='small'\n name={name}\n forcePopupIcon={open || value.id ? false : true}\n popupIcon={}\n options={farmInputsPurchases}\n getOptionDisabled={(option) => option.id === (\"chargement\" || \"error\")}\n getOptionLabel={(option) =>\n option.input && option.input.name\n ? option.input.name\n : option.name\n ? option.name\n : \"\"\n }\n renderOption={(option) => {\n return option ? (\n option.id ? (\n
\n {option.input && option.input.name\n ? option.input.name\n : option.name\n ? option.name\n : \"\"}\n
\n ) : option.missing ? (\n
\n
\n {t(\"operations.search-purchases.missing.1\")}\n
\n {option.name}\n
\n ) : option.dbData ? (\n
\n {t(\"operations.search-purchases.open-database\")}\n
\n ) : (\n \"\"\n )\n ) : (\n \"\"\n );\n }}\n renderInput={(params) => (\n item.field === name).length > 0}\n helperText={\n errors.filter((item) => item.field === name).length > 0\n ? errors.filter((item) => item.field === name)[0].message\n : note\n ? note\n : \"\"\n }\n InputProps={{\n ...params.InputProps,\n type: \"search\",\n }}\n value={value}\n />\n )}\n />\n );\n};\n\nSearchFarmInputsPurchases.propTypes = propsDefinition;\n\nexport default SearchFarmInputsPurchases;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//UI Components\nimport TextField from \"@material-ui/core/TextField\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n query: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n handleClear: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n className: PropTypes.string,\n};\n\nconst SearchGlobalInputsBar = ({ className, query, onChange, handleClear, label }) => {\n return (\n \n \n \n \n \n ) : (\n \n \n \n ),\n }}\n />\n );\n};\nSearchGlobalInputsBar.propTypes = propsDefinition;\n\nexport default SearchGlobalInputsBar;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//UI Components\nimport ListItem from \"@material-ui/core/ListItem\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Box from \"@material-ui/core/Box\";\nimport Typography from \"@material-ui/core/Typography\";\nimport NavigateNextIcon from \"@material-ui/icons/NavigateNext\";\n\nconst styles = (theme) => ({\n root: {\n backgroundColor: theme.palette.grey[200],\n },\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n itemIndex: PropTypes.number.isRequired,\n style: PropTypes.object,\n data: PropTypes.object.isRequired,\n onClick: PropTypes.func.isRequired,\n\n //Provided props\n classes: PropTypes.object, // Provided by Material Ui Style\n};\n\nconst PurchaseListElement = ({ classes, itemIndex, style, data, onClick }) => {\n const { t } = useTranslation();\n\n const variableListBackground = itemIndex % 2 ? classes.root : \"\";\n\n return (\n {\n const farmInputPurchaseId =\n data && data.farmInputPurchase && data.farmInputPurchase.id\n ? data.farmInputPurchase.id\n : null;\n onClick(data, farmInputPurchaseId);\n }}\n >\n \n \n \n {data.name}\n \n \n \n \n \n {t(\"operations.purchases-database-modal.list-element.add-label\")}\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nPurchaseListElement.propTypes = propsDefinition;\n\nexport default withStyles(styles)(PurchaseListElement);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n loading: PropTypes.bool.isRequired,\n input: PropTypes.object.isRequired,\n open: PropTypes.bool.isRequired,\n onAdd: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n};\n\nconst AddFarmInputPurchase = ({ onCancel, onAdd, open, input, loading }) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"operations.purchases-database-modal.add-modal.title\")}\n \n \n \n {t(\"operations.purchases-database-modal.add-modal.description\", { input })}\n \n \n \n \n {t(\"operations.purchases-database-modal.add-modal.cancel-button-label\")}\n \n \n {t(\"operations.purchases-database-modal.add-modal.add-button-label\")}\n \n \n \n );\n};\n\nAddFarmInputPurchase.propTypes = propsDefinition;\n\nexport default AddFarmInputPurchase;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n onCancel: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n loading: PropTypes.bool.isRequired,\n usedFarmInputPurchase: PropTypes.object.isRequired,\n};\n\nconst ConfirmFarmInputPurchase = ({\n onCancel,\n onConfirm,\n open,\n loading,\n usedFarmInputPurchase,\n}) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"operations.purchases-database-modal.confirm-modal.title\")}\n \n \n {usedFarmInputPurchase && usedFarmInputPurchase.input ? (\n
\n {t(\"operations.purchases-database-modal.confirm-modal.name\", {\n usedFarmInputPurchase,\n })}\n
\n ) : (\n \"\"\n )}\n \n {t(\"operations.purchases-database-modal.confirm-modal.description\")}\n \n
\n \n \n {t(\"operations.purchases-database-modal.confirm-modal.cancel-button-label\")}\n \n \n \n \n );\n};\n\nConfirmFarmInputPurchase.propTypes = propsDefinition;\n\nexport default ConfirmFarmInputPurchase;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState } from \"react\";\nimport { FixedSizeList } from \"react-window\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//Custom Components\nimport PurchaseListElement from \"./PurchaseListElement\";\nimport AddFarmInputPurchase from \"./AddFarmInputPurchase\";\nimport ConfirmFarmInputPurchase from \"./ConfirmFarmInputPurchase\";\n\n//UI Components\nimport Paper from \"@material-ui/core/Paper\";\nimport Portal from \"@material-ui/core/Portal\";\n\nconst ItemRenderer = ({ data, index, style }) => {\n // Access the items array using the \"data\" prop:\n const machinery = data.inputs[index];\n\n return (\n \n );\n};\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n inputs: PropTypes.array.isRequired,\n periodId: PropTypes.string.isRequired,\n selectedInputsType: PropTypes.string.isRequired,\n farmId: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired,\n setFarmInputPurchase: PropTypes.func.isRequired,\n};\n\nconst PurchaseList = ({\n inputs,\n periodId,\n selectedInputsType,\n farmId,\n onClose,\n setFarmInputPurchase,\n}) => {\n const { t } = useTranslation();\n\n const [selectedInput, setSelectedInput] = useState({});\n const [usedFarmInputPurchase, setUsedFarmInputPurchase] = useState({});\n const [openConfirm, setOpenConfirm] = useState(false);\n const [openAdd, setOpenAdd] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const onSelectMachinery = async (input, farmInputPurchaseId = null) => {\n if (farmInputPurchaseId) {\n setLoading(true);\n const { body, error } = await agent.Farms.FarmInputsPurchases.getOne(\n farmId,\n selectedInputsType,\n farmInputPurchaseId\n );\n if (!error) {\n setUsedFarmInputPurchase(body.farmInputPurchase);\n setOpenConfirm(true);\n }\n setLoading(false);\n } else {\n setSelectedInput(input);\n setOpenAdd(true);\n }\n };\n\n const handleAddFarmInputPurchase = async () => {\n setLoading(true);\n const requestBody = {\n farmInputPurchase: {\n price: null,\n input: {\n ...selectedInput,\n },\n period: {\n id: periodId,\n },\n },\n };\n\n const createPurchase = agent.Farms.FarmInputsPurchases.create(\n farmId,\n selectedInputsType,\n requestBody\n )\n .then((res) => {\n setFarmInputPurchase(res.body.farmInputPurchase);\n setOpenConfirm(false);\n setLoading(false);\n onClose();\n })\n .catch(() => {\n setLoading(false);\n onClose();\n });\n\n toast.promise(createPurchase, {\n loading: t(\"global.loading\"),\n success: t(\"operations.equipment-database-modal.notifications.purchase-added\"),\n error: t(\"operations.equipment-database-modal.notifications.purchase-error\"),\n });\n };\n\n const handleSetFarmInputPurchase = () => {\n setFarmInputPurchase(usedFarmInputPurchase);\n setOpenConfirm(false);\n setLoading(false);\n onClose();\n };\n\n return (\n \n {inputs ? (\n \n {ItemRenderer}\n \n ) : (\n \"\"\n )}\n \n setOpenAdd(false)}\n />\n \n \n setOpenConfirm(false)}\n loading={loading}\n open={openConfirm}\n />\n \n \n );\n};\n\nPurchaseList.propTypes = propsDefinition;\n\nexport default PurchaseList;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom Components\nimport SearchGlobalInputsBar from \"./SearchGlobalInputsBar\";\nimport PurchaseList from \"./PurchaseList\";\nimport CustomDialogTitle from \"../../../../../CustomDialogTitle\";\n\n//UI Components\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport Dialog from \"@material-ui/core/Dialog\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n farmId: PropTypes.string.isRequired,\n selectedInputsType: PropTypes.string.isRequired,\n periodId: PropTypes.string.isRequired,\n note: PropTypes.string.isRequired,\n setFarmInputPurchase: PropTypes.func.isRequired,\n};\n\nconst PurchaseListModal = ({\n open,\n onClose,\n farmId,\n selectedInputsType,\n periodId,\n note,\n setFarmInputPurchase,\n}) => {\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [inputs, setInputs] = useState([]);\n const { t } = useTranslation();\n\n const handleClose = () => {\n onClose();\n };\n\n useEffect(() => {\n if (open) {\n const searchInputs = async () => {\n const { body, error } = await agent.Inputs.search(\n selectedInputsType,\n periodId,\n farmId,\n searchQuery\n );\n\n if (!error) {\n setInputs(body.inputs);\n }\n };\n searchInputs();\n }\n }, [open, searchQuery, selectedInputsType, periodId, farmId]);\n\n useEffect(() => {\n if (open) {\n const getInputs = async () => {\n const { body, error } = await agent.Inputs.get(\n selectedInputsType,\n periodId,\n farmId\n );\n\n if (!error) {\n setInputs(body.inputs);\n }\n };\n getInputs();\n }\n }, [open, selectedInputsType, farmId, periodId]);\n\n return (\n \n \n {t(\"operations.purchases-database-modal.title\")}\n \n \n setSearchQuery(e.target.value)}\n label={t(\"operations.purchases-database-modal.search-bar-label\")}\n handleClear={() => setSearchQuery(\"\")}\n />\n {note !== \"\" ? (\n
\n \n {t(\"operations.purchases-database-modal.given-name\")}\n {\" \"}\n {note}\n
\n ) : null}\n \n
\n \n );\n};\n\nPurchaseListModal.propTypes = propsDefinition;\n\nexport default PurchaseListModal;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n onConfirm: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n};\n\nconst DeleteConfirmation = ({ open, onConfirm, onCancel }) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"global.delete-modal.title\")}\n \n \n {t(\"global.delete-modal.description\")}\n \n \n \n \n \n \n );\n};\n\nDeleteConfirmation.propTypes = propsDefinition;\n\nexport default DeleteConfirmation;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom Components\nimport FieldWithTextAdornment from \"../../../../../FieldWithTextAdornment\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n min: PropTypes.number,\n max: PropTypes.number,\n errors: PropTypes.array.isRequired,\n quantity: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n onCancel: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n unit: PropTypes.string,\n setQuantity: PropTypes.func.isRequired,\n};\n\nconst QuantityConfirmation = ({\n open,\n min,\n max,\n errors,\n quantity,\n onCancel,\n onConfirm,\n unit,\n setQuantity,\n}) => {\n const { t } = useTranslation();\n\n const handleConfirm = () => {\n onConfirm();\n };\n\n const handleCancel = () => {\n onCancel();\n };\n\n return (\n \n \n {t(\"operations.operation-input.quantity-confirmation-modal.title\")}\n \n \n \n \n \n {t(\"operations.operation-input.quantity-confirmation-modal.sub-title-left\")}\n \n {\n setQuantity(e.target.value);\n }}\n errors={errors}\n adornment={unit}\n width='135px'\n />\n \n \n \n {t(\n \"operations.operation-input.quantity-confirmation-modal.sub-title-right\"\n )}\n \n \n \n \n \n \n {t(\"operations.operation-input.quantity-confirmation-modal.description\")}\n \n \n \n \n \n \n \n );\n};\n\nQuantityConfirmation.propTypes = propsDefinition;\n\nexport default QuantityConfirmation;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom\nimport FieldWithTextAdornment from \"../../../../../FieldWithTextAdornment\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Grid from \"@material-ui/core/Grid\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n onCancel: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n loading: PropTypes.bool,\n farmInputPurchase: PropTypes.object.isRequired,\n selectedPeriod: PropTypes.string.isRequired,\n selectedCrop: PropTypes.string.isRequired,\n farmId: PropTypes.string.isRequired,\n};\n\nconst OrganicModal = ({\n onCancel,\n onConfirm,\n open,\n loading,\n farmInputPurchase,\n selectedPeriod,\n selectedCrop,\n farmId,\n}) => {\n const [passedYears, setPassedYears] = useState(0);\n const [percentage, setPercentage] = useState(0);\n const [changed, setChanged] = useState(false);\n const [errors, setErrors] = useState([]);\n\n const { t } = useTranslation();\n\n const validateData = useCallback(() => {\n if (!(passedYears > 0)) {\n setErrors((errors) => [\n ...errors,\n { field: \"passedYears\", message: t(\"Mandatory\") },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((error) => error.field !== \"passedYears\")]);\n }\n if (!(percentage > 0)) {\n setErrors((errors) => [\n ...errors,\n { field: \"percentage\", message: t(\"Mandatory\") },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((error) => error.field !== \"percentage\")]);\n }\n }, [passedYears, percentage, t]);\n\n useEffect(() => {\n if (changed) {\n validateData();\n }\n }, [changed, validateData]);\n\n const handleCreate = async () => {\n const reqBody = {\n cropsOrganics: {\n fertiliser: {\n id: farmInputPurchase.input.id,\n },\n passedYears,\n percentage,\n },\n };\n const { error } = await agent.Farms.CropsOrganic.create(\n farmId,\n selectedPeriod,\n selectedCrop,\n reqBody\n );\n\n setPassedYears(0);\n setPercentage(0);\n setChanged(false);\n setErrors([]);\n\n if (!error) {\n onConfirm();\n } else {\n onCancel();\n }\n };\n\n const handleCancel = () => {\n onCancel();\n };\n\n return (\n \n \n {t(\"operations.operation-input-organmic-modal.title\")}\n \n \n \n \n \n {t(\"operations.operation-input-organmic-modal.subtitle\")}\n \n \n \n \n \n {t(\"operations.operation-input-organmic-modal.passedYears\")}\n \n \n {\n setPassedYears(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"operations.operation-input-organmic-modal.yearsAgo\")}\n width='140px'\n />\n \n \n \n \n {t(\"operations.operation-input-organmic-modal.on\")}\n \n \n {\n setPercentage(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={\"%\"}\n width='140px'\n />\n \n \n {t(\"operations.operation-input-organmic-modal.percentage\")}\n \n \n \n \n \n \n \n {t(\"operations.paddock-modal.confirm-modal.cancel-button-label\")}\n \n 0) || !(percentage > 0)}\n onClick={handleCreate}\n color='secondary'\n data-woi='add-organic-fertiliser'\n >\n {t(\"operations.paddock-modal.confirm-modal.confirm-button-label\")}\n \n \n \n );\n};\n\nOrganicModal.propTypes = propsDefinition;\n\nexport default OrganicModal;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom\nimport FieldWithTextAdornment from \"../../../../../FieldWithTextAdornment\";\nimport SearchFarmInputsPurchases from \"./SearchFarmInputsPurchases\";\nimport PurchaseListModal from \"./PurchaseListModal\";\nimport DeleteConfirmation from \"../../../../../DeleteConfirmation\";\nimport QuantityConfirmation from \"./QuantityConfirmation\";\n\n//Custom Components\nimport OrganicModal from \"./OrganicModal\";\n\n//Theme\nimport customTheme from \"../../../../../../theme\";\n\n//UI Components\nimport Grid from \"@material-ui/core/Grid\";\nimport Button from \"@material-ui/core/Button\";\nimport Portal from \"@material-ui/core/Portal\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport DeleteForever from \"@material-ui/icons/DeleteForever\";\nimport Box from \"@material-ui/core/Box\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n selectedPaddock: PropTypes.object.isRequired,\n selectedInputsType: PropTypes.string.isRequired,\n purchase: PropTypes.object,\n farmId: PropTypes.string.isRequired,\n selectedPeriod: PropTypes.string.isRequired,\n selectedOperation: PropTypes.string,\n index: PropTypes.number,\n handleInputErrors: PropTypes.func.isRequired,\n inputErrors: PropTypes.array.isRequired,\n onInputsChange: PropTypes.func.isRequired,\n setEditing: PropTypes.func.isRequired,\n selectedCrop: PropTypes.string.isRequired,\n setCheckStatus: PropTypes.func.isRequired,\n};\n\nconst OperationInputsRow = ({\n selectedPaddock,\n selectedInputsType,\n purchase = { id: \"newLine\" },\n farmId,\n selectedPeriod,\n selectedOperation,\n index,\n handleInputErrors,\n inputErrors,\n onInputsChange,\n setEditing,\n selectedCrop,\n setCheckStatus,\n}) => {\n const { t } = useTranslation();\n\n const [id, setId] = useState(null);\n const [quantity, setQuantity] = useState(0);\n const [farmInputPurchase, setFarmInputPurchase] = useState({});\n const [operationPrice, setOperationPrice] = useState(0);\n const [totalQuantity, setTotalQuantity] = useState(0);\n const [totalPrice, setTotalPrice] = useState(0);\n const [quantityMin, setQuantityMin] = useState(0);\n const [quantityMax, setQuantityMax] = useState(0);\n const [currency, setCurrency] = useState(\"\");\n const [status, setStatus] = useState(0);\n const [note, setNote] = useState(\"\");\n const [errors, setErrors] = useState([]);\n const [changed, setChanged] = useState(false);\n const [confirmOpen, setConfirmOpen] = useState(false);\n const [confirmed, setConfirmed] = useState(false);\n const [openPurchaseModal, setOpenPurchaseModal] = useState(false);\n const [open, setOpen] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [organicOpen, setOrganicOpen] = useState(false);\n\n useEffect(() => {\n if (purchase.id && purchase.id !== \"newLine\" && !id) {\n setId(purchase.id || null);\n setStatus(purchase.status || 0);\n setNote(purchase.note || \"\");\n setQuantity(String(purchase.quantity));\n setOperationPrice(\n purchase.farmInputPurchase ? purchase.farmInputPurchase.operationPrice : 0\n );\n setCurrency(purchase.farmInputPurchase ? purchase.farmInputPurchase.currency : \"\");\n setFarmInputPurchase(\n purchase.farmInputPurchase\n ? {\n id: purchase.farmInputPurchase.id,\n name: purchase.farmInputPurchase.name,\n operationUnit: purchase.farmInputPurchase.operationUnit,\n }\n : {}\n );\n if (purchase.farmInputPurchase && purchase.farmInputPurchase.quantities) {\n setQuantityMin(purchase.farmInputPurchase.quantities.min);\n setQuantityMax(purchase.farmInputPurchase.quantities.max);\n } else {\n setQuantityMin(\"\");\n setQuantityMax(\"\");\n }\n } else if (purchase.id === \"newLine\" && !id) {\n setId(\"newLine\");\n }\n }, [purchase, selectedInputsType, id]);\n\n useEffect(() => {\n if (id === \"newLine\") {\n setQuantity(0);\n setFarmInputPurchase({});\n setOperationPrice(0);\n setTotalQuantity(0);\n setTotalPrice(0);\n setQuantityMin(0);\n setQuantityMax(0);\n setCurrency(\"\");\n setStatus(0);\n setNote(\"\");\n setErrors([]);\n setChanged(false);\n setConfirmOpen(false);\n setConfirmed(false);\n setOpenPurchaseModal(false);\n setOpen(false);\n setDeleteOpen(false);\n }\n }, [selectedInputsType, id]);\n\n useEffect(() => {\n if (!(quantity > 0) || !farmInputPurchase.id) {\n setStatus(0);\n } else if (quantity < quantityMin || quantity > quantityMax) {\n setStatus(1);\n } else if (quantity >= quantityMin && quantity <= quantityMax) {\n setStatus(2);\n }\n }, [quantity, quantityMin, quantityMax, farmInputPurchase]);\n\n const validateData = useCallback(() => {\n if (id && !(id === \"duplicate\") && !(id === \"newLine\")) {\n if (!farmInputPurchase.id && note === \"\") {\n if (!id) {\n setErrors((errors) => [\n ...errors.filter((item) => item.field !== \"farmInputPurchase\"),\n ]);\n } else {\n setErrors((errors) => [\n ...errors,\n {\n field: \"farmInputPurchase\",\n message: t(\"operations.operation-input.farm-input-purchase-required\"),\n },\n ]);\n }\n } else {\n setErrors((errors) => [\n ...errors.filter((item) => item.field !== \"farmInputPurchase\"),\n ]);\n }\n if (!(quantity > 0)) {\n if (!id && !farmInputPurchase.id) {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"quantity\")]);\n } else {\n setErrors((errors) => [\n ...errors,\n {\n field: \"quantity\",\n message: t(\"operations.operation-input.errors.null-quantity\"),\n },\n ]);\n }\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"quantity\")]);\n }\n }\n }, [farmInputPurchase, quantity, id, note, t]);\n\n const setOperationInputErrors = useCallback(\n (errors) => {\n if (inputErrors !== null) {\n if (!inputErrors.some((item) => item === index)) {\n if (errors.length > 0) {\n handleInputErrors([...inputErrors, index]);\n }\n } else {\n if (errors.length === 0) {\n handleInputErrors([...inputErrors.filter((item) => item !== index)]);\n }\n }\n }\n },\n [inputErrors, handleInputErrors, index]\n );\n\n useEffect(() => {\n let invalidErrors = errors.filter((item) => item.field !== \"quantity\");\n if (id === \"newLine\" && farmInputPurchase && farmInputPurchase.id) {\n setOperationInputErrors([{ field: \"id\" }, ...invalidErrors]);\n } else if (id === \"newLine\" && (!farmInputPurchase || !farmInputPurchase.id)) {\n setOperationInputErrors([]);\n } else {\n setOperationInputErrors(invalidErrors);\n }\n }, [errors, setOperationInputErrors, id, farmInputPurchase]);\n\n useEffect(() => {\n if (changed) {\n validateData();\n setCheckStatus(true);\n }\n }, [changed, validateData, setCheckStatus]);\n\n useEffect(() => {\n if (\n !confirmed &&\n !confirmOpen &&\n quantity > 0 &&\n quantity !== purchase.quantity &&\n changed &&\n (quantityMin > 0 || quantityMax > 0) &&\n (quantity < quantityMin || quantity > quantityMax || quantityMin === quantityMax)\n ) {\n setEditing(true);\n const timer = setTimeout(() => setConfirmOpen(true), 1000);\n return () => clearTimeout(timer);\n } else if (!confirmOpen) {\n setConfirmed(true);\n setEditing(false);\n }\n }, [\n quantity,\n purchase.quantity,\n quantityMin,\n quantityMax,\n changed,\n confirmOpen,\n confirmed,\n setEditing,\n ]);\n\n const update = useCallback(\n (operationInput) => {\n onInputsChange((inputs) =>\n inputs.map((input, i) => {\n if (index === i) {\n return operationInput;\n }\n return input;\n })\n );\n setChanged(false);\n },\n [onInputsChange, index]\n );\n\n useEffect(() => {\n let invalidErrors = errors.filter((item) => item.field !== \"quantity\");\n if (changed && invalidErrors.length === 0 && id && id !== \"duplicate\" && confirmed) {\n const operationInput = {\n id,\n status,\n quantity,\n note,\n farmInputPurchase: farmInputPurchase.id\n ? {\n id: farmInputPurchase.id,\n name: farmInputPurchase.name\n ? farmInputPurchase.name\n : farmInputPurchase.input.name,\n currency,\n operationUnit: farmInputPurchase.operationUnit\n ? farmInputPurchase.operationUnit\n : farmInputPurchase.input.operationUnit,\n operationPrice: farmInputPurchase.operationPrice,\n quantities: {\n min: quantityMin,\n max: quantityMax,\n },\n }\n : {},\n };\n const timer = setTimeout(() => update(operationInput), 700);\n return () => clearTimeout(timer);\n }\n }, [\n status,\n note,\n farmInputPurchase,\n update,\n changed,\n errors,\n id,\n confirmed,\n quantity,\n quantityMin,\n quantityMax,\n currency,\n ]);\n\n useEffect(() => {\n setTotalQuantity(\n parseFloat(\n parseFloat(quantity) > 0 ? parseFloat(quantity) * selectedPaddock.area : 0\n ).toFixed(2)\n );\n if (parseFloat(operationPrice) > 0 && parseFloat(quantity) > 0) {\n setTotalPrice(\n parseFloat(parseFloat(operationPrice) * parseFloat(quantity)).toFixed(2)\n );\n }\n }, [quantity, operationPrice, selectedPaddock]);\n\n const handleCreate = async () => {\n if (errors.length === 0 && (farmInputPurchase.id || note !== \"\")) {\n const operationInput = {\n id: \"toBeAdded\",\n status: status,\n quantity: quantity,\n note: note,\n farmInputPurchase: farmInputPurchase.id\n ? {\n id: farmInputPurchase.id,\n name: farmInputPurchase.name\n ? farmInputPurchase.name\n : farmInputPurchase.input.name,\n currency,\n operationUnit: farmInputPurchase.operationUnit\n ? farmInputPurchase.operationUnit\n : farmInputPurchase.input.operationUnit,\n operationPrice: farmInputPurchase.operationPrice,\n quantities: {\n min: quantityMin,\n max: quantityMax,\n },\n }\n : {},\n };\n\n onInputsChange((inputs) => [...inputs, operationInput]);\n\n setId(null);\n setQuantity(0);\n setFarmInputPurchase({});\n setOperationPrice(0);\n setTotalQuantity(0);\n setTotalPrice(0);\n setQuantityMin(0);\n setQuantityMax(0);\n setStatus(0);\n setNote(\"\");\n setErrors([]);\n setChanged(false);\n }\n };\n\n const handleDelete = async () => {\n if (id && id !== \"toBeAdded\" && id !== \"duplicate\") {\n onInputsChange((inputs) =>\n inputs.map((input, i) => {\n if (index === i) {\n return { ...input, status: -1 };\n }\n return input;\n })\n );\n } else {\n onInputsChange((inputs) => inputs.filter((input, i) => index !== i));\n }\n setCheckStatus(true);\n };\n\n const handleFarmInputPurchaseChange = async (selectedFarmInputPurchase) => {\n if (selectedFarmInputPurchase && selectedFarmInputPurchase.id) {\n if (\n selectedFarmInputPurchase.input &&\n selectedFarmInputPurchase.input.isOrganic === 1 &&\n selectedFarmInputPurchase.input.hasOrganicData !== 1\n ) {\n setOrganicOpen(true);\n }\n const { body, error } = await agent.Inputs.Quantities.get(\n selectedInputsType,\n selectedFarmInputPurchase.input.id,\n selectedPeriod\n );\n if (!error) {\n setFarmInputPurchase({\n ...selectedFarmInputPurchase,\n operationUnit: selectedFarmInputPurchase.input.operationUnit,\n });\n setOperationPrice(selectedFarmInputPurchase.operationPrice);\n setCurrency(selectedFarmInputPurchase.currency);\n setQuantityMin(body.quantities.min);\n setQuantityMax(body.quantities.max);\n } else {\n setOperationPrice(0);\n setQuantityMin(0);\n setQuantityMax(0);\n setFarmInputPurchase({});\n }\n } else {\n if (selectedFarmInputPurchase && selectedFarmInputPurchase.dbData) {\n setOpenPurchaseModal(true);\n }\n if (selectedFarmInputPurchase && selectedFarmInputPurchase.missing) {\n setNote(selectedFarmInputPurchase.name);\n }\n setQuantity(0);\n setOperationPrice(0);\n setQuantityMin(0);\n setQuantityMax(0);\n setFarmInputPurchase({});\n }\n setChanged(true);\n };\n\n const handleAddDuplicate = async () => {\n if (errors.length === 0 && selectedOperation) {\n const operationInput = {\n id: \"toBeAdded\",\n status: status,\n quantity: quantity,\n note: note,\n farmInputPurchase: farmInputPurchase.id\n ? {\n id: farmInputPurchase.id,\n name: farmInputPurchase.name\n ? farmInputPurchase.name\n : farmInputPurchase.input.name,\n currency,\n operationUnit: farmInputPurchase.operationUnit\n ? farmInputPurchase.operationUnit\n : farmInputPurchase.input.operationUnit,\n quantities: {\n min: quantityMin,\n max: quantityMax,\n },\n }\n : {},\n };\n\n onInputsChange((inputs) => [\n ...inputs.map((input, i) => {\n if (i === index) {\n return operationInput;\n }\n return input;\n }),\n ]);\n }\n };\n\n if (status >= 0) {\n return (\n \n \n \n \n \n 0) && id && id !== \"newLine\"\n ? {\n field: \"quantity\",\n message: t(\"operations.operation-input.errors.null-quantity\"),\n }\n : {},\n ]}\n InputProps={{ inputProps: { min: 0 } }}\n value={quantity}\n onChange={(e) => {\n setConfirmed(false);\n setQuantity(e.target.value);\n setChanged(true);\n }}\n adornment={farmInputPurchase ? farmInputPurchase.operationUnit : \"\"}\n width='135px'\n />\n \n \n 0 || quantityMax > 0 ? quantityMin : \"\"}\n adornment={farmInputPurchase ? farmInputPurchase.operationUnit : \"\"}\n width='135px'\n />\n \n \n 0 || quantityMax > 0 ? quantityMax : \"\"}\n adornment={farmInputPurchase ? farmInputPurchase.operationUnit : \"\"}\n width='135px'\n />\n \n \n \n \n \n \n \n {id === \"newLine\" ? (\n \n \n {t(\"operations.operation-input.section.add-button-label\")}\n \n {farmInputPurchase.id ? (\n \n {t(\"operations.operation-input.section.add-error-message\")}\n \n ) : (\n \"\"\n )}\n \n ) : id !== \"duplicate\" ? (\n
\n {\n setDeleteOpen(true);\n }}\n >\n \n \n
\n ) : (\n \n \n \n )}\n \n {\n setEditing(false);\n setQuantity(purchase.quantity ? purchase.quantity : \"0\");\n setConfirmed(false);\n setConfirmOpen(false);\n }}\n onConfirm={() => {\n setEditing(false);\n setConfirmOpen(false);\n setConfirmed(true);\n }}\n errors={errors}\n unit={farmInputPurchase.operationUnit}\n quantity={quantity}\n setQuantity={setQuantity}\n min={quantityMin}\n max={quantityMax}\n />\n \n \n setOpenPurchaseModal(false)}\n setFarmInputPurchase={handleFarmInputPurchaseChange}\n />\n \n \n {\n setDeleteOpen(false);\n }}\n onConfirm={() => {\n setDeleteOpen(false);\n handleDelete();\n }}\n />\n \n \n {\n setQuantity(0);\n setOperationPrice(0);\n setQuantityMin(0);\n setQuantityMax(0);\n setFarmInputPurchase({});\n setOrganicOpen(false);\n }}\n onConfirm={() => {\n setOrganicOpen(false);\n }}\n selectedPeriod={selectedPeriod}\n selectedCrop={selectedCrop}\n farmId={farmId}\n />\n \n
\n );\n }\n return null;\n};\n\nOperationInputsRow.propTypes = propsDefinition;\n\nexport default OperationInputsRow;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Custom Components\nimport OperationInputsRow from \"./OperationInputsRow\";\n\n//UI Components\nimport Grid from \"@material-ui/core/Grid\";\nimport Paper from \"@material-ui/core/Paper\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n purchases: PropTypes.array.isRequired,\n onInputsChange: PropTypes.func.isRequired,\n handleInputErrors: PropTypes.func.isRequired,\n inputErrors: PropTypes.array.isRequired,\n setEditing: PropTypes.func.isRequired,\n selectedInputsType: PropTypes.string.isRequired,\n setCheckStatus: PropTypes.func.isRequired,\n selectedPaddock: PropTypes.object.isRequired,\n selectedPeriod: PropTypes.string.isRequired,\n selectedOperation: PropTypes.string,\n selectedCrop: PropTypes.string.isRequired,\n farmId: PropTypes.string.isRequired,\n};\n\nconst OperationInputsSection = ({\n purchases,\n onInputsChange,\n handleInputErrors,\n inputErrors,\n setEditing,\n selectedInputsType,\n selectedPaddock,\n setCheckStatus,\n selectedPeriod,\n selectedOperation,\n selectedCrop,\n farmId,\n}) => {\n if (purchases && selectedInputsType) {\n return (\n \n \n {purchases.map((item, index) => {\n let input = { ...item };\n if (!item.id) {\n input.id = \"duplicate\";\n }\n if (input.status >= 0) {\n return (\n \n );\n }\n return null;\n })}\n \n \n \n );\n }\n return null;\n};\n\nOperationInputsSection.propTypes = propsDefinition;\n\nexport default OperationInputsSection;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//UI Components\nimport TextField from \"@material-ui/core/TextField\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n query: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n handleClear: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n className: PropTypes.string,\n};\n\nconst SearchGlobalMachineryBar = ({ query, onChange, handleClear, label, className }) => {\n return (\n \n \n \n \n \n ) : (\n \n \n \n ),\n }}\n />\n );\n};\n\nSearchGlobalMachineryBar.propTypes = propsDefinition;\n\nexport default SearchGlobalMachineryBar;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//UI Components\nimport ListItem from \"@material-ui/core/ListItem\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Box from \"@material-ui/core/Box\";\nimport Typography from \"@material-ui/core/Typography\";\nimport NavigateNextIcon from \"@material-ui/icons/NavigateNext\";\n\nconst styles = (theme) => ({\n root: {\n backgroundColor: theme.palette.grey[200],\n },\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n classes: PropTypes.object.isRequired,\n style: PropTypes.object.isRequired,\n itemIndex: PropTypes.number.isRequired,\n data: PropTypes.object.isRequired,\n onClick: PropTypes.func.isRequired,\n};\n\nconst MachineryListElement = ({ classes, style, itemIndex, data, onClick, index }) => {\n const { t } = useTranslation();\n\n const variableListBackground = itemIndex % 2 ? classes.root : \"\";\n\n return (\n {\n const farmMachineryId =\n data && data.farmMachinery.id ? data.farmMachinery.id : null;\n onClick(data, farmMachineryId);\n }}\n >\n \n \n \n {data.name}\n \n \n \n \n \n {t(\"operations.equipment-database-modal.list-element.add-label\")}\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nMachineryListElement.propTypes = propsDefinition;\n\nexport default withStyles(styles)(MachineryListElement);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n onCancel: PropTypes.func.isRequired,\n onAdd: PropTypes.func.isRequired,\n givenName: PropTypes.string.isRequired,\n setGivenName: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n loading: PropTypes.bool.isRequired,\n};\n\nconst AddFarmMachinery = ({\n onCancel,\n onAdd,\n givenName,\n setGivenName,\n open,\n loading,\n}) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"operations.equipment-database-modal.add-modal.title\")}\n \n \n setGivenName(e.target.value)}\n />\n \n {t(\"operations.equipment-database-modal.add-modal.description\")}\n \n \n \n \n {t(\"operations.equipment-database-modal.add-modal.cancel-button-label\")}\n \n \n {t(\"operations.equipment-database-modal.add-modal.add-button-label\")}\n \n \n \n );\n};\n\nAddFarmMachinery.propTypes = propsDefinition;\n\nexport default AddFarmMachinery;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n onCancel: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n loading: PropTypes.bool.isRequired,\n givenName: PropTypes.string,\n};\n\nconst ConfirmFarmMachinery = ({ onCancel, onConfirm, open, loading, givenName }) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"operations.equipment-database-modal.confirm-modal.title\")}\n \n \n
\n {t(\"operations.equipment-database-modal.confirm-modal.given-name\")} \"{givenName}\n \"\n
\n \n {t(\"operations.equipment-database-modal.confirm-modal.description\")}\n \n
\n \n \n {t(\"operations.equipment-database-modal.confirm-modal.cancel-button-label\")}\n \n \n \n \n );\n};\n\nConfirmFarmMachinery.propTypes = propsDefinition;\n\nexport default ConfirmFarmMachinery;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState } from \"react\";\nimport { FixedSizeList } from \"react-window\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../../../agent\";\n\n//Custom Components\nimport MachineryListElement from \"./MachineryListElement\";\nimport AddFarmMachinery from \"./AddFarmMachinery\";\nimport ConfirmFarmMachinery from \"./ConfirmFarmMachinery\";\n\n//UI Components\nimport Paper from \"@material-ui/core/Paper\";\nimport Portal from \"@material-ui/core/Portal\";\n\nconst ItemRenderer = ({ data, index, style }) => {\n // Access the items array using the \"data\" prop:\n const machinery = data.machineries[index];\n\n return (\n \n );\n};\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n machineries: PropTypes.array.isRequired,\n periodId: PropTypes.string.isRequired,\n givenName: PropTypes.string,\n farmId: PropTypes.string,\n onClose: PropTypes.func.isRequired,\n setFarmMachinery: PropTypes.func.isRequired,\n};\n\nconst MachineryList = ({\n machineries,\n periodId,\n givenName: gName,\n farmId,\n onClose,\n setFarmMachinery,\n}) => {\n const [selectedMachinery, setSelectedMachinery] = useState({});\n const [usedFarmMachinery, setUsedFarmMachinery] = useState({});\n const [givenName, setGivenName] = useState(gName ? gName : \"\");\n const [openConfirm, setOpenConfirm] = useState(false);\n const [openAdd, setOpenAdd] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const onSelectMachinery = async (machinery, farmMachineryId = null) => {\n if (farmMachineryId) {\n setLoading(true);\n const { body, error } = await agent.Farms.FarmMachineries.getOne(\n farmId,\n farmMachineryId\n );\n if (!error) {\n setUsedFarmMachinery(body.farmMachinery);\n setOpenConfirm(true);\n }\n setLoading(false);\n } else {\n setSelectedMachinery(machinery);\n if (givenName === \"\") {\n setGivenName(machinery.name);\n }\n setOpenAdd(true);\n }\n };\n\n const handleAddMachinery = async () => {\n if (givenName !== \"\") {\n setLoading(true);\n const requestBody = {\n farmMachinery: {\n givenName,\n period: {\n id: periodId,\n },\n machinery: selectedMachinery,\n },\n };\n const { body, error } = await agent.Farms.FarmMachineries.create(\n farmId,\n requestBody\n );\n if (!error) {\n setGivenName(\"\");\n setFarmMachinery(null, body.farmMachinery);\n setOpenAdd(false);\n setLoading(false);\n onClose();\n }\n }\n };\n\n const handleSetMachinery = () => {\n setFarmMachinery(null, usedFarmMachinery);\n setOpenConfirm(false);\n setLoading(false);\n onClose();\n };\n\n return (\n \n {machineries ? (\n \n {ItemRenderer}\n \n ) : (\n \"\"\n )}\n \n {\n setGivenName(\"\");\n setOpenAdd(false);\n }}\n />\n \n \n setOpenConfirm(false)}\n loading={loading}\n open={openConfirm}\n />\n \n \n );\n};\n\nMachineryList.propTypes = propsDefinition;\n\nexport default MachineryList;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom Components\nimport SearchGlobalMachineryBar from \"./SearchGlobalMachineryBar\";\nimport MachineryList from \"./MachineryList\";\nimport CustomDialogTitle from \"../../../../CustomDialogTitle\";\n\n//UI Components\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport Dialog from \"@material-ui/core/Dialog\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n givenName: PropTypes.string,\n operationId: PropTypes.string,\n farmId: PropTypes.string.isRequired,\n periodId: PropTypes.string.isRequired,\n setFarmMachinery: PropTypes.func.isRequired,\n};\n\nconst MachineryListModal = ({\n open,\n onClose,\n givenName,\n operationId,\n farmId,\n periodId,\n setFarmMachinery,\n}) => {\n const { t } = useTranslation();\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [machineries, setMachineries] = useState([]);\n\n const handleClose = () => {\n onClose();\n };\n\n useEffect(() => {\n if (open) {\n const getMachineries = async () => {\n const { body, error } = await agent.Machineries.search(\n operationId,\n periodId,\n farmId,\n searchQuery\n );\n\n if (!error) {\n setMachineries(body.machineries);\n }\n };\n\n getMachineries();\n }\n }, [searchQuery, farmId, operationId, open, periodId]);\n\n useEffect(() => {\n if (open) {\n const getMachineries = async () => {\n const { body, error } = await agent.Machineries.get(\n operationId,\n periodId,\n farmId\n );\n\n if (!error) {\n setMachineries(body.machineries);\n }\n };\n\n getMachineries();\n }\n }, [open, operationId, periodId, farmId]);\n\n return (\n \n \n {t(\"operations.equipment-database-modal.title\")}\n \n \n setSearchQuery(e.target.value)}\n handleClear={() => setSearchQuery(\"\")}\n label={t(\"operations.equipment-database-modal.search-bar-label\")}\n />\n {givenName ? (\n
\n \n {t(\"operations.equipment-database-modal.given-name\")}\n {\" \"}\n {givenName}\n
\n ) : null}\n \n
\n \n );\n};\n\nMachineryListModal.propTypes = propsDefinition;\n\nexport default MachineryListModal;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n onConfirm: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n};\n\nconst CancelConfirmation = ({ open, onConfirm, onCancel }) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"global.cancel-modal.title\")}\n \n \n {t(\"global.cancel-modal.description\")}\n \n \n \n \n \n \n );\n};\n\nCancelConfirmation.propTypes = propsDefinition;\n\nexport default CancelConfirmation;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n SELECT_OPERATION,\n ADD_OPERATION,\n UPDATE_OPERATION,\n DELETE_OPERATION,\n UPDATE_SELECTED_PADDOCK_STATUS,\n} from \"../../../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../../../agent\";\n\n//Hooks\nimport { fade } from \"@material-ui/core/styles/colorManipulator\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//Custom\nimport Permissions from \"../../../../../utils/Permissions\";\nimport profiles from \"../../../../../constants/profiles\";\n\n//Custom Components\nimport FieldWithTextAdornment from \"../../../../FieldWithTextAdornment\";\nimport OperationStatusIcon from \"./OperationStatusIcon\";\nimport SelectOperation from \"./SelectOperation\";\nimport SelectDate from \"../../../../SelectDate\";\nimport SearchEquipment from \"./SearchEquipment\";\nimport PurchaseTab from \"./PurchaseTab\";\nimport OperationInputsSection from \"./OperationInputsSection\";\nimport DeleteConfirmation from \"../../../../DeleteConfirmation\";\nimport MachineryListModal from \"./MachineryListModal\";\nimport CancelConfirmation from \"../../../../CancelConfirmation\";\n\n//Custom Theme\nimport customTheme from \"../../../../../theme\";\n\n//UI Components\nimport CommentIcon from \"@material-ui/icons/Comment\";\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport AddCircleIcon from \"@material-ui/icons/AddCircle\";\nimport AddCircleOutlineIcon from \"@material-ui/icons/AddCircleOutline\";\nimport FileCopyOutlinedIcon from \"@material-ui/icons/FileCopyOutlined\";\nimport DeleteOutlineIcon from \"@material-ui/icons/DeleteOutline\";\nimport Paper from \"@material-ui/core/Paper\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Typography from \"@material-ui/core/Typography\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Button from \"@material-ui/core/Button\";\nimport Portal from \"@material-ui/core/Portal\";\nimport IconButton from \"@material-ui/core/IconButton\";\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n position: \"relative\",\n },\n root: {\n position: \"relative\",\n border: `1px solid ${theme.palette.grey[300]}`,\n padding: theme.spacing(2, 2, 2, 3),\n \"@global\": {\n \".MuiInputBase-root\": {\n fontSize: \"0.95rem\",\n },\n },\n },\n focusedCard: {\n cursor: \"standard\",\n background: `linear-gradient(90deg, ${theme.palette.secondary.main} 8px, #FFF 8px)`,\n border: `1px solid ${theme.palette.grey[600]}`,\n },\n notFocusedCard: {\n cursor: \"pointer\",\n \"& *\": {\n cursor: \"pointer\",\n },\n },\n cannotEdit: {\n cursor: \"standard\",\n \"& *\": {\n cursor: \"standard\",\n },\n },\n disabled: {\n color: theme.palette.text.disabled,\n },\n inactiveOverlay: {\n position: \"absolute\",\n top: 0,\n left: 0,\n backgroundColor: fade(theme.palette.grey[200], 0.5),\n borderWidth: 0,\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n color: \"transparent\",\n cursor: \"pointer\",\n zIndex: 10,\n },\n activeOverlay: {\n color: theme.palette.info.main,\n },\n operationMenu: {\n position: \"absolute\",\n alignItems: \"center\",\n border: `1px solid ${theme.palette.grey[600]}`,\n backgroundColor: \"#FFF\",\n top: 0,\n width: \"50px\",\n right: -60,\n zIndex: 10,\n },\n operationContainer: {\n paddingRight: theme.spacing(6),\n },\n fieldContainer: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"& > div\": {\n marginLeft: theme.spacing(1),\n },\n },\n menuButton: {\n color: theme.palette.secondary.main,\n },\n remove: {\n color: theme.palette.error.main,\n },\n addNewContainer: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"15px\",\n \"& > *\": {\n visibility: \"hidden\",\n },\n },\n containerActive: {\n padding: \"4px\",\n height: \"30px\",\n cursor: \"pointer\",\n \"& > *\": {\n visibility: \"visible\",\n },\n },\n activeNote: {\n color: theme.palette.warning.main,\n },\n inactiveAddOperation: {\n color: theme.palette.grey[500],\n \"&:hover\": {\n color: theme.palette.secondary.main,\n },\n },\n validateButton: {\n backgroundColor: theme.palette.success.dark,\n \"&:hover\": {\n backgroundColor: theme.palette.success.main,\n },\n },\n cancelButton: {\n backgroundColor: theme.palette.error.main,\n \"&:hover\": {\n backgroundColor: theme.palette.error.dark,\n },\n },\n}));\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n operation: PropTypes.object.isRequired,\n index: PropTypes.number.isRequired,\n\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n selectedPeriod: PropTypes.string, // Provided by Redux\n selectedPaddock: PropTypes.object, // Provided by Redux\n selectedOperation: PropTypes.string, // Provided by Redux\n setSelectedOperation: PropTypes.func, // Provided by Redux\n addOperation: PropTypes.func, // Provided by Redux\n updateOperation: PropTypes.func, // Provided by Redux\n deleteOperation: PropTypes.func, // Provided by Redux\n updateSelectedPaddockStatus: PropTypes.func, // Provided by Redux\n selectedCrop: PropTypes.string, // Provided by Redux\n};\n\nconst OperationCard = ({\n operation,\n setSelectedOperation,\n selectedOperation,\n addOperation,\n updateOperation,\n deleteOperation,\n index,\n farmId,\n selectedPeriod,\n selectedPaddock,\n updateSelectedPaddockStatus,\n selectedCrop,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation();\n\n // Card States\n const [focused, setFocused] = useState(false);\n const [dateIsOpen, setDateIsOpen] = useState(false);\n const [errors, setErrors] = useState([]);\n const [selectedInputsType, setSelectedInputsType] = useState(null);\n const [inputErrors, setInputErrors] = useState([]);\n const [editing, setEditing] = useState(false);\n const [hovered, setHovered] = useState(false);\n const [openMachineryModal, setOpenMachineryModal] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [hasError, setHasError] = useState(false);\n const [canValidate, setCanValidate] = useState(true);\n const [cancelOpen, setCancelOpen] = useState(false);\n const [checkStatus, setCheckStatus] = useState(false);\n\n // Operation Data\n const [id, setId] = useState(null);\n const [status, setStatus] = useState(null);\n const [date, setDate] = useState(null);\n const [initDate, setInitDate] = useState(null);\n const [type, setType] = useState(\"\");\n const [farmMachinery, setFarmMachinery] = useState({});\n const [noteMachinery, setNoteMachinery] = useState(\"\");\n const [passageNumber, setPassageNumber] = useState(1);\n const [time, setTime] = useState(0);\n const [consumption, setConsumption] = useState(0);\n const [price, setPrice] = useState(0);\n const [defaultPrice, setDefaultPrice] = useState(null);\n const [useDefaultPrice, setUseDefaultPrice] = useState(0);\n const [note, setNote] = useState(\"\");\n const [currency, setCurrency] = useState(null);\n const [seeds, setSeeds] = useState([]);\n const [fertilisers, setFertilisers] = useState([]);\n const [pesticides, setPesticides] = useState([]);\n const [lock, setLock] = useState(0);\n\n // Permissions\n const permissions = new Permissions(selectedPaddock.status === 3 ? 3 : status, lock, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n ]);\n\n // Setting Operation Data\n useEffect(() => {\n if (operation && operation.id && operation.id !== \"new\") {\n setId(operation.id);\n setStatus(operation.status);\n setDate(operation.date);\n setType(operation.type);\n setFarmMachinery(operation.farmMachinery);\n setNoteMachinery(operation.noteMachinery);\n setPassageNumber(operation.passageNumber > 0 ? operation.passageNumber : 1);\n setTime(operation.time);\n setConsumption(operation.consumption);\n setPrice(operation.price);\n setDefaultPrice(operation.defaultPrice);\n setUseDefaultPrice(operation.useDefaultPrice);\n setNote(operation.note);\n setCurrency(operation.currency);\n setLock(operation.lock);\n\n const seeds = operation.operationInputTypes.filter(\n (item) => item.type === \"seed\"\n )[0].operationInputs;\n setSeeds(seeds);\n\n const fertilisers = operation.operationInputTypes.filter(\n (item) => item.type === \"fertiliser\"\n )[0].operationInputs;\n setFertilisers(fertilisers);\n\n const pesticides = operation.operationInputTypes.filter(\n (item) => item.type === \"pesticide\"\n )[0].operationInputs;\n setPesticides(pesticides);\n } else if (operation.id === \"new\") {\n setId(operation.id);\n setStatus(null);\n setDate(null);\n setInitDate(operation.initDate);\n setType(operation.type);\n setFarmMachinery({});\n setNoteMachinery(\"\");\n setPassageNumber(1);\n setTime(0);\n setConsumption(0);\n setPrice(0);\n setDefaultPrice(0);\n setUseDefaultPrice(0);\n setNote(\"\");\n setCurrency(\"\");\n setSeeds([]);\n setFertilisers([]);\n setPesticides([]);\n setDateIsOpen(true);\n setCheckStatus(false);\n }\n }, [operation]);\n\n const generateRequestBody = () => {\n return {\n operation: {\n status,\n date,\n type: { id: type.id },\n farmMachinery,\n noteMachinery,\n time,\n consumption,\n passageNumber,\n price,\n useDefaultPrice,\n defaultPrice,\n note,\n operationInputTypes: [\n {\n type: \"seed\",\n operationInputs: [\n ...seeds\n .map((input) => {\n const newInput = { ...input };\n if (!input.id || input.id === \"duplicate\") {\n return false;\n }\n if (newInput.id === \"toBeAdded\") {\n delete newInput.id;\n }\n return newInput;\n })\n .filter(Boolean),\n ],\n },\n {\n type: \"fertiliser\",\n operationInputs: [\n ...fertilisers\n .map((input) => {\n const newInput = { ...input };\n if (!input.id || input.id === \"duplicate\") {\n return false;\n }\n if (newInput.id === \"toBeAdded\") {\n delete newInput.id;\n }\n return newInput;\n })\n .filter(Boolean),\n ],\n },\n {\n type: \"pesticide\",\n operationInputs: [\n ...pesticides\n .map((input) => {\n const newInput = { ...input };\n if (!input.id || input.id === \"duplicate\") {\n return false;\n }\n if (newInput.id === \"toBeAdded\") {\n delete newInput.id;\n }\n return newInput;\n })\n .filter(Boolean),\n ],\n },\n ],\n },\n };\n };\n\n // Handle Operation Selection\n const handleOperationSelection = () => {\n if (selectedOperation === null && permissions.canEdit()) {\n if (status === -1) {\n setStatus(0);\n setSelectedOperation(id);\n } else {\n setSelectedOperation(id);\n }\n }\n };\n\n // Test Operation Inputs for Validation\n useEffect(() => {\n let isInvalid = false;\n\n if (\n seeds.length === 0 &&\n fertilisers.length === 0 &&\n pesticides.length === 0 &&\n status === 0 &&\n farmMachinery &&\n farmMachinery.id &&\n price >= 0\n ) {\n setStatus(2);\n }\n\n if ((focused && farmMachinery && !farmMachinery.id) || !(price >= 0)) {\n isInvalid = true;\n }\n\n if (focused && checkStatus) {\n const statusZero =\n seeds.filter((seed) => seed.quantity === 0 || !seed.farmInputPurchase.id).length >\n 0 ||\n fertilisers.filter(\n (fertiliser) => fertiliser.quantity === 0 || !fertiliser.farmInputPurchase.id\n ).length > 0 ||\n pesticides.filter(\n (pesticide) => pesticide.quantity === 0 || !pesticide.farmInputPurchase.id\n ).length > 0;\n\n if (statusZero) {\n setStatus(0);\n isInvalid = true;\n } else {\n if (\n seeds.filter(\n (seed) =>\n seed.farmInputPurchase.quantities &&\n (seed.quantity < seed.farmInputPurchase.quantities.min ||\n seed.quantity > seed.farmInputPurchase.quantities.max)\n ).length > 0 ||\n fertilisers.filter(\n (fertiliser) =>\n fertiliser.farmInputPurchase.quantities &&\n (fertiliser.quantity < fertiliser.farmInputPurchase.quantities.min ||\n fertiliser.quantity > fertiliser.farmInputPurchase.quantities.max)\n ).length > 0 ||\n pesticides.filter(\n (pesticide) =>\n pesticide.farmInputPurchase.quantities &&\n (pesticide.quantity < pesticide.farmInputPurchase.quantities.min ||\n pesticide.quantity > pesticide.farmInputPurchase.quantities.max)\n ).length > 0\n ) {\n setStatus(1);\n } else {\n if (operation.status < 3) {\n setStatus(2);\n }\n }\n }\n }\n setCanValidate(!isInvalid);\n }, [\n seeds,\n fertilisers,\n pesticides,\n focused,\n id,\n farmMachinery,\n selectedInputsType,\n operation,\n price,\n status,\n checkStatus,\n ]);\n\n // Selecting Operation\n useEffect(() => {\n if (id && selectedOperation === id) {\n setFocused(true);\n let isInvalid = false;\n if (selectedInputsType === null && status < 3) {\n const seedsErrors =\n seeds.filter((seed) => {\n if (seed.quantity === 0 || !seed.farmInputPurchase.id) {\n isInvalid = true;\n }\n return (\n seed.quantity === 0 ||\n !seed.farmInputPurchase.quantities ||\n seed.quantity < seed.farmInputPurchase.quantities.min ||\n seed.quantity > seed.farmInputPurchase.quantities.max\n );\n }).length > 0;\n\n if (seedsErrors) {\n setSelectedInputsType(\"seed\");\n } else {\n const fertilisersErrors =\n fertilisers.filter((fertiliser) => {\n if (fertiliser.quantity === 0 || !fertiliser.farmInputPurchase.id) {\n isInvalid = true;\n }\n return (\n fertiliser.quantity === 0 ||\n !fertiliser.farmInputPurchase.quantities ||\n fertiliser.quantity < fertiliser.farmInputPurchase.quantities.min ||\n fertiliser.quantity > fertiliser.farmInputPurchase.quantities.max\n );\n }).length > 0;\n\n if (fertilisersErrors) {\n setSelectedInputsType(\"fertiliser\");\n } else {\n const presticidesErrors =\n pesticides.filter((pesticide) => {\n if (pesticide.quantity === 0 || !pesticide.farmInputPurchase.id) {\n isInvalid = true;\n }\n return (\n pesticide.quantity === 0 ||\n !pesticide.farmInputPurchase.quantities ||\n pesticide.quantity < pesticide.farmInputPurchase.quantities.min ||\n pesticide.quantity > pesticide.farmInputPurchase.quantities.max\n );\n }).length > 0;\n if (presticidesErrors) {\n setSelectedInputsType(\"pesticide\");\n }\n }\n }\n }\n if ((farmMachinery && !farmMachinery.id) || !(price >= 0)) {\n isInvalid = true;\n }\n setCanValidate(!isInvalid);\n } else {\n setDateIsOpen(false);\n setErrors([]);\n setSelectedInputsType(null);\n setInputErrors([]);\n setEditing(false);\n setHovered(false);\n setOpenMachineryModal(false);\n setDeleteOpen(false);\n setHasError(false);\n setCanValidate(true);\n setFocused(false);\n setCheckStatus(false);\n }\n }, [\n selectedOperation,\n id,\n selectedInputsType,\n fertilisers,\n pesticides,\n seeds,\n status,\n farmMachinery,\n price,\n ]);\n\n // Handle Operation Change\n const handleOperationChange = (e) => {\n e.stopPropagation();\n setType({ id: e.target.value });\n setFarmMachinery({});\n setPassageNumber(1);\n setTime(0);\n setPrice(0);\n setConsumption(0);\n setDefaultPrice(0);\n };\n\n // Handle Date Change\n const handleDateChange = (date) => {\n setDate(date);\n };\n\n // Handle Machinery Change\n const handleEquipmentChange = (e, i) => {\n if (i && !i.id && i.givenName) {\n setNoteMachinery(i.givenName);\n setFarmMachinery({});\n } else if (i && i.dbData) {\n setFarmMachinery({});\n setOpenMachineryModal(true);\n } else {\n setFarmMachinery(\n i\n ? i.machinery\n ? {\n id: i.id,\n givenName: i.givenName,\n time: i.machinery.time,\n consumption: i.machinery.consumption,\n price: i.machinery.price,\n currency: i.machinery.currency,\n }\n : {\n noteMachinery: i.noteMachinery ? i.noteMachinery : \"\",\n }\n : {}\n );\n setTime(i && i.machinery ? i.machinery.time : 0);\n setConsumption(i && i.machinery ? i.machinery.consumption : 0);\n setDefaultPrice(i && i.machinery ? i.machinery.price : 0);\n setUseDefaultPrice(1);\n setPrice(i && i.machinery ? i.machinery.price : 0);\n }\n setCheckStatus(true);\n };\n\n // Handle Use Default Price Change\n const handleUseDefaultPriceChange = () => {\n if (!useDefaultPrice) {\n setPrice(defaultPrice);\n } else {\n setPrice(0);\n }\n setUseDefaultPrice(!useDefaultPrice);\n setCheckStatus(true);\n };\n\n // Handle Passage Number Change\n const handlePassageNumberChange = (e) => {\n setPassageNumber(e.target.value);\n setCheckStatus(true);\n };\n\n // Handle Price Change\n const handlePriceChange = (e) => {\n setPrice(e.target.value);\n setCheckStatus(true);\n };\n\n // Handle Note Change\n const handleNoteChange = (e) => {\n setNote(e.target.value);\n };\n\n // Validate Data on Change\n useEffect(() => {\n if (!date) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"date\",\n message: t(\"operations.operation-card.errors.date-required\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((error) => error.field !== \"date\")]);\n }\n if (farmMachinery && farmMachinery.id && !(price >= 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"price\",\n message: t(\"operations.operation-card.errors.price-required\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((error) => error.field !== \"price\")]);\n }\n if (farmMachinery && farmMachinery.id && !(passageNumber > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"passageNumber\",\n message: t(\"operations.operation-card.errors.price-required\"),\n },\n ]);\n } else {\n setErrors((errors) => [\n ...errors.filter((error) => error.field !== \"passageNumber\"),\n ]);\n }\n if (farmMachinery && !farmMachinery.id && noteMachinery === \"\") {\n setErrors((errors) => [\n ...errors,\n {\n field: \"farmMachinery\",\n message: t(\"operations.operation-card.errors.farm-machinery-required\"),\n },\n ]);\n } else {\n setErrors((errors) => [\n ...errors.filter((error) => error.field !== \"farmMachinery\"),\n ]);\n }\n }, [date, price, farmMachinery, noteMachinery, t, passageNumber]);\n\n // Check All Errors\n useEffect(() => {\n if (errors.length > 0 || inputErrors.length > 0) {\n setHasError(true);\n } else {\n setHasError(false);\n }\n }, [errors, inputErrors]);\n\n // Handle Create\n const handleCreate = () => {\n const createOperation = agent.Farms.Paddocks.Operations.create(\n farmId,\n selectedPaddock.id,\n generateRequestBody()\n ).then((res) => {\n if (selectedPaddock.status === 3) {\n updateSelectedPaddockStatus(0, selectedPaddock.id);\n }\n updateOperation(res.body.operation, index);\n });\n\n toast.promise(createOperation, {\n loading: t(\"global.loading\"),\n success: t(\"operations.operation-card.notifications.operation-added\"),\n error: t(\"operations.operation-card.notifications.error\"),\n });\n };\n\n // Handle Save\n const handleSave = async () => {\n const saveOperation = agent.Farms.Paddocks.Operations.update(\n farmId,\n selectedPaddock.id,\n id,\n generateRequestBody()\n ).then((res) => {\n setCheckStatus(false);\n if (selectedPaddock.status === 3) {\n updateSelectedPaddockStatus(0, selectedPaddock.id);\n }\n updateOperation(res.body.operation, index);\n });\n\n toast.promise(saveOperation, {\n loading: t(\"global.loading\"),\n success: t(\"operations.operation-card.notifications.operation-saved\"),\n error: t(\"operations.operation-card.notifications.error\"),\n });\n };\n\n // Handle Validate\n const handleValidate = () => {\n let reqBody = generateRequestBody();\n reqBody.operation.status = 3;\n if (id === \"new\") {\n const toastId = toast.loading(\"Loading...\");\n agent.Farms.Paddocks.Operations.create(farmId, selectedPaddock.id, reqBody)\n .then((res) => {\n const createBody = res.body;\n agent.Farms.Paddocks.Operations.singleValidate(\n farmId,\n selectedPaddock.id,\n createBody.operation.id,\n createBody\n )\n .then((res) => {\n setSelectedInputsType(null);\n setCheckStatus(false);\n if (selectedPaddock.status === 3) {\n updateSelectedPaddockStatus(0, selectedPaddock.id);\n }\n updateOperation(res.body.operation, index);\n toast.success(\n t(\"operations.operation-card.notifications.operation-validated\"),\n {\n id: toastId,\n }\n );\n })\n .catch(() => {\n toast.error(t(\"operations.operation-card.notifications.error\"), {\n id: toastId,\n });\n });\n })\n .catch(() => {\n toast.error(t(\"operations.operation-card.notifications.error\"), {\n id: toastId,\n });\n });\n } else {\n const validateOperation = agent.Farms.Paddocks.Operations.singleValidate(\n farmId,\n selectedPaddock.id,\n id,\n reqBody\n ).then((res) => {\n setSelectedInputsType(null);\n setCheckStatus(false);\n if (selectedPaddock.status === 3) {\n updateSelectedPaddockStatus(0, selectedPaddock.id);\n }\n updateOperation(res.body.operation, index);\n });\n\n toast.promise(validateOperation, {\n loading: t(\"global.loading\"),\n success: t(\"operations.operation-card.notifications.operation-validated\"),\n error: t(\"operations.operation-card.notifications.error\"),\n });\n }\n };\n\n const handleCancel = () => {\n setCancelOpen(true);\n };\n\n // Handle Cancelled\n const handleCancelled = async () => {\n if (id === \"new\") {\n deleteOperation(index);\n } else {\n setSelectedOperation(null);\n setFocused(false);\n setSelectedInputsType(null);\n setId(operation.id);\n setStatus(operation.status);\n setDate(operation.date);\n setType(operation.type);\n setFarmMachinery(operation.farmMachinery);\n setNoteMachinery(operation.noteMachinery);\n setTime(operation.time);\n setConsumption(operation.consumption);\n setPrice(operation.price);\n setDefaultPrice(operation.defaultPrice);\n setUseDefaultPrice(operation.useDefaultPrice);\n setNote(operation.note);\n setCurrency(operation.currency);\n setCheckStatus(false);\n\n const seeds = operation.operationInputTypes\n .filter((item) => item.type === \"seed\")[0]\n .operationInputs.filter((input) => input.id && input.id !== \"duplicate\");\n setSeeds(seeds);\n\n const fertilisers = operation.operationInputTypes\n .filter((item) => item.type === \"fertiliser\")[0]\n .operationInputs.filter((input) => input.id && input.id !== \"duplicate\");\n setFertilisers(fertilisers);\n\n const pesticides = operation.operationInputTypes\n .filter((item) => item.type === \"pesticide\")[0]\n .operationInputs.filter((input) => input.id && input.id !== \"duplicate\");\n setPesticides(pesticides);\n }\n };\n\n //Handle Delete\n const handleDelete = async () => {\n if (id && id !== \"new\") {\n const removeOperation = agent.Farms.Paddocks.Operations.delete(\n farmId,\n selectedPaddock.id,\n id\n ).then(() => {\n if (selectedPaddock.status === 3) {\n updateSelectedPaddockStatus(0, selectedPaddock.id);\n }\n deleteOperation(index);\n });\n\n toast.promise(removeOperation, {\n loading: t(\"global.loading\"),\n success: t(\"operations.operation-card.notifications.operation-deleted\"),\n error: t(\"operations.operation-card.notifications.error\"),\n });\n } else if (id === \"new\") {\n deleteOperation(index);\n toast.success(t(\"operations.operation-card.notifications.operation-deleted\"));\n }\n };\n\n // Handle Copy\n const handleCopy = async () => {\n if (id) {\n const toastId = toast.loading(\"Loading...\");\n\n agent.Farms.Paddocks.Operations.update(\n farmId,\n selectedPaddock.id,\n id,\n generateRequestBody()\n )\n .then((res) => {\n updateOperation(res.body.operation, index);\n agent.Farms.Paddocks.Operations.duplicate(farmId, selectedPaddock.id, id)\n .then((res) => {\n if (selectedPaddock.status === 3) {\n updateSelectedPaddockStatus(0, selectedPaddock.id);\n }\n addOperation(index, type, res.body.operation);\n toast.success(\n \"operations.operation-card.notifications.operation-duplicated\",\n {\n id: toastId,\n }\n );\n })\n .catch(() => {\n toast.error(t(\"operations.operation-card.notifications.error\"), {\n id: toastId,\n });\n });\n })\n .catch(() => {\n toast.error(t(\"operations.operation-card.notifications.error\"), {\n id: toastId,\n });\n });\n }\n };\n\n // Handle Add operation\n const handleAddOperation = async () => {\n if (selectedOperation === null) {\n addOperation(index, type, null, date);\n } else if (selectedOperation === id) {\n const changeOperation = agent.Farms.Paddocks.Operations.update(\n farmId,\n selectedPaddock.id,\n id,\n generateRequestBody()\n ).then((res) => {\n if (selectedPaddock.status === 3) {\n updateSelectedPaddockStatus(0, selectedPaddock.id);\n }\n updateOperation(res.body.operation, index);\n addOperation(index, type, null, date);\n });\n\n toast.promise(changeOperation, {\n loading: t(\"global.loading\"),\n success: t(\"operations.operation-card.notifications.operation-added\"),\n error: t(\"operations.operation-card.notifications.error\"),\n });\n }\n };\n\n return (\n setHovered(true)}\n onMouseOut={() => setHovered(false)}\n data-woi='operation-card'\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n {t(\"operations.operation-card.default-letter\")}\n \n \n ),\n }}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {status >= 0 && !focused && note !== \"\" && (\n \n \n {t(\"operations.operation-card.note\")}\n
{note}
\n \n }\n >\n \n \n
\n )}\n {status >= 0 && focused && selectedInputsType !== null ? (\n {}\n }\n selectedPaddock={selectedPaddock}\n farmId={farmId}\n selectedPeriod={selectedPeriod}\n selectedCrop={selectedCrop}\n selectedOperation={selectedOperation}\n />\n ) : focused ? (\n
\n ) : (\n \"\"\n )}\n\n {focused ? (\n \n \n \n \n \n {permissions.canView() && status !== 3 ? (\n \n \n {t(\"operations.operation-card.validate-button-label\")}\n \n ) : (\n \"\"\n )}\n \n {t(\"operations.operation-card.cancel-button-label\")}\n \n {id === \"new\" ? (\n \n {t(\"operations.operation-card.create-button-label\")}\n \n ) : (\n \n {t(\"operations.operation-card.save-button-label\")}\n \n )}\n \n \n ) : (\n \"\"\n )}\n \n {status === -1 ? (\n \n \n {t(\"operations.operation-card.canvas-add-button-label\")}\n \n \n ) : (\n \"\"\n )}\n {status === -1 && !focused ? (\n setHovered(true)}\n onMouseOut={() => setHovered(false)}\n style={{\n fontSize: \"39px\",\n position: \"absolute\",\n top: \"50%\",\n transform: `translate(0, -50%)`,\n left: -20,\n color: customTheme.palette.success.main,\n zIndex: 11,\n }}\n />\n ) : (\n \"\"\n )}\n \n {focused && (\n \n \n \n \n {id ? (\n \n \n \n ) : (\n \"\"\n )}\n {\n setDeleteOpen(true);\n }}\n data-woi='delete-operation-button'\n >\n \n \n \n )}\n {(permissions.canView() ||\n (status !== 3 &&\n selectedPaddock.status !== 3 &&\n status >= 0 &&\n (selectedOperation === id || selectedOperation === null))) &&\n permissions.canEdit() ? (\n \n \n \n \n {t(\"operations.operation-card.add-button-label\")}\n \n \n \n ) : (\n
\n )}\n \n {\n setOpenMachineryModal(false);\n }}\n setFarmMachinery={handleEquipmentChange}\n />\n \n \n {\n setDeleteOpen(false);\n }}\n onConfirm={() => {\n setDeleteOpen(false);\n handleDelete();\n }}\n />\n \n \n {\n setCancelOpen(false);\n }}\n onConfirm={() => {\n setCancelOpen(false);\n handleCancelled();\n }}\n />\n \n
\n );\n};\n\nOperationCard.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n farmId: state.farm.farm.id,\n selectedPeriod: state.farm.selectedPeriod,\n selectedCrop: state.crop.selectedCrop,\n selectedOperation: state.crop.selectedOperation,\n selectedPaddock: state.crop.selectedPaddock,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n setSelectedOperation: (payload, canvas = false, index = false) =>\n dispatch({\n type: SELECT_OPERATION,\n payload,\n canvas,\n index,\n }),\n updateOperation: (payload, index, withoutInputs = false) =>\n dispatch({ type: UPDATE_OPERATION, payload, index, withoutInputs }),\n addOperation: (index, operationType, payload = false, initDate = null) =>\n dispatch({ type: ADD_OPERATION, index, operationType, payload, initDate }),\n deleteOperation: (index) => dispatch({ type: DELETE_OPERATION, index }),\n updateSelectedPaddockStatus: (status, id) =>\n dispatch({ type: UPDATE_SELECTED_PADDOCK_STATUS, status, id }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OperationCard);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n OPERATIONS_LOADED,\n OPERATION_TYPES_LOADED,\n UPDATE_OPERATIONS,\n UPDATE_SELECTED_PADDOCK_STATUS,\n} from \"../../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../../utils/Permissions\";\nimport profiles from \"../../../../constants/profiles\";\n\n//Custom Components\nimport OperationSectionMenu from \"./OperationSectionMenu\";\nimport ValidationErrorModal from \"./ValidationErrorModal\";\nimport LoadingSpinner from \"../../../LoadingSpinner\";\nimport ValidatePaddock from \"./ValidatePaddock\";\nimport OperationCard from \"./OperationCard\";\n\n//Theme\nimport customTheme from \"../../../../theme\";\n\n//UI Components\nimport Paper from \"@material-ui/core/Paper\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Portal from \"@material-ui/core/Portal\";\n\nconst styles = (theme) => ({\n root: {\n width: \"100%\",\n height: \"65vh\",\n backgroundColor: theme.palette.grey[300],\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n addButtonContainer: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n validatePaddock: {\n display: \"flex\",\n justifyContent: \"center\",\n },\n description: {\n marginBottom: theme.spacing(2),\n },\n});\n\nconst propsDefinition = {\n //Provided props\n classes: PropTypes.object, // Provided by Matrial Ui Styles\n operations: PropTypes.array, // Provided by Redux\n selectedPaddock: PropTypes.object, // Provided by Redux\n farmId: PropTypes.string, // Provided by Redux\n onLoad: PropTypes.func, // Provided by Redux\n setOperationTypes: PropTypes.func, // Provided by Redux\n updateOperations: PropTypes.func, // Provided by Redux\n updateSelectedPaddockStatus: PropTypes.func, // Provided by Redux\n operationLoaded: PropTypes.bool, // Provided by Redux\n lock: PropTypes.number, // Provided by Redux\n};\n\nconst OperationSection = ({\n classes,\n operations,\n selectedPaddock,\n farmId,\n onLoad,\n setOperationTypes,\n selectedOperation,\n updateOperations,\n updateSelectedPaddockStatus,\n operationLoaded,\n lock,\n}) => {\n const { t } = useTranslation();\n\n const [validationErrors, setValidationErrors] = useState([]);\n const [openErrors, setOpenErrors] = useState(false);\n const [validationLoading, setValidationLoading] = useState(false);\n\n const permissions = new Permissions(null, lock, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n ]);\n\n useEffect(() => {\n if (selectedOperation !== null) {\n window.onbeforeunload = function () {\n return t(\"operations.section.before-leave\");\n };\n } else {\n window.onbeforeunload = null;\n }\n }, [selectedOperation, t]);\n\n useEffect(() => {\n onLoad(\n agent.Farms.Paddocks.Operations.get(farmId, selectedPaddock.id),\n selectedPaddock.id\n );\n }, [selectedPaddock, farmId, onLoad]);\n\n useEffect(() => {\n const getOperationTypes = async () => {\n const { body, error } = await agent.OperationTypes.get();\n if (!error) {\n setOperationTypes(body.operationTypes);\n }\n };\n getOperationTypes();\n }, [setOperationTypes]);\n\n const handleValidatePaddock = () => {\n setValidationLoading(true);\n const validateOperations = agent.Farms.Paddocks.Operations.validate(\n farmId,\n selectedPaddock.id\n )\n .then((res) => {\n updateOperations(res.body.operations);\n updateSelectedPaddockStatus(3, selectedPaddock.id);\n setValidationLoading(false);\n })\n .catch((err) => {\n if (err.response && err.response.status === 403) {\n setValidationErrors(err.response.body.errors);\n setOpenErrors(true);\n }\n setValidationLoading(false);\n throw err;\n });\n\n toast.promise(validateOperations, {\n loading: t(\"global.loading\"),\n success: t(\"operations.section.notifications.paddock-validated\"),\n error: t(\"operations.validation-modal.title\"),\n });\n };\n\n if (operations && selectedPaddock && selectedPaddock.area === 0) {\n return (\n \n {t(\"operations.section.null-area-message\")}\n \n );\n }\n\n if (!operationLoaded) {\n return (\n \n \n \n );\n }\n\n if (operations && selectedPaddock && selectedPaddock.area > 0) {\n if (operations.length > 0) {\n const encoded = operations.filter((item) => item.status !== -1);\n if (encoded.length > 0) {\n let operItems = operations.map((item, index) => {\n return ;\n });\n return (\n \n \n {t(\"operations.section.description\")}\n \n {operItems}\n {selectedPaddock.status !== 3 && permissions.canView() ? (\n
\n item.status < 2 && item.status > -1)\n .length > 0 || selectedOperation\n ? true\n : false\n }\n loading={validationLoading}\n label={\n validationLoading\n ? t(\"Validating...\")\n : t(\"operations.section.validate-button-label\")\n }\n disabledMessage={\n selectedOperation\n ? t(\"operations.section.not-saved\")\n : t(\"operations.section.invalid\")\n }\n handleValidatePaddock={handleValidatePaddock}\n />\n
\n ) : (\n \"\"\n )}\n \n setOpenErrors(false)}\n />\n \n
\n );\n }\n }\n if (permissions.canEdit()) {\n return (\n <>\n \n \n setOpenErrors(false)}\n />\n \n \n );\n } else {\n return (\n \n \n {t(\"operations.section.empty\")}\n \n \n );\n }\n }\n return null;\n};\n\nOperationSection.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n selectedPaddock: state.crop.selectedPaddock,\n selectedPeriod: state.farm.selectedPeriod,\n farmId: state.farm.farm.id,\n operations: state.crop.operations,\n selectedOperation: state.crop.selectedOperation,\n operationLoaded: state.crop.operationLoaded,\n lock: state.farm.lock.status,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onLoad: (payload, paddockId) =>\n dispatch({ type: OPERATIONS_LOADED, payload, paddockId }),\n setOperationTypes: (payload) => dispatch({ type: OPERATION_TYPES_LOADED, payload }),\n updateOperations: (payload) => dispatch({ type: UPDATE_OPERATIONS, payload }),\n updateSelectedPaddockStatus: (status, id) =>\n dispatch({ type: UPDATE_SELECTED_PADDOCK_STATUS, status, id }),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(OperationSection));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useCallback, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { UPDATE_SELECTED_PADDOCK } from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\n\n//Custom Components\nimport OperationSection from \"./OperationSection\";\nimport FieldWithTextAdornment from \"../../FieldWithTextAdornment\";\n\n//UI Components\nimport Radio from \"@material-ui/core/Radio\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Box from \"@material-ui/core/Box\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst styles = (theme) => ({\n root: {\n padding: `${theme.spacing(1)}px ${theme.spacing(5)}px ${theme.spacing(2)}px`,\n },\n textField: {\n width: \"160px\",\n },\n operationContainer: {\n \"@global\": {\n \".MuiInputBase-root.Mui-disabled\": {\n color: theme.palette.text.primary,\n },\n },\n },\n});\n\nconst propsDefinition = {\n //Provided props\n classes: PropTypes.object, // Provided by Material Ui Style\n selectedPaddock: PropTypes.object, // Provided by Material Ui Style\n farmId: PropTypes.string, // Provided by Material Ui Style\n selectedOperation: PropTypes.string, // Provided by Material Ui Style\n updatePaddock: PropTypes.func, // Provided by Material Ui Style\n};\n\nconst PaddockSection = ({\n classes,\n selectedPaddock,\n farmId,\n selectedOperation,\n updatePaddock,\n}) => {\n const { t } = useTranslation();\n\n const [paddockArea, setPaddockArea] = useState(0);\n const [paddockYield, setPaddockYield] = useState(0);\n const [isAccurateYield, setIsAccurateYield] = useState(\"\");\n const [lock, setLock] = useState(0);\n const [changed, setChanged] = useState(false);\n\n const permissions = new Permissions(\n selectedPaddock ? selectedPaddock.status : null,\n lock\n );\n\n useEffect(() => {\n if (selectedPaddock) {\n setPaddockArea(selectedPaddock.area);\n setPaddockYield(selectedPaddock.yield);\n setIsAccurateYield(selectedPaddock.isAccurateYield);\n setLock(selectedPaddock.lock);\n }\n }, [selectedPaddock]);\n\n const update = useCallback(\n (newYield, newArea, isAccurateYield) => {\n const requestBody = {\n paddock: {\n yield: newYield,\n area: newArea,\n isAccurateYield,\n },\n };\n\n const changePaddock = agent.Farms.Paddocks.update(\n farmId,\n selectedPaddock.id,\n requestBody\n )\n .then((res) => {\n updatePaddock(res.body.paddock);\n setChanged(false);\n })\n .catch(() => {\n setChanged(false);\n });\n\n toast.promise(changePaddock, {\n loading: t(\"global.loading\"),\n success: t(\"land.paddocks.notifications.paddock-saved\"),\n error: t(\"land.paddocks.notifications.error\"),\n });\n },\n [farmId, selectedPaddock, updatePaddock, t]\n );\n\n useEffect(() => {\n if (changed) {\n const timer = setTimeout(\n () => update(paddockYield, paddockArea, isAccurateYield),\n 900\n );\n return () => clearTimeout(timer);\n }\n }, [paddockYield, paddockArea, changed, isAccurateYield, update]);\n\n if (selectedPaddock) {\n return (\n \n \n \n {\n setPaddockArea(e.target.value);\n setChanged(true);\n }}\n onFocus={(event) => event.target.select()}\n InputProps={{\n endAdornment: (\n \n ha\n \n ),\n }}\n InputLabelProps={{\n shrink: true,\n }}\n />\n \n \n {\n setPaddockYield(e.target.value);\n setChanged(true);\n }}\n onFocus={(event) => event.target.select()}\n InputProps={{\n inputProps: { style: { width: \"60px\" } },\n endAdornment: (\n \n \n T/ha\n \n \n {\n setIsAccurateYield(e.target.value);\n setChanged(true);\n }}\n value={isAccurateYield.toString()}\n >\n }\n label={\n \n {t(\"land.paddocks.is-accurate-estimated\")}\n \n }\n />\n }\n style={{ marginRight: 0 }}\n label={\n \n {t(\"land.paddocks.is-accurate-real\")}\n \n }\n />\n \n \n \n ),\n }}\n InputLabelProps={{\n shrink: true,\n }}\n />\n \n \n
\n \n
\n
\n );\n }\n return null;\n};\n\nPaddockSection.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n selectedPaddock: state.crop.selectedPaddock,\n selectedOperation: state.crop.selectedOperation,\n farmId: state.farm.farm && state.farm.farm.id,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n updatePaddock: (payload) => dispatch({ type: UPDATE_SELECTED_PADDOCK, payload }),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(PaddockSection));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\nimport profiles from \"../../../constants/profiles\";\n\n//Custom Components\nimport FieldWithTextAdornment from \"../../FieldWithTextAdornment\";\nimport LoadingSpinner from \"../../LoadingSpinner\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\n//UI Components\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Button from \"@material-ui/core/Button\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Radio from \"@material-ui/core/Radio\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst style = (theme) => ({\n outlinedContainer: {\n padding: theme.spacing(2),\n marginBottom: theme.spacing(1),\n },\n underline: {\n width: \"100%\",\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\n marginBottom: theme.spacing(2),\n },\n breakline: {\n width: \"100%\",\n borderBottom: `1px solid ${theme.palette.grey[900]}`,\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(1),\n },\n typoMarginRight: {\n marginRight: theme.spacing(1),\n },\n typoMarginLeft: {\n marginLeft: theme.spacing(1),\n },\n valid: {\n color: theme.palette.success.main,\n marginRight: \"8px\",\n },\n invalid: {\n color: theme.palette.error.main,\n marginRight: \"8px\",\n },\n validateButton: {\n backgroundColor: theme.palette.success.dark,\n \"&:hover\": {\n backgroundColor: theme.palette.success.main,\n },\n },\n});\n\nconst propsDefinition = {\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n selectedPeriod: PropTypes.string, // Provided by Redux\n selectedCrop: PropTypes.string, // Provided by Redux\n classes: PropTypes.object, // Provided by withStyles HOC\n};\n\nconst CropsResiduesSection = ({ farmId, selectedPeriod, selectedCrop, classes }) => {\n const { t } = useTranslation();\n\n const [id, setId] = useState(null);\n const [status, setStatus] = useState(0);\n const [isSold, setIsSold] = useState(0);\n const [soldArea, setSoldArea] = useState(0);\n const [soldQuantity, setSoldQuantity] = useState(0);\n const [totalArea, setTotalArea] = useState(0);\n const [lock, setLock] = useState(0);\n const [loading, setLoading] = useState(false);\n const [pageLoading, setPageLoading] = useState(false);\n\n const [changed, setChanged] = useState(false);\n const [errors, setErrors] = useState([]);\n\n const permissions = new Permissions(status, lock, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n ]);\n\n const checkValidate = useCallback(() => {\n if (isSold) {\n if (!(soldQuantity > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"soldQuantity\",\n message: t(\"operations.crops-residues.errors.required-quantity\"),\n },\n ]);\n } else {\n setErrors((errors) => [\n ...errors.filter((item) => item.field !== \"soldQuantity\"),\n ]);\n }\n if (!(soldArea > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"soldArea\",\n message: t(\"operations.crops-residues.errors.required-sold-area\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"soldArea\")]);\n }\n } else {\n setErrors((errors) => [\n ...errors.filter(\n (item) => item.field !== \"soldArea\" && item.field !== \"soldQuantity\"\n ),\n ]);\n }\n }, [t, soldQuantity, soldArea, isSold]);\n\n useEffect(() => {\n if (changed) {\n checkValidate();\n }\n }, [checkValidate, changed]);\n\n const handleUpdate = useCallback(() => {\n const validate = (soldQuantity, soldArea, isSold) => {\n let error = false;\n if (isSold === 1) {\n if (!(soldQuantity > 0)) {\n error = true;\n }\n if (!(soldArea > 0)) {\n error = true;\n }\n } else if (isSold === null) {\n error = true;\n }\n return error;\n };\n\n if (!validate(soldQuantity, soldArea, isSold)) {\n const reqBody = {\n cropsResidues: {\n status,\n isSold,\n sold: {\n area: soldArea,\n quantity: soldQuantity,\n },\n },\n };\n\n const updateCropResidue = agent.Farms.CropsResidues.update(farmId, id, reqBody)\n .then((res) => {\n const cropsResidues = res.body.cropsResidues;\n setId(cropsResidues.id);\n setIsSold(cropsResidues.isSold);\n setStatus(cropsResidues.status);\n setSoldArea(cropsResidues.sold.area);\n setSoldQuantity(cropsResidues.sold.quantity);\n setTotalArea(cropsResidues.totalArea);\n setChanged(false);\n setLoading(false);\n })\n .catch(() => {\n setLoading(false);\n });\n\n toast.promise(updateCropResidue, {\n loading: t(\"global.loading\"),\n success: t(\"operations.crops-residues.notifications.crops-residues-saved\"),\n error: t(\"operations.crops-residues.notifications.error\"),\n });\n }\n }, [t, farmId, id, soldQuantity, soldArea, status, isSold]);\n\n useEffect(() => {\n if (changed && id) {\n setLoading(true);\n const timer = setTimeout(() => handleUpdate(), 700);\n return () => clearTimeout(timer);\n }\n }, [handleUpdate, id, changed]);\n\n useEffect(() => {\n let mounted = true;\n const getCropsResidues = async () => {\n setPageLoading(true);\n const { body, error } = await agent.Farms.CropsResidues.get(\n farmId,\n selectedPeriod,\n selectedCrop\n );\n if (!error && mounted) {\n const cropsResidues = body.cropsResidues;\n setId(cropsResidues.id);\n setStatus(cropsResidues.status);\n setIsSold(cropsResidues.isSold);\n setSoldArea(cropsResidues.sold.area);\n setSoldQuantity(cropsResidues.sold.quantity);\n setTotalArea(cropsResidues.totalArea);\n setLock(cropsResidues.lock);\n }\n setPageLoading(false);\n };\n getCropsResidues();\n return () => (mounted = false);\n }, [selectedPeriod, farmId, selectedCrop]);\n\n if (pageLoading) {\n return (\n \n \n \n );\n }\n\n if (id) {\n return (\n
\n \n \n \n \n \n {t(\"operations.crops-residues.title\")}\n \n {status === 3 ? (\n \n \n \n ) : (\n \n \n \n )}\n \n \n {permissions.canEdit() && permissions.canView() && status !== 3 && (\n 0) || !(soldQuantity > 0))\n }\n style={{ height: \"40px\" }}\n className={classes.validateButton}\n onClick={() => {\n setStatus(3);\n setChanged(true);\n }}\n data-woi='validate-residue-button'\n >\n \n {t(\"operations.crops-residues.validate-button-label\")}\n \n )}\n \n \n \n \n {t(\"operations.crops-residues.subtitle\")}\n \n \n \n {\n setIsSold(parseInt(e.target.value));\n setChanged(true);\n }}\n value={isSold !== null ? isSold.toString() : null}\n >\n \n }\n label={\n \n {t(\"operations.crops-residues.no\")}\n \n }\n />\n \n }\n label={\n \n {t(\"operations.crops-residues.yes\")}\n \n }\n />\n \n {isSold === null && (\n \n {t(\"operations.crops-residues.errors.required-choice\")}\n \n )}\n \n \n \n {isSold === 1 && (\n <>\n \n \n \n \n {t(\"operations.crops-residues.total-surface-label\")}\n \n \n \n \n \n \n \n {t(\"operations.crops-residues.surface-label\")}\n \n \n {\n setSoldArea(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"operations.crops-residues.surface-adornment\")}\n width='130px'\n />\n \n \n \n \n {t(\"operations.crops-residues.quantity-label\")}\n \n \n {\n setSoldQuantity(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"operations.crops-residues.quantity-adornment\")}\n width='130px'\n />\n \n \n )}\n \n \n
\n );\n }\n return null;\n};\n\nCropsResiduesSection.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n farmId: state.farm.farm.id,\n selectedPeriod: state.farm.selectedPeriod,\n selectedCrop: state.crop.selectedCrop,\n});\n\nexport default connect(mapStateToProps)(withStyles(style)(CropsResiduesSection));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nfunction getErrors(errors, name) {\n const filter = errors.filter((error) => error.field === name);\n const currentError = filter.length > 0 ? filter[0] : null;\n\n return currentError ? currentError.message : \"\";\n}\n\nexport default getErrors;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//Custom\nimport getErrors from \"../../../../../utils/getErrors\";\n\n//Theme\nimport customTheme from \"../../../../../theme\";\n\n//UI Components\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n width: PropTypes.string.isRequired,\n errors: PropTypes.array.isRequired, // Example [{field: name, message: \"Invalid value\"}]\n\n //Provided props\n techs: PropTypes.array, // Provided by Redux\n};\n\nconst SelectTech = (props) => {\n const { value, onChange, label, disabled, name, width, errors, techs } = props;\n\n const helperError = getErrors(errors, name);\n\n if (techs) {\n return (\n \n \n {label}\n \n {\n if (props.focused) {\n e.stopPropagation();\n }\n }}\n >\n {techs.map((item, index) => (\n \n {item.name}\n \n ))}\n \n {helperError !== \"\" && (\n \n {helperError}\n \n )}\n \n );\n }\n return null;\n};\n\nSelectTech.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n techs: state.global.techs,\n});\n\nexport default connect(mapStateToProps)(SelectTech);\n","import React, { useEffect, useState, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//HOC\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../../../utils/Permissions\";\nimport profiles from \"../../../../../constants/profiles\";\n\n//Custom Components\nimport SelectTech from \"./SelectTech\";\nimport FieldWithTextAdornment from \"../../../../FieldWithTextAdornment\";\n\n//Theme\nimport customTheme from \"../../../../../theme\";\n\n//UI Components\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Button from \"@material-ui/core/Button\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Radio from \"@material-ui/core/Radio\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst useStyle = makeStyles((theme) => ({\n mainOutlinedContainer: {\n padding: theme.spacing(2),\n marginBottom: theme.spacing(2),\n background: theme.palette.grey[100],\n },\n blocTitle: {\n marginBottom: theme.spacing(1),\n },\n outlinedContainer: {\n padding: theme.spacing(2),\n marginBottom: theme.spacing(1),\n },\n underline: {\n width: \"100%\",\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\n marginBottom: theme.spacing(2),\n },\n typoMarginRight: {\n marginRight: theme.spacing(1),\n },\n typoMarginLeft: {\n marginLeft: theme.spacing(1),\n },\n valid: {\n color: theme.palette.success.main,\n marginRight: \"8px\",\n },\n invalid: {\n color: theme.palette.error.main,\n marginRight: \"8px\",\n },\n validateButton: {\n backgroundColor: theme.palette.success.dark,\n \"&:hover\": {\n backgroundColor: theme.palette.success.main,\n },\n },\n}));\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n cropsTechsId: PropTypes.string.isRequired,\n data: PropTypes.object.isRequired,\n farmId: PropTypes.string,\n lock: PropTypes.number,\n};\n\nfunction TillageSection({ cropsTechsId, data, farmId, lock }) {\n const classes = useStyle();\n const { t } = useTranslation();\n\n const [status, setStatus] = useState(0);\n const [changedTechs, setChangedTechs] = useState(null);\n const [tech, setTech] = useState(null);\n const [passedYears, setPassedYears] = useState(0);\n const [amount, setAmount] = useState(0);\n const [maxYears, setMaxYears] = useState(0);\n\n const [changed, setChanged] = useState(false);\n const [errors, setErrors] = useState([]);\n\n const permissions = new Permissions(status, lock, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n ]);\n\n useEffect(() => {\n if (data) {\n setStatus(data.status);\n setChangedTechs(data.changedTechs);\n setTech(data.tech);\n setPassedYears(data.passedYears);\n setAmount(data.amount);\n setMaxYears(data.maxYears);\n }\n }, [data]);\n\n const checkValidateSoilWork = useCallback(() => {\n if (tech && !tech.id) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"tech\",\n message: t(\"operations.crops-techs.soil-work.errors.required-tech\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"tech\")]);\n }\n if (!(passedYears > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"passedYears\",\n message: t(\"operations.crops-techs.soil-work.errors.required-years\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"passedYears\")]);\n }\n if (!(amount > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"amount\",\n message: t(\"operations.crops-techs.soil-work.errors.required-amount\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"amount\")]);\n }\n if (!(changedTechs === 1)) {\n setErrors([]);\n }\n }, [t, tech, passedYears, amount, changedTechs]);\n\n useEffect(() => {\n if (changed) {\n checkValidateSoilWork();\n }\n }, [checkValidateSoilWork, changed]);\n\n const handleUpdateSoilWork = useCallback(async () => {\n const validate = (tech, passedYears, amount, changedTechs) => {\n let error = false;\n if (changedTechs === 1) {\n if (tech && !tech.id) {\n error = true;\n }\n if (!(passedYears > 0)) {\n error = true;\n }\n if (!(amount > 0)) {\n error = true;\n }\n } else if (changedTechs === null) {\n error = true;\n }\n return error;\n };\n\n if (!validate(tech, passedYears, amount, changedTechs)) {\n const reqBody = {\n cropsTechs: {\n soilWork: {\n status,\n changedTechs,\n tech,\n passedYears,\n amount,\n },\n },\n };\n\n const updateCropTechs = agent.Farms.CropsTechs.update(\n farmId,\n cropsTechsId,\n reqBody\n ).then((res) => {\n const soilWork = res.body.cropsTechs.soilWork;\n setStatus(soilWork.status);\n setChangedTechs(soilWork.changedTechs);\n setTech(soilWork.tech);\n setPassedYears(soilWork.passedYears);\n setAmount(soilWork.amount);\n setMaxYears(soilWork.maxYears);\n setChanged(false);\n });\n\n toast.promise(updateCropTechs, {\n loading: t(\"global.loading\"),\n success: t(\"operations.crops-techs.soil-work.notifications.soil-work-saved\"),\n error: t(\"operations.crops-techs.soil-work.notifications.error\"),\n });\n }\n }, [t, farmId, cropsTechsId, tech, passedYears, amount, changedTechs, status]);\n\n useEffect(() => {\n if (changed && cropsTechsId) {\n const timer = setTimeout(() => handleUpdateSoilWork(), 700);\n return () => clearTimeout(timer);\n }\n }, [handleUpdateSoilWork, cropsTechsId, changed]);\n\n return (\n \n \n \n \n \n {t(\"operations.crops-techs.soil-work.title\")}\n \n {status === 3 ? (\n \n \n \n ) : (\n permissions.canView() && (\n \n \n \n )\n )}\n \n {permissions.canEdit() && permissions.canView() && status !== 3 && (\n \n 0) ||\n !(amount > 0)\n }\n style={{ height: \"40px\" }}\n className={classes.validateButton}\n onClick={() => {\n setStatus(3);\n setChanged(true);\n }}\n data-woi='validate-tillage-button'\n >\n \n {t(\"operations.crops-techs.soil-work.validate-button-label\")}\n \n \n )}\n \n \n \n {t(\"operations.crops-techs.soil-work.boolean-subtitle\")}\n \n \n \n {\n setChangedTechs(parseInt(e.target.value));\n setChanged(true);\n }}\n value={changedTechs !== null ? changedTechs.toString() : null}\n >\n \n }\n label={\n \n {t(\"operations.crops-techs.soil-work.no\")}\n \n }\n />\n \n }\n label={\n \n {t(\"operations.crops-techs.soil-work.never\")}\n \n }\n />\n \n }\n label={\n \n {t(\"operations.crops-techs.soil-work.yes\")}\n \n }\n />\n \n {changedTechs === null && (\n \n {t(\"operations.crops-techs.soil-work.errors.required-choice\")}\n \n )}\n \n \n \n {changedTechs === 1 && (\n <>\n
\n \n {\n setTech({ id: e.target.value });\n setChanged(true);\n }}\n errors={errors}\n label={t(\"operations.crops-techs.soil-work.changed-select\")}\n width='400px'\n />\n \n \n \n {t(\"operations.crops-techs.soil-work.over-time-label\")}\n \n {\n setPassedYears(e.target.value <= maxYears ? e.target.value : maxYears);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"operations.crops-techs.soil-work.years\")}\n width='130px'\n />\n \n \n \n {t(\"operations.crops-techs.soil-work.before-%\")}\n \n {\n setAmount(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"operations.crops-techs.soil-work.%-adornment\")}\n width='100px'\n />\n \n {t(\"operations.crops-techs.soil-work.%-area-label\")}\n \n \n \n )}\n \n \n );\n}\n\nTillageSection.propTypes = propsDefinition;\n\nexport default TillageSection;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//Custom\nimport getErrors from \"../../../../../utils/getErrors\";\n\n//Theme\nimport customTheme from \"../../../../../theme\";\n\n//UI Components\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst mapStateToProps = (state) => ({\n destructions: state.global.destructions,\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n width: PropTypes.string.isRequired,\n errors: PropTypes.array.isRequired, // Example [{field: name, message: \"Invalid value\"}]\n\n //Provided props\n destructions: PropTypes.array, // Provided by Redux\n};\n\nconst SelectDestruction = (props) => {\n const { value, onChange, label, disabled, name, width, errors, destructions } = props;\n\n const helperError = getErrors(errors, name);\n\n if (destructions) {\n return (\n \n \n {label}\n \n {\n if (props.focused) {\n e.stopPropagation();\n }\n }}\n >\n {destructions.map((item, index) => (\n \n {item.name}\n \n ))}\n \n {helperError !== \"\" && (\n \n {helperError}\n \n )}\n \n );\n }\n return null;\n};\n\nSelectDestruction.propTypes = propsDefinition;\n\nexport default connect(mapStateToProps)(SelectDestruction);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//Custom\nimport getErrors from \"../../../../../utils/getErrors\";\n\n//Theme\nimport customTheme from \"../../../../../theme\";\n\n//UI Components\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n width: PropTypes.string.isRequired,\n errors: PropTypes.array.isRequired, // Example [{field: name, message: \"Invalid value\"}]\n\n //Provided props\n covers: PropTypes.array, // Provided by Redux\n};\n\nconst SelectCover = (props) => {\n const { value, onChange, label, disabled, name, width, errors, covers } = props;\n\n const helperError = getErrors(errors, name);\n\n if (covers) {\n return (\n \n \n {label}\n \n \n {helperError !== \"\" && (\n \n {helperError}\n \n )}\n \n );\n }\n return null;\n};\n\nSelectCover.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n covers: state.global.covers,\n});\n\nexport default connect(mapStateToProps)(SelectCover);\n","import React, { useEffect, useState, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//HOC\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../../../utils/Permissions\";\nimport profiles from \"../../../../../constants/profiles\";\n\n//Custom Components\nimport SelectDate from \"../../../../SelectDate\";\nimport SelectDestruction from \"./SelectDestruction\";\nimport SelectCover from \"./SelectCover\";\nimport FieldWithTextAdornment from \"../../../../FieldWithTextAdornment\";\n\n//Theme\nimport customTheme from \"../../../../../theme\";\n\n//UI Components\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Button from \"@material-ui/core/Button\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Radio from \"@material-ui/core/Radio\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst useStyle = makeStyles((theme) => ({\n mainOutlinedContainer: {\n padding: theme.spacing(2),\n marginBottom: theme.spacing(2),\n background: theme.palette.grey[100],\n },\n blocTitle: {\n marginBottom: theme.spacing(1),\n },\n outlinedContainer: {\n padding: theme.spacing(2),\n marginBottom: theme.spacing(1),\n },\n underline: {\n width: \"100%\",\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\n marginBottom: theme.spacing(2),\n },\n typoMarginRight: {\n marginRight: theme.spacing(1),\n },\n typoMarginLeft: {\n marginLeft: theme.spacing(1),\n },\n valid: {\n color: theme.palette.success.main,\n marginRight: \"8px\",\n },\n invalid: {\n color: theme.palette.error.main,\n marginRight: \"8px\",\n },\n validateButton: {\n backgroundColor: theme.palette.success.dark,\n \"&:hover\": {\n backgroundColor: theme.palette.success.main,\n },\n },\n exportedTitle: {\n marginRight: theme.spacing(2),\n },\n}));\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n cropsTechsId: PropTypes.string.isRequired,\n data: PropTypes.object.isRequired,\n farmId: PropTypes.string,\n lock: PropTypes.number,\n};\n\nfunction CoverCropsSection({ cropsTechsId, data, farmId, lock }) {\n const classes = useStyle();\n const { t } = useTranslation();\n\n const [status, setStatus] = useState(0);\n const [changedCovers, setChangedCovers] = useState(null);\n const [cover, setCover] = useState(null);\n const [passedYears, setPassedYears] = useState(0);\n const [amount, setAmount] = useState(100);\n const [maxYears, setMaxYears] = useState(0);\n const [biomass, setBiomass] = useState(0);\n const [biodiversity, setBiodiversity] = useState(0);\n const [leguminous, setLeguminous] = useState(0);\n const [sowingDate, setSowingDate] = useState(null);\n const [destructionDate, setDestructionDate] = useState(null);\n const [destruction, setDestruction] = useState(null);\n const [exported, setExported] = useState(null);\n\n const [changed, setChanged] = useState(false);\n const [errors, setErrors] = useState([]);\n\n const [sowingDateIsOpen, setSowingDateIsOpen] = useState(false);\n const [destructionDateIsOpen, setDestructionDateIsOpen] = useState(false);\n\n const permissions = new Permissions(status, lock, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n ]);\n\n useEffect(() => {\n if (data) {\n setStatus(data.status);\n setChangedCovers(data.changedCovers);\n setCover(data.cover);\n setPassedYears(data.passedYears);\n setAmount(data.amount);\n setMaxYears(data.maxYears);\n setBiomass(data.biomass);\n setBiodiversity(data.biodiversity);\n setLeguminous(data.leguminous);\n setSowingDate(data.sowingDate);\n setDestructionDate(data.destructionDate);\n setDestruction(data.destruction);\n setExported(data.residuesExported);\n }\n }, [data]);\n\n const checkValidateLandCover = useCallback(() => {\n if (!cover || (cover && !cover.id)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"cover\",\n message: t(\"operations.crops-techs.land-cover.errors.required-cover\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"cover\")]);\n }\n if (!(passedYears > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"passedYears\",\n message: t(\"operations.crops-techs.land-cover.errors.required-years\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"passedYears\")]);\n }\n if (!(amount > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"amount\",\n message: t(\"operations.crops-techs.land-cover.errors.required-amount\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"amount\")]);\n }\n if (cover && !cover.ended) {\n if (!(biomass > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"biomass\",\n message: t(\"operations.crops-techs.land-cover.errors.required-biomass\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"biomass\")]);\n }\n if (!(biodiversity > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"biodiversity\",\n message: t(\"operations.crops-techs.land-cover.errors.required-biodiversity\"),\n },\n ]);\n } else {\n setErrors((errors) => [\n ...errors.filter((item) => item.field !== \"biodiversity\"),\n ]);\n }\n if (sowingDate === null) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"sowingDate\",\n message: t(\"operations.crops-techs.land-cover.errors.required-sowing-date\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"sowingDate\")]);\n }\n if (exported === null) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"exported\",\n message: t(\"operations.crops-techs.land-cover.errors.required-exported\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"exported\")]);\n }\n } else {\n setErrors((errors) => [\n ...errors.filter(\n (item) =>\n item.field !== \"exported\" ||\n item.field !== \"sowingDate\" ||\n item.field !== \"biodiversity\" ||\n item.field !== \"biomass\"\n ),\n ]);\n }\n if (!(changedCovers === 1)) {\n setErrors([]);\n }\n }, [\n t,\n cover,\n passedYears,\n amount,\n changedCovers,\n biomass,\n biodiversity,\n sowingDate,\n exported,\n ]);\n\n useEffect(() => {\n if (changed) {\n checkValidateLandCover();\n }\n }, [checkValidateLandCover, changed]);\n\n const handleUpdateLandCover = useCallback(() => {\n const validate = (\n cover,\n passedYears,\n amount,\n changedCovers,\n biomass,\n biodiversity,\n sowingDate,\n exported\n ) => {\n let error = false;\n if (changedCovers === 1) {\n if (cover && !cover.id) {\n error = true;\n }\n if (!(passedYears > 0)) {\n error = true;\n }\n if (!(amount > 0)) {\n error = true;\n }\n if (cover && !cover.ended) {\n if (!(biomass > 0)) {\n error = true;\n }\n if (!(biodiversity > 0)) {\n error = true;\n }\n if (sowingDate === null) {\n error = true;\n }\n if (exported === null) {\n error = true;\n }\n }\n } else if (changedCovers === null) {\n error = true;\n }\n return error;\n };\n\n if (\n !validate(\n cover,\n passedYears,\n amount,\n changedCovers,\n biomass,\n biodiversity,\n sowingDate,\n exported\n )\n ) {\n const reqBody = {\n cropsTechs: {\n landCover: {\n status,\n changedCovers,\n cover,\n passedYears,\n amount,\n biomass,\n biodiversity,\n leguminous,\n sowingDate,\n destructionDate,\n destruction,\n residuesExported: exported,\n },\n },\n };\n\n const updateCropTechs = agent.Farms.CropsTechs.update(\n farmId,\n cropsTechsId,\n reqBody\n ).then((res) => {\n const landCover = res.body.cropsTechs.landCover;\n setStatus(landCover.status);\n setChangedCovers(landCover.changedCovers);\n setCover(landCover.cover);\n setPassedYears(landCover.passedYears);\n setAmount(landCover.amount);\n setMaxYears(landCover.maxYears);\n setBiomass(landCover.biomass);\n setBiodiversity(landCover.biodiversity);\n setLeguminous(landCover.leguminous);\n setSowingDate(landCover.sowingDate);\n setDestructionDate(landCover.destructionDate);\n setDestruction(landCover.destruction);\n setExported(landCover.residuesExported);\n setChanged(false);\n });\n\n toast.promise(updateCropTechs, {\n loading: t(\"global.loading\"),\n success: t(\"operations.crops-techs.land-cover.notifications.land-cover-saved\"),\n error: t(\"operations.crops-techs.land-cover.notifications.error\"),\n });\n }\n }, [\n t,\n farmId,\n cropsTechsId,\n cover,\n passedYears,\n amount,\n changedCovers,\n status,\n biomass,\n biodiversity,\n leguminous,\n sowingDate,\n destructionDate,\n destruction,\n exported,\n ]);\n\n useEffect(() => {\n if (changed && cropsTechsId) {\n const timer = setTimeout(() => handleUpdateLandCover(), 700);\n return () => clearTimeout(timer);\n }\n }, [handleUpdateLandCover, cropsTechsId, changed]);\n\n return (\n \n \n \n \n \n {t(\"operations.crops-techs.land-cover.title\")}\n \n {status === 3 ? (\n \n \n \n ) : (\n permissions.canView() && (\n \n \n \n )\n )}\n \n \n {permissions.canEdit() && permissions.canView() && status !== 3 && (\n 0) ||\n !(amount > 0) ||\n !(biomass > 0) ||\n !(biodiversity > 0) ||\n sowingDate === null ||\n exported === null\n }\n style={{ height: \"40px\" }}\n className={classes.validateButton}\n onClick={() => {\n setStatus(3);\n setChanged(true);\n }}\n data-woi='validate-cover-crop-button'\n >\n \n {t(\"operations.crops-techs.land-cover.validate-button-label\")}\n \n )}\n \n \n \n \n {t(\"operations.crops-techs.land-cover.boolean-subtitle\")}\n \n \n \n {\n setChangedCovers(parseInt(e.target.value));\n setChanged(true);\n }}\n value={changedCovers !== null ? changedCovers.toString() : null}\n >\n \n }\n label={\n \n {t(\"operations.crops-techs.land-cover.no\")}\n \n }\n />\n \n }\n label={\n \n {t(\"operations.crops-techs.land-cover.yes\")}\n \n }\n />\n \n {changedCovers === null && (\n \n {t(\"operations.crops-techs.land-cover.errors.required-choice\")}\n \n )}\n \n \n \n {changedCovers === 1 && (\n <>\n
\n \n {\n const { ended } = e.currentTarget.dataset;\n setCover({ id: e.target.value, ended: parseInt(ended) });\n setChanged(true);\n }}\n errors={errors}\n value={cover && cover.id ? cover.id : \"\"}\n label={t(\"operations.crops-techs.land-cover.changed-select\")}\n width='400px'\n />\n \n \n \n {t(\"operations.crops-techs.land-cover.over-time-label\")}\n \n {\n setPassedYears(e.target.value <= maxYears ? e.target.value : maxYears);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"operations.crops-techs.land-cover.years\")}\n width='130px'\n />\n \n \n \n {t(\"operations.crops-techs.land-cover.before-%\")}\n \n {\n setAmount(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"operations.crops-techs.land-cover.%-adornment\")}\n width='100px'\n />\n \n {t(\"operations.crops-techs.land-cover.%-area-label\")}\n \n \n {cover && !cover.ended && (\n <>\n \n {\n setBiomass(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"operations.crops-techs.land-cover.biomass-adornment\")}\n width='140px'\n label={t(\"operations.crops-techs.land-cover.biomass\")}\n />\n \n \n {\n setBiodiversity(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\n \"operations.crops-techs.land-cover.biodiversity-adornment\"\n )}\n width='140px'\n label={t(\"operations.crops-techs.land-cover.biodiversity\")}\n />\n \n \n {\n setLeguminous(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\n \"operations.crops-techs.land-cover.leguminous-adornment\"\n )}\n width='140px'\n label={t(\"operations.crops-techs.land-cover.leguminous\")}\n />\n \n \n {\n setSowingDate(date);\n setChanged(true);\n }}\n maxDate={\n destructionDate !== null\n ? new Date(destructionDate)\n : new Date(\"2100-01-01\")\n }\n name='sowingDate'\n errors={errors}\n />\n \n \n {\n setDestructionDate(date);\n setChanged(true);\n }}\n minDate={\n sowingDate !== null ? new Date(sowingDate) : new Date(\"1900-01-01\")\n }\n name='destructionDate'\n errors={errors}\n />\n \n \n {\n setDestruction({ id: e.target.value });\n setChanged(true);\n }}\n errors={errors}\n width='180px'\n label={t(\"operations.crops-techs.land-cover.destruction\")}\n />\n \n \n \n {t(\"operations.crops-techs.land-cover.exported-title\")}\n \n \n {\n setExported(parseInt(e.target.value));\n setChanged(true);\n }}\n value={exported !== null ? exported.toString() : null}\n >\n \n }\n label={\n \n {t(\"operations.crops-techs.land-cover.left-in-field\")}\n \n }\n />\n \n }\n label={\n \n {t(\"operations.crops-techs.land-cover.exported\")}\n \n }\n />\n \n {changedCovers === null && (\n \n {t(\"operations.crops-techs.land-cover.errors.required-choice\")}\n \n )}\n \n \n \n )}\n \n )}\n \n \n );\n}\n\nCoverCropsSection.propTypes = propsDefinition;\n\nexport default CoverCropsSection;\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom Components\nimport TillageSection from \"./TillageSection\";\nimport CoverCropsSection from \"./CoverCropsSection\";\n\n//UI Components\nimport Paper from \"@material-ui/core/Paper\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst style = (theme) => ({\n mainOutlinedContainer: {\n padding: theme.spacing(2),\n marginBottom: theme.spacing(2),\n background: theme.palette.grey[100],\n },\n blocTitle: {\n marginBottom: theme.spacing(1),\n },\n outlinedContainer: {\n padding: theme.spacing(2),\n marginBottom: theme.spacing(1),\n },\n underline: {\n width: \"100%\",\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\n marginBottom: theme.spacing(2),\n },\n typoMarginRight: {\n marginRight: theme.spacing(1),\n },\n typoMarginLeft: {\n marginLeft: theme.spacing(1),\n },\n valid: {\n color: theme.palette.success.main,\n marginRight: \"8px\",\n },\n invalid: {\n color: theme.palette.error.main,\n marginRight: \"8px\",\n },\n validateButton: {\n backgroundColor: theme.palette.success.dark,\n \"&:hover\": {\n backgroundColor: theme.palette.success.main,\n },\n },\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n cropsTechs: PropTypes.object.isRequired,\n farmId: PropTypes.string,\n\n //Provided props\n classes: PropTypes.object, // Provided by Redux\n};\n\nconst CropsTechsRow = (props) => {\n const { cropsTechs, farmId, classes } = props;\n\n const [id, setId] = useState(null);\n const [bloc, setBloc] = useState(null);\n const [soilWork, setSoilWork] = useState(null);\n const [coverCrops, setCoverCrops] = useState(null);\n const [lock, setLock] = useState(0);\n\n useEffect(() => {\n if (cropsTechs.id) {\n setId(cropsTechs.id);\n setBloc(cropsTechs.blocperi.bloc);\n setSoilWork(cropsTechs.soilWork);\n setCoverCrops(cropsTechs.landCover);\n setLock(cropsTechs.lock);\n }\n }, [cropsTechs]);\n\n if (id) {\n return (\n \n \n {bloc.name}\n \n \n \n \n \n \n \n \n \n \n );\n }\n return null;\n};\n\nCropsTechsRow.propTypes = propsDefinition;\n\nexport default withStyles(style)(CropsTechsRow);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n GLOBAL_COVERS_LOADED,\n GLOBAL_TECHS_LOADED,\n GLOBAL_DESTRUCTIONS_LOADED,\n} from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Custom Components\nimport LoadingSpinner from \"../../LoadingSpinner\";\nimport CropsTechsRow from \"./CropsTechsRow\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\nconst propsDefinition = {\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n selectedPeriod: PropTypes.string, // Provided by Redux\n selectedCrop: PropTypes.string, // Provided by Redux\n onTechsLoaded: PropTypes.func, // Provided by Redux\n onCoversLoaded: PropTypes.func, // Provided by Redux\n onDestructionsLoaded: PropTypes.func, // Provided by Redux\n};\n\nconst CropsTechsSection = (props) => {\n const {\n farmId,\n selectedPeriod,\n selectedCrop,\n onTechsLoaded,\n onCoversLoaded,\n onDestructionsLoaded,\n } = props;\n\n const [cropsTechs, setCropsTechs] = useState([]);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n setLoading(true);\n const getTechsLoaded = async () => {\n const { body, error } = await agent.Techs.get();\n\n if (!error) {\n onTechsLoaded(body.techs);\n }\n };\n const getCoversLoaded = async () => {\n const { body, error } = await agent.Covers.get();\n\n if (!error) {\n onCoversLoaded(body.covers);\n }\n };\n const getDestructionsLoaded = async () => {\n const { body, error } = await agent.Destructions.get();\n\n if (!error) {\n onDestructionsLoaded(body.destructions);\n }\n };\n const getCropsTechs = async () => {\n const { body, error } = await agent.Farms.CropsTechs.get(\n farmId,\n selectedPeriod,\n selectedCrop\n );\n\n if (!error) {\n setCropsTechs(body.cropsTechs);\n }\n setLoading(false);\n };\n getTechsLoaded();\n getCoversLoaded();\n getDestructionsLoaded();\n getCropsTechs();\n }, [\n onTechsLoaded,\n onCoversLoaded,\n farmId,\n selectedPeriod,\n selectedCrop,\n onDestructionsLoaded,\n ]);\n\n const cropsTechsList = cropsTechs.map((item, index) => (\n \n ));\n\n if (loading) {\n return (\n \n \n
\n );\n }\n\n if (cropsTechs.length > 0) {\n return
{cropsTechsList}
;\n }\n return null;\n};\n\nCropsTechsSection.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n ...state.crop,\n selectedPeriod: state.farm.selectedPeriod,\n farmId: state.farm.farm && state.farm.farm.id,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onTechsLoaded: (payload) => dispatch({ type: GLOBAL_TECHS_LOADED, payload }),\n onCoversLoaded: (payload) => dispatch({ type: GLOBAL_COVERS_LOADED, payload }),\n onDestructionsLoaded: (payload) =>\n dispatch({ type: GLOBAL_DESTRUCTIONS_LOADED, payload }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CropsTechsSection);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//Custom\nimport getErrors from \"../../../utils/getErrors\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\n//UI Components\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n width: PropTypes.string.isRequired,\n errors: PropTypes.array.isRequired, // Example [{field: name, message: \"Invalid value\"}]\n\n //Provided props\n irrigations: PropTypes.array,\n};\n\nconst SelectIrrigation = ({\n value,\n onChange,\n label,\n disabled,\n name,\n width,\n errors,\n irrigations,\n}) => {\n const helperError = getErrors(errors, name);\n\n if (irrigations) {\n return (\n \n \n {label}\n \n \n {helperError !== \"\" && (\n \n {helperError}\n \n )}\n \n );\n }\n return null;\n};\n\nSelectIrrigation.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n irrigations: state.global.irrigations,\n});\n\nexport default connect(mapStateToProps)(SelectIrrigation);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//Custom\nimport getErrors from \"../../../utils/getErrors\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\n//UI Components\nimport Typography from \"@material-ui/core/Typography\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n width: PropTypes.string.isRequired,\n errors: PropTypes.array.isRequired, // Example [{field: name, message: \"Invalid value\"}]\n\n //Provided props\n sources: PropTypes.array,\n};\n\nconst SelectSource = ({\n value,\n onChange,\n label,\n disabled,\n name,\n width,\n errors,\n sources,\n}) => {\n const helperError = getErrors(errors, name);\n\n if (sources) {\n return (\n \n \n {label}\n \n \n {helperError !== \"\" && (\n \n {helperError}\n \n )}\n \n );\n }\n return null;\n};\n\nSelectSource.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n sources: state.global.sources,\n});\n\nexport default connect(mapStateToProps)(SelectSource);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//Custom\nimport getErrors from \"../../../utils/getErrors\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\n//UI Components\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n width: PropTypes.string.isRequired,\n errors: PropTypes.array.isRequired, // Example [{field: name, message: \"Invalid value\"}]\n\n //Provided props\n powers: PropTypes.array,\n};\n\nconst SelectPower = ({\n value,\n onChange,\n label,\n disabled,\n name,\n width,\n errors,\n powers,\n}) => {\n const helperError = getErrors(errors, name);\n\n if (powers) {\n return (\n \n \n {label}\n \n \n {helperError !== \"\" && (\n \n {helperError}\n \n )}\n \n );\n }\n return null;\n};\n\nSelectPower.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n powers: state.global.powers,\n});\n\nexport default connect(mapStateToProps)(SelectPower);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\nimport profiles from \"../../../constants/profiles\";\n\n//Custom Components\nimport FieldWithTextAdornment from \"../../FieldWithTextAdornment\";\nimport SelectIrrigation from \"./SelectIrrigation\";\nimport SelectSource from \"./SelectSource\";\nimport SelectPower from \"./SelectPower\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\n//UI Components\nimport Paper from \"@material-ui/core/Paper\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Button from \"@material-ui/core/Button\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Radio from \"@material-ui/core/Radio\";\n\nconst style = (theme) => ({\n mainOutlinedContainer: {\n padding: theme.spacing(2),\n marginBottom: theme.spacing(2),\n background: theme.palette.grey[100],\n },\n blocTitle: {\n marginBottom: theme.spacing(1),\n },\n outlinedContainer: {\n padding: theme.spacing(2),\n marginBottom: theme.spacing(1),\n },\n underline: {\n width: \"100%\",\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\n marginBottom: theme.spacing(2),\n },\n typoMarginRight: {\n marginRight: theme.spacing(1),\n },\n typoMarginLeft: {\n marginLeft: theme.spacing(1),\n },\n valid: {\n color: theme.palette.success.main,\n marginRight: \"8px\",\n },\n invalid: {\n color: theme.palette.error.main,\n marginRight: \"8px\",\n },\n validateButton: {\n backgroundColor: theme.palette.success.dark,\n \"&:hover\": {\n backgroundColor: theme.palette.success.main,\n },\n },\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n cropIrrigation: PropTypes.object.isRequired,\n farmId: PropTypes.string.isRequired,\n\n //Provided props\n classes: PropTypes.object, // Provided by withStyles HOC\n};\n\nconst CropsIrrigationRow = ({ farmId, cropIrrigation, classes }) => {\n const { t } = useTranslation();\n\n const [id, setId] = useState(null);\n const [bloc, setBloc] = useState(null);\n const [status, setStatus] = useState(0);\n const [changedIrrigation, setChangedIrrigation] = useState(null);\n const [irrigation, setIrrigation] = useState(null);\n const [source, setSource] = useState(null);\n const [depth, setDepth] = useState(0);\n const [horizontal, setHorizontal] = useState(0);\n const [power, setPower] = useState(null);\n const [total, setTotal] = useState(0);\n const [proportion, setProportion] = useState(0);\n const [lock, setLock] = useState(0);\n\n const [changed, setChanged] = useState(false);\n const [errors, setErrors] = useState([]);\n\n const permissions = new Permissions(status, lock, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n ]);\n\n const checkValidate = useCallback(() => {\n if ((irrigation && !irrigation.id) || irrigation === null) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"irrigation\",\n message: t(\"operations.crops-irrigation.errors.required-irrigation\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"irrigation\")]);\n }\n if ((source && !source.id) || source === null) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"source\",\n message: t(\"operations.crops-irrigation.errors.required-source\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"source\")]);\n }\n if ((power && !power.id) || power === null) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"power\",\n message: t(\"operations.crops-irrigation.errors.required-power\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"power\")]);\n }\n if (!(depth > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"depth\",\n message: t(\"operations.crops-irrigation.errors.required-depth\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"depth\")]);\n }\n if (!(horizontal > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"horizontal\",\n message: t(\"operations.crops-irrigation.errors.required-horizontal\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"horizontal\")]);\n }\n if (!(total > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"total\",\n message: t(\"operations.crops-irrigation.errors.required-total\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"total\")]);\n }\n if (!(proportion > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"proportion\",\n message: t(\"operations.crops-irrigation.errors.required-proportion\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"proportion\")]);\n }\n if (changedIrrigation !== 1) {\n setErrors([]);\n }\n }, [\n t,\n irrigation,\n source,\n power,\n depth,\n horizontal,\n total,\n proportion,\n changedIrrigation,\n ]);\n\n useEffect(() => {\n if (changed) {\n checkValidate();\n }\n }, [checkValidate, changed]);\n\n const handleUpdate = useCallback(() => {\n const validate = (\n changedIrrigation,\n irrigation,\n source,\n power,\n depth,\n horizontal,\n total,\n proportion\n ) => {\n let error = false;\n if (changedIrrigation === 1) {\n if ((irrigation && !irrigation.id) || irrigation === null) {\n error = true;\n }\n if ((source && !source.id) || source === null) {\n error = true;\n }\n if ((power && !power.id) || power === null) {\n error = true;\n }\n if (!(depth > 0)) {\n error = true;\n }\n if (!(horizontal > 0)) {\n error = true;\n }\n if (!(total > 0)) {\n error = true;\n }\n if (!(proportion > 0)) {\n error = true;\n }\n } else if (changedIrrigation === null) {\n error = true;\n }\n return error;\n };\n\n if (\n !validate(\n changedIrrigation,\n irrigation,\n source,\n power,\n depth,\n horizontal,\n total,\n proportion\n )\n ) {\n const reqBody = {\n cropIrrigation: {\n changedIrrigation,\n status,\n irrigation,\n source,\n power,\n depth,\n horizontal,\n total,\n proportion,\n },\n };\n\n const updateIrrigation = agent.Farms.CropsIrrigations.update(\n farmId,\n id,\n reqBody\n ).then((res) => {\n const { cropIrrigation } = res.body;\n setId(cropIrrigation.id);\n setBloc(cropIrrigation.blocperi.bloc);\n setIrrigation(cropIrrigation.irrigation);\n setSource(cropIrrigation.source);\n setPower(cropIrrigation.power);\n setDepth(cropIrrigation.depth);\n setHorizontal(cropIrrigation.horizontal);\n setTotal(cropIrrigation.total);\n setStatus(cropIrrigation.status);\n setLock(cropIrrigation.lock);\n setChangedIrrigation(cropIrrigation.changedIrrigation);\n setProportion(cropIrrigation.proportion);\n setChanged(false);\n });\n\n toast.promise(updateIrrigation, {\n loading: t(\"global.loading\"),\n success: t(\"operations.crops-irrigation.notifications.crops-irrigation-saved\"),\n error: t(\"operations.crops-irrigation.notifications.error\"),\n });\n }\n }, [\n t,\n farmId,\n id,\n status,\n changedIrrigation,\n irrigation,\n source,\n power,\n depth,\n horizontal,\n total,\n proportion,\n ]);\n\n useEffect(() => {\n if (changed && id) {\n const timer = setTimeout(() => handleUpdate(), 700);\n return () => clearTimeout(timer);\n }\n }, [handleUpdate, id, changed]);\n\n useEffect(() => {\n if (cropIrrigation.id) {\n setId(cropIrrigation.id);\n setBloc(cropIrrigation.blocperi.bloc);\n setIrrigation(cropIrrigation.irrigation);\n setSource(cropIrrigation.source);\n setPower(cropIrrigation.power);\n setDepth(cropIrrigation.depth);\n setHorizontal(cropIrrigation.horizontal);\n setTotal(cropIrrigation.total);\n setStatus(cropIrrigation.status);\n setChangedIrrigation(cropIrrigation.changedIrrigation);\n setProportion(cropIrrigation.proportion);\n setLock(cropIrrigation.lock);\n }\n }, [cropIrrigation]);\n\n if (id) {\n return (\n \n \n {bloc.name}\n \n \n \n \n \n \n \n {t(\"operations.crops-irrigation.title\")}\n \n {status === 3 ? (\n \n \n \n ) : (\n permissions.canView() && (\n \n \n \n )\n )}\n \n {permissions.canEdit() && permissions.canView() && status !== 3 && (\n \n 0) ||\n !(horizontal > 0) ||\n !(total > 0))\n }\n style={{ height: \"40px\" }}\n className={classes.validateButton}\n onClick={() => {\n setStatus(3);\n setChanged(true);\n }}\n data-woi='validate-irrigation-button'\n >\n \n {t(\"operations.crops-irrigation.validate-button-label\")}\n \n \n )}\n \n \n {t(\"operations.crops-irrigation.sub-ttile\")}\n \n \n {\n setChangedIrrigation(parseInt(e.target.value));\n setChanged(true);\n }}\n value={\n changedIrrigation !== null ? changedIrrigation.toString() : null\n }\n >\n \n }\n label={\n \n {t(\"operations.crops-irrigation.no\")}\n \n }\n />\n \n }\n label={\n \n {t(\"operations.crops-irrigation.yes\")}\n \n }\n />\n \n {changedIrrigation === null && (\n \n {t(\"operations.crops-irrigation.errors.required-choice\")}\n \n )}\n \n \n \n {changedIrrigation === 1 && (\n <>\n \n \n {\n setIrrigation({ id: e.target.value });\n setChanged(true);\n }}\n errors={errors}\n label={t(\"operations.crops-irrigation.irrigation\")}\n width='200px'\n />\n \n \n {\n setSource({ id: e.target.value });\n setChanged(true);\n }}\n errors={errors}\n label={t(\"operations.crops-irrigation.source\")}\n width='200px'\n />\n \n \n {\n setPower({ id: e.target.value });\n setChanged(true);\n }}\n errors={errors}\n label={t(\"operations.crops-irrigation.power\")}\n width='200px'\n />\n \n \n \n \n {t(\"operations.crops-irrigation.depth\")}\n \n \n {\n setDepth(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"operations.crops-irrigation.depth-adornment\")}\n width='140px'\n />\n \n \n \n \n {t(\"operations.crops-irrigation.horizontal\")}\n \n \n {\n setHorizontal(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"operations.crops-irrigation.horizontal-adornment\")}\n width='140px'\n />\n \n \n \n \n {t(\"operations.crops-irrigation.total\")}\n \n \n {\n setTotal(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"operations.crops-irrigation.total-adornment\")}\n width='140px'\n />\n \n \n \n \n {t(\"operations.crops-irrigation.proportion\")}\n \n \n {\n setProportion(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"operations.crops-irrigation.proportion-adornment\")}\n width='140px'\n />\n \n \n )}\n \n \n \n \n );\n }\n return null;\n};\n\nCropsIrrigationRow.propTypes = propsDefinition;\n\nexport default withStyles(style)(CropsIrrigationRow);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n GLOBAL_IRRIGATIONS_LOADED,\n GLOBAL_SOURCES_LOADED,\n GLOBAL_POWERS_LOADED,\n} from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Custom Components\nimport CropsIrrigationRow from \"./CropsIrrigationRow\";\nimport LoadingSpinner from \"../../LoadingSpinner\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\nconst propsDefinition = {\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n selectedPeriod: PropTypes.string, // Provided by Redux\n selectedCrop: PropTypes.string, // Provided by Redux\n onIrrigationsLoaded: PropTypes.func, // Provided by Redux\n onSourcesLoaded: PropTypes.func, // Provided by Redux\n onPowersLoaded: PropTypes.func, // Provided by Redux\n};\n\nconst CropsIrrigationSection = ({\n farmId,\n selectedPeriod,\n selectedCrop,\n onIrrigationsLoaded,\n onSourcesLoaded,\n onPowersLoaded,\n}) => {\n const [cropsIrrigations, setCropsIrrigations] = useState([]);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n setLoading(true);\n const getCropsIrrigations = async () => {\n const { body, error } = await agent.Farms.CropsIrrigations.get(\n farmId,\n selectedPeriod,\n selectedCrop\n );\n\n if (!error) {\n setCropsIrrigations(body.cropIrrigations);\n }\n setLoading(false);\n };\n\n const getIrrigations = async () => {\n const { body, error } = await agent.Irrigations.get();\n\n if (!error) {\n onIrrigationsLoaded(body.irrigations);\n }\n };\n\n const getSources = async () => {\n const { body, error } = await agent.Sources.get();\n\n if (!error) {\n onSourcesLoaded(body.sources);\n }\n };\n\n const getPowers = async () => {\n const { body, error } = await agent.Powers.get();\n\n if (!error) {\n onPowersLoaded(body.powers);\n }\n };\n getSources();\n getPowers();\n getIrrigations();\n getCropsIrrigations();\n }, [\n onPowersLoaded,\n onSourcesLoaded,\n onIrrigationsLoaded,\n farmId,\n selectedCrop,\n selectedPeriod,\n ]);\n\n const cropsIrrigationsList = cropsIrrigations.map((item, index) => (\n \n ));\n\n if (loading) {\n return (\n \n \n
\n );\n }\n\n if (cropsIrrigations.length > 0) {\n return
{cropsIrrigationsList}
;\n }\n return null;\n};\n\nCropsIrrigationSection.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n farmId: state.farm.farm.id,\n selectedPeriod: state.farm.selectedPeriod,\n selectedCrop: state.crop.selectedCrop,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onIrrigationsLoaded: (payload) =>\n dispatch({ type: GLOBAL_IRRIGATIONS_LOADED, payload }),\n onSourcesLoaded: (payload) => dispatch({ type: GLOBAL_SOURCES_LOADED, payload }),\n onPowersLoaded: (payload) => dispatch({ type: GLOBAL_POWERS_LOADED, payload }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CropsIrrigationSection);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useCallback, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { SELECT_PADDOCK, SELECT_BAR, PADDOCKS_LOADED } from \"../../constants/actionTypes\";\n\n//API\nimport agent from \"../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom Components\nimport BioLogo from \"../BioLogo\";\n\n//UI Components\nimport Typography from \"@material-ui/core/Typography\";\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Box from \"@material-ui/core/Box\";\n\nconst styles = (theme) => ({\n root: {\n marginBottom: theme.spacing(2),\n },\n tab: {\n padding: \"8px 16px 6px 16px\",\n borderRadius: \"16px 16px 0px 0px\",\n borderColor: theme.palette.grey[500],\n backgroundColor: theme.palette.grey[300],\n cursor: \"pointer\",\n textAlign: \"center\",\n maxWidth: \"150px\",\n maxHeight: \"60px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \"&:hover\": {\n color: theme.palette.secondary.main,\n backgroundColor: theme.palette.grey[100],\n },\n },\n tabStatic: {\n padding: \"8px 16px 6px 16px\",\n borderRadius: \"16px 16px 0px 0px\",\n borderColor: theme.palette.grey[500],\n backgroundColor: theme.palette.grey[300],\n cursor: \"pointer\",\n minWidth: \"110px\",\n textAlign: \"center\",\n maxWidth: \"150px\",\n maxHeight: \"60px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \"&:hover\": {\n color: theme.palette.secondary.main,\n backgroundColor: theme.palette.grey[100],\n },\n },\n disabled: {\n backgroundColor: theme.palette.grey[500],\n \"&:hover\": {\n color: \"inherit\",\n backgroundColor: theme.palette.grey[500],\n cursor: \"default\",\n },\n },\n barStart: {\n width: theme.spacing(4),\n backgroundColor: \"inherit\",\n },\n barEnd: {\n width: \"100%\",\n backgroundColor: \"inherit\",\n },\n barStyle: {\n borderRadius: \"0px\",\n borderColor: theme.palette.grey[500],\n borderTop: 0,\n borderLeft: 0,\n borderRight: 0,\n },\n active: {\n borderBottom: 0,\n color: theme.palette.secondary.main,\n backgroundColor: \"transparent\",\n cursor: \"default\",\n \"&:hover\": {\n color: theme.palette.secondary.main,\n backgroundColor: \"transparent\",\n },\n },\n add: {\n color: theme.palette.info.dark,\n backgroundColor: \"transparent\",\n \"&:hover\": {\n color: theme.palette.info.dark,\n },\n },\n title: {\n maxWidth: \"100%\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n },\n valid: {\n color: theme.palette.success.main,\n marginRight: \"8px\",\n },\n invalid: {\n color: theme.palette.error.main,\n marginRight: \"8px\",\n },\n});\n\nconst propsDefinition = {\n //Provided props\n classes: PropTypes.object, // Provided by Matrial Ui Styles\n paddocks: PropTypes.array, // Provided by Redux\n selectedPaddock: PropTypes.object, // Provided by Redux\n selectedOperation: PropTypes.string, // Provided by Redux\n selectedBar: PropTypes.string, // Provided by Redux\n setSelectedBar: PropTypes.func, // Provided by Redux\n onLoad: PropTypes.func, // Provided by Redux\n setSelectedPaddock: PropTypes.func,\n farmId: PropTypes.string, // Provided by Redux\n selectedPeriod: PropTypes.string, // Provided by Redux\n selectedCrop: PropTypes.string, // Provided by Redux\n};\n\nconst NavigationBar = ({\n classes,\n paddocks,\n selectedPaddock,\n selectedOperation,\n selectedBar,\n setSelectedBar,\n onLoad,\n setSelectedPaddock,\n farmId,\n selectedPeriod,\n selectedCrop,\n}) => {\n const { t } = useTranslation();\n\n const getPaddock = useCallback(\n (selectedPeriod, selectedCrop) => {\n onLoad(agent.Farms.Paddocks.search(farmId, selectedPeriod, selectedCrop));\n },\n [onLoad, farmId]\n );\n\n useEffect(() => {\n getPaddock(selectedPeriod, selectedCrop);\n }, [getPaddock, selectedPeriod, selectedCrop]);\n\n const handleTabClick = (newValue) => {\n setSelectedBar(\"paddock\");\n setSelectedPaddock(newValue);\n };\n\n if (paddocks) {\n return (\n \n \n \n !Boolean(selectedOperation) ? setSelectedBar(\"cropsTechs\") : null\n }\n className={`${classes.tabStatic} ${\n \"cropsTechs\" === selectedBar ? classes.active : \"\"\n } ${Boolean(selectedOperation) ? classes.disabled : \"\"}`}\n >\n {t(\"operations.paddock.paddock-crops-techs\")}\n \n \n !Boolean(selectedOperation) ? setSelectedBar(\"cropsResidues\") : null\n }\n className={`${classes.tabStatic} ${\n \"cropsResidues\" === selectedBar ? classes.active : \"\"\n } ${Boolean(selectedOperation) ? classes.disabled : \"\"}`}\n >\n {t(\"operations.paddock.paddock-crops-residues\")}\n
\n \n !Boolean(selectedOperation) ? setSelectedBar(\"cropsIrrigation\") : null\n }\n className={`${classes.tabStatic} ${\n \"cropsIrrigation\" === selectedBar ? classes.active : \"\"\n } ${Boolean(selectedOperation) ? classes.disabled : \"\"}`}\n >\n {t(\"operations.paddock.paddock-crops-irrigation\")}\n \n \n !Boolean(selectedOperation) ? setSelectedBar(\"cropsOrganics\") : null\n }\n className={`${classes.tabStatic} ${\n \"cropsOrganics\" === selectedBar ? classes.active : \"\"\n } ${Boolean(selectedOperation) ? classes.disabled : \"\"}`}\n >\n {t(\"operations.paddock.paddock-crops-organics\")}\n \n {paddocks.map((item, index) => (\n \n \n !Boolean(selectedOperation) &&\n (!selectedPaddock || item.id !== selectedPaddock.id)\n ? handleTabClick(item.id)\n : null\n }\n className={`${classes.tab} ${\n selectedPaddock &&\n item.id === selectedPaddock.id &&\n selectedBar === \"paddock\"\n ? classes.active\n : \"\"\n } ${Boolean(selectedOperation) ? classes.disabled : \"\"}`}\n data-woi='crop-operations'\n >\n {item.status === 3 ? (\n \n \n \n ) : (\n \n \n \n )}\n \n {item.blocperi.bloc.name}\n \n {item.isOrganic ? (\n \n ) : (\n \"\"\n )}\n \n
\n ))}\n \n \n );\n }\n return null;\n};\n\nNavigationBar.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n paddocks: state.crop.paddocks,\n selectedPaddock: state.crop.selectedPaddock,\n selectedCrop: state.crop.selectedCrop,\n selectedBar: state.crop.selectedBar,\n farmId: state.farm.farm && state.farm.farm.id,\n selectedPeriod: state.farm.selectedPeriod,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n setSelectedPaddock: (payload) =>\n dispatch({\n type: SELECT_PADDOCK,\n payload,\n }),\n setSelectedBar: (payload) => {\n dispatch({ type: SELECT_BAR, payload });\n },\n onLoad: (payload) =>\n dispatch({\n type: PADDOCKS_LOADED,\n payload,\n }),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(NavigationBar));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\nimport profiles from \"../../../constants/profiles\";\n\n//Custom Components\nimport FieldWithTextAdornment from \"../../FieldWithTextAdornment\";\nimport DeleteConfirmation from \"../../DeleteConfirmation\";\nimport BlankIcon from \"../../BlankIcon\";\n\n//Material UI Components\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport Typography from \"@material-ui/core/Typography\";\nimport DeleteForever from \"@material-ui/icons/DeleteForever\";\nimport Grid from \"@material-ui/core/Grid\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Portal from \"@material-ui/core/Portal\";\n\nconst useStyle = makeStyles((theme) => ({\n root: {\n padding: theme.spacing(1),\n },\n rowContainer: {\n marginBottom: theme.spacing(1),\n paddingLeft: \"300px\",\n },\n checkboxes: {\n paddingRight: \"10px\",\n },\n confirmInputs: {\n display: \"flex\",\n justifyContent: \"center\",\n },\n}));\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n organic: PropTypes.object.isRequired,\n farmId: PropTypes.string.isRequired,\n\n //Provided props\n classes: PropTypes.object, // Provided by withStyles HOC\n};\n\nconst CropsOrganicRow = ({ organic, setCropsOrganics, farmId }) => {\n const classes = useStyle();\n\n const [id, setId] = useState(null);\n const [status, setStatus] = useState(0);\n const [lock, setLock] = useState(0);\n const [fertiliser, setFertiliser] = useState(null);\n const [passedYears, setPassedYears] = useState(0);\n const [percentage, setPercentage] = useState(0);\n const [notDeletable, setNotDeletable] = useState(0);\n\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [errors, setErrors] = useState([]);\n const [changed, setChanged] = useState(false);\n\n const { t } = useTranslation();\n const permissions = new Permissions(status, lock, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n ]);\n\n useEffect(() => {\n if (organic.id) {\n setId(organic.id);\n setStatus(organic.status);\n setLock(organic.lock);\n setFertiliser(organic.fertiliser);\n setPassedYears(organic.passedYears);\n setPercentage(organic.percentage);\n setNotDeletable(organic.flagDelete);\n setChanged(false);\n }\n }, [organic]);\n\n const validateData = useCallback(() => {\n if (!(passedYears > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"passedYears\",\n message: t(\"operations.crops-organics.errors.passed-years\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((error) => error.field !== \"passedYears\")]);\n }\n if (!(percentage > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"percentage\",\n message: t(\"operations.crops-organics.errors.percentage\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((error) => error.field !== \"percentage\")]);\n }\n }, [passedYears, percentage, t]);\n\n useEffect(() => {\n if (changed) {\n validateData();\n }\n }, [changed, validateData]);\n\n const handleUpdate = useCallback(() => {\n const validate = (passedYears, percentage) => {\n let error = false;\n if (!(passedYears > 0)) {\n error = true;\n }\n if (!(percentage > 0)) {\n error = true;\n }\n return error;\n };\n\n if (!validate(passedYears, percentage)) {\n const reqBody = {\n cropsOrganics: {\n passedYears,\n percentage,\n },\n };\n\n const updateCropOrganic = agent.Farms.CropsOrganic.update(farmId, id, reqBody).then(\n (res) => {\n setCropsOrganics((crops) => [\n ...crops.map((crop) => {\n if (crop.id === id) {\n return res.body.cropsOrganics;\n }\n return crop;\n }),\n ]);\n }\n );\n\n toast.promise(updateCropOrganic, {\n loading: t(\"global.loading\"),\n success: t(\"operations.crops-organics.notifications.saved\"),\n error: t(\"operations.crops-organics.notifications.error\"),\n });\n }\n }, [passedYears, percentage, setCropsOrganics, id, farmId, t]);\n\n useEffect(() => {\n if (changed && id) {\n const timer = setTimeout(() => handleUpdate(), 700);\n return () => clearTimeout(timer);\n }\n }, [handleUpdate, id, changed]);\n\n const handleStatus = async () => {\n setStatus(3);\n if (!(errors.length > 0)) {\n const reqBody = {\n cropsOrganics: {\n status: 3,\n },\n };\n\n const updateCropOrganic = agent.Farms.CropsOrganic.update(farmId, id, reqBody).then(\n (res) => {\n setCropsOrganics((crops) => [\n ...crops.map((crop) => {\n if (crop.id === id) {\n return res.body.cropsOrganics;\n }\n return crop;\n }),\n ]);\n }\n );\n\n toast.promise(updateCropOrganic, {\n loading: t(\"global.loading\"),\n success: t(\"operations.crops-organics.notifications.validated\"),\n error: t(\"operations.crops-organics.notifications.error\"),\n });\n }\n };\n\n const handleDelete = async () => {\n const deleteCropOrganic = agent.Farms.CropsOrganic.delete(farmId, id).then((res) => {\n setCropsOrganics((crops) => [\n ...crops.filter((crop) => crop.id !== res.body.crop.id),\n ]);\n });\n\n toast.promise(deleteCropOrganic, {\n loading: t(\"global.loading\"),\n success: t(\"operations.crops-organics.notifications.deleted\"),\n error: t(\"operations.crops-organics.notifications.error\"),\n });\n };\n\n const handleDeleteConfirm = () => {\n setDeleteOpen(true);\n };\n\n return (\n \n \n \n \n \n {permissions.canView() && status === 0 && id !== null ? (\n \n
\n \n \n \n
\n
\n ) : status === 3 ? (\n \n
\n \n \n \n
\n
\n ) : (\n
\n \n \n \n
\n )}\n
\n \n {\n setPassedYears(e.target.value);\n setChanged(true);\n }}\n adornment={t(\"operations.crops-organics.years-ago\")}\n width='130px'\n errors={errors}\n />\n \n \n {\n setPercentage(e.target.value);\n setChanged(true);\n }}\n adornment={t(\"operations.crops-organics.of-surface\")}\n width='200px'\n errors={errors}\n />\n \n {((!permissions.canView() && status !== 3) || permissions.canView()) &&\n permissions.canEdit() ? (\n \n \n {t(\"operations.crops-organics.not-deletable-message\")}\n \n ) : (\n \"\"\n )\n }\n >\n
\n \n \n \n
\n \n
\n ) : null}\n \n {\n setDeleteOpen(false);\n }}\n onConfirm={() => {\n setDeleteOpen(false);\n handleDelete();\n }}\n />\n \n
\n );\n};\n\nCropsOrganicRow.propTypes = propsDefinition;\n\nexport default CropsOrganicRow;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom Components\nimport LoadingSpinner from \"../../LoadingSpinner\";\nimport CropsOrganicRow from \"./CropsOrganicRow\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\nconst propsDefinition = {\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n selectedPeriod: PropTypes.string, // Provided by Redux\n selectedCrop: PropTypes.string, // Provided by Redux\n};\n\nconst CropsOrganicsSection = ({ farmId, selectedPeriod, selectedCrop }) => {\n const [cropsOrganics, setCropsOrganics] = useState([]);\n const [loading, setLoading] = useState(false);\n\n const { t } = useTranslation();\n\n useEffect(() => {\n setLoading(true);\n const getCropsOrganics = async () => {\n const { body, error } = await agent.Farms.CropsOrganic.get(\n farmId,\n selectedPeriod,\n selectedCrop\n );\n\n if (!error) {\n setCropsOrganics(body.cropsOrganics);\n }\n setLoading(false);\n };\n\n getCropsOrganics();\n }, [farmId, selectedCrop, selectedPeriod]);\n\n const cropsOrganicsList = cropsOrganics.map((item, index) => (\n \n ));\n\n if (loading) {\n return (\n \n \n \n );\n }\n\n if (cropsOrganics.length > 0) {\n return
{cropsOrganicsList}
;\n } else {\n return (\n \n {t(\"operations.crops-organics.empty\")}\n \n );\n }\n};\n\nCropsOrganicsSection.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n farmId: state.farm.farm.id,\n selectedPeriod: state.farm.selectedPeriod,\n selectedCrop: state.crop.selectedCrop,\n});\n\nexport default connect(mapStateToProps)(CropsOrganicsSection);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//Custom Components\nimport CropHeader from \"./CropHeader\";\nimport PaddockSection from \"./PaddockSection\";\nimport CropsResiduesSection from \"./CropsResiduesSection\";\nimport CropsTechsSection from \"./CropsTechsSection\";\nimport CropsIrrigationSection from \"./CropsIrrigationSection\";\nimport NavigationBar from \"./NavigationBar\";\nimport CropsOrganicsSection from \"./CropsOrganicsSection\";\n\nconst propsDefinition = {\n //Provided props\n match: PropTypes.object, // Provided by Router\n selectedBar: PropTypes.string, // Provided by Redux\n};\n\nconst Crop = ({ match, selectedBar }) => {\n const content =\n selectedBar === \"paddock\" ? (\n \n ) : selectedBar === \"cropsTechs\" ? (\n \n ) : selectedBar === \"cropsResidues\" ? (\n \n ) : selectedBar === \"cropsIrrigation\" ? (\n \n ) : selectedBar === \"cropsOrganics\" ? (\n \n ) : (\n \"\"\n );\n\n return (\n \n \n \n {content}\n \n );\n};\n\nCrop.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n selectedBar: state.crop.selectedBar,\n});\n\nexport default connect(mapStateToProps)(Crop);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { useTranslation } from \"react-i18next\";\n\nconst EquipmentsHeader = () => {\n const { t } = useTranslation();\n return (\n \n \n {t(\"equipments.header.title\")}\n \n \n );\n};\n\nexport default EquipmentsHeader;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useCallback, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport TextField from \"@material-ui/core/TextField\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n operationId: PropTypes.string.isRequired,\n value: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n periodId: PropTypes.string.isRequired,\n farmId: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n errors: PropTypes.array.isRequired,\n};\n\nconst SearchMachineries = ({\n operationId,\n value,\n onChange,\n name,\n periodId,\n farmId,\n disabled,\n errors,\n}) => {\n const { t } = useTranslation();\n\n const [machineries, setMachineries] = useState([\n { id: \"loading\", name: t(\"equipments.search-machinery.loading\") },\n ]);\n const [query, setQuery] = useState(\"\");\n const [open, setOpen] = useState(false);\n\n const getMachineries = useCallback(\n async (query = \"\") => {\n const { body, error } = await agent.Machineries.search(\n operationId,\n periodId,\n farmId,\n query\n );\n if (!error) {\n setMachineries(body.machineries);\n } else {\n setMachineries({ id: \"error\", name: \"error\" });\n }\n },\n [operationId, periodId, farmId]\n );\n\n useEffect(() => {\n if (open) {\n let timer;\n if (query !== \"\") {\n timer = setTimeout(() => {\n getMachineries(query);\n }, 300);\n\n return () => clearTimeout(timer);\n } else {\n timer = setTimeout(() => {\n getMachineries();\n }, 100);\n\n return () => clearTimeout(timer);\n }\n }\n }, [query, open, getMachineries]);\n\n const onOpen = () => {\n setOpen(true);\n };\n\n const onClose = () => {\n setOpen(false);\n };\n\n return (\n \n }\n fullWidth={true}\n value={value}\n onChange={onChange}\n onInputChange={(e) => setQuery(e && e.target ? e.target.value : \"\")}\n onOpen={onOpen}\n onClose={onClose}\n freeSolo\n size='small'\n name={name}\n getOptionSelected={(opt, value) => {\n return opt.id === value.id;\n }}\n options={machineries}\n getOptionDisabled={(option) => {\n return (\n (option.id === \"loading\" || option.id === \"error\" || option.usedByFarm === 1) &&\n value !== null &&\n option.id !== value.id\n );\n }}\n getOptionLabel={(option) => (option.name ? option.name : \"\")}\n renderInput={(params) => (\n item.field === \"machinery\").length > 0}\n helperText={\n errors.filter((item) => item.field === \"machinery\").length > 0\n ? errors.filter((item) => item.field === \"machinery\")[0].message\n : \"\"\n }\n InputProps={{\n ...params.InputProps,\n type: \"search\",\n }}\n />\n )}\n />\n );\n};\n\nSearchMachineries.propTypes = propsDefinition;\n\nexport default SearchMachineries;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n UPDATE_FARM_MACHINERY,\n ADD_FARM_MACHINERY,\n REMOVE_FARM_MACHINERY,\n} from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notification\nimport toast from \"react-hot-toast\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\n\n//Custom Components\nimport DeleteConfirmation from \"../../DeleteConfirmation\";\nimport SearchMachineries from \"./SearchMachineries\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DeleteForever from \"@material-ui/icons/DeleteForever\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Portal from \"@material-ui/core/Portal\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport IconButton from \"@material-ui/core/IconButton\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n farmMachinery: PropTypes.object,\n operationId: PropTypes.string.isRequired,\n farmId: PropTypes.string.isRequired,\n index: PropTypes.number,\n selectedPeriod: PropTypes.string.isRequired,\n\n //Provided props\n updateFarmMachinery: PropTypes.func, // Provided by Redux\n addFarmMachinery: PropTypes.func, // Provided by Redux\n removeFarmMachinery: PropTypes.func, // Provided by Redux\n};\n\nconst EquipmentRow = ({\n farmMachinery = {},\n operationId,\n farmId,\n index,\n selectedPeriod,\n updateFarmMachinery,\n addFarmMachinery,\n removeFarmMachinery,\n}) => {\n const [id, setId] = useState(null);\n const [givenName, setGivenName] = useState(\"\");\n const [machinery, setMachinery] = useState({});\n const [thirdParty, setThirdParty] = useState(0);\n const [lock, setLock] = useState(0);\n const [body, setBody] = useState({});\n const [loading, setLoading] = useState(false);\n const [notDeletable, setNotDeletable] = useState(false);\n const [isUsed, setIsUsed] = useState(false);\n const [errorsG, setErrors] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const { t } = useTranslation();\n\n const permissions = new Permissions(null, lock);\n\n useEffect(() => {\n if (farmMachinery.id) {\n setId(farmMachinery.id || null);\n setGivenName(farmMachinery.givenName || \"\");\n setMachinery(farmMachinery.machinery || {});\n setThirdParty(farmMachinery.thirdParty || 0);\n setNotDeletable(farmMachinery.flagDelete ? true : false);\n setIsUsed(farmMachinery.isUsed);\n setLock(farmMachinery.lock);\n }\n }, [farmMachinery]);\n\n const update = useCallback(\n (item) => {\n const updateMachinery = agent.Farms.FarmMachineries.update(farmId, id, item)\n .then((res) => {\n updateFarmMachinery(res.body.farmMachinery, operationId, index);\n })\n .catch(() => {\n setId(farmMachinery.id || null);\n setGivenName(farmMachinery.givenName || \"\");\n setMachinery(farmMachinery.machinery || {});\n setThirdParty(farmMachinery.thirdParty || 0);\n });\n\n toast.promise(updateMachinery, {\n loading: t(\"global.loading\"),\n success: t(\"equipments.section.notifications.equipment-saved\"),\n error: t(\"equipments.section.notifications.error\"),\n });\n\n setBody({});\n },\n [farmId, id, farmMachinery, operationId, updateFarmMachinery, index, t]\n );\n\n useEffect(() => {\n if (body.farmMachinery) {\n const timer = setTimeout(() => update(body), 1000);\n return () => clearTimeout(timer);\n }\n }, [body, update]);\n\n const handleChange = (field, value) => {\n let item = {};\n let errors = [];\n switch (field) {\n case \"givenName\":\n setGivenName(value);\n if (value !== \"\") {\n item.givenName = value;\n } else {\n errors.push({\n field: field,\n message: t(\"equipments.section.errors.name-required\"),\n });\n }\n break;\n case \"machinery\":\n setMachinery(value);\n if (value && value.id !== \"\") {\n item.machinery = value;\n } else {\n errors.push({\n field: field,\n message: t(\"equipments.section.errors.equipment-required\"),\n });\n }\n break;\n case \"thirdParty\":\n setThirdParty(value);\n item.thirdParty = value;\n break;\n default:\n break;\n }\n if (\n errors.length === 0 &&\n id &&\n errorsG.filter((item) => item.field !== field).length === 0\n ) {\n setErrors([]);\n setBody({\n ...body,\n farmMachinery: {\n ...body.farmMachinery,\n ...item,\n },\n });\n } else {\n setErrors([...errorsG.filter((item) => item.field !== field), ...errors]);\n }\n };\n\n const handleDelete = async () => {\n setLoading(true);\n\n const deleteMachinery = agent.Farms.FarmMachineries.delete(farmId, id)\n .then((res) => {\n removeFarmMachinery(res.body.farmMachinery.id, operationId);\n setLoading(false);\n })\n .catch(() => {\n setLoading(false);\n });\n\n toast.promise(deleteMachinery, {\n loading: t(\"global.loading\"),\n success: t(\"equipments.section.notifications.equipment-deleted\"),\n error: t(\"equipments.section.notifications.error\"),\n });\n };\n\n const handleCreate = async () => {\n let errors = [];\n\n if (givenName === \"\") {\n errors.push({\n field: \"givenName\",\n message: t(\"equipments.section.errors.name-required\"),\n });\n }\n if (!machinery.id) {\n errors.push({\n field: \"machinery\",\n message: t(\"equipments.section.errors.equipment-required\"),\n });\n }\n\n if (errors.length === 0) {\n setLoading(true);\n\n const createMachinery = agent.Farms.FarmMachineries.create(farmId, {\n farmMachinery: {\n givenName,\n machinery,\n thirdParty,\n period: { id: selectedPeriod },\n },\n })\n .then((res) => {\n setErrors([]);\n addFarmMachinery(res.body.farmMachinery, operationId);\n setLoading(false);\n })\n .catch(() => {\n setLoading(false);\n });\n\n toast.promise(createMachinery, {\n loading: t(\"global.loading\"),\n success: t(\"equipments.section.notifications.equipment-added\"),\n error: t(\"equipments.section.notifications.error\"),\n });\n } else {\n setErrors(errors);\n }\n };\n\n const handleDeleteConfirm = () => {\n setDeleteOpen(true);\n };\n\n if (farmMachinery) {\n return (\n \n \n item.field === \"givenName\").length > 0}\n helperText={\n errorsG.filter((item) => item.field === \"givenName\").length > 0\n ? errorsG.filter((item) => item.field === \"givenName\")[0].message\n : \"\"\n }\n onChange={(e) => handleChange(e.target.name, e.target.value)}\n />\n \n \n \n
\n handleChange(\"machinery\", value)}\n value={machinery}\n />\n
\n \n
\n \n \n handleChange(e.currentTarget.name, value ? 1 : 0)}\n />\n {t(\"equipments.section.third-party-label\")}\n \n \n {!id && permissions.canEdit() ? (\n \n \n \n ) : (\n permissions.canEdit() && (\n {t(\"equipments.section.not-deletable-message\")}\n ) : (\n \"\"\n )\n }\n >\n
\n \n \n \n
\n \n )\n )}\n \n {\n setDeleteOpen(false);\n }}\n onConfirm={() => {\n setDeleteOpen(false);\n handleDelete();\n }}\n />\n \n
\n );\n }\n return null;\n};\n\nEquipmentRow.propTypes = propsDefinition;\n\nconst mapDispatchToProps = (dispatch) => ({\n updateFarmMachinery: (payload, operationId, index) =>\n dispatch({\n type: UPDATE_FARM_MACHINERY,\n payload,\n operationId,\n index,\n }),\n addFarmMachinery: (payload, operationId) =>\n dispatch({ type: ADD_FARM_MACHINERY, payload, operationId }),\n removeFarmMachinery: (payload, operationId) =>\n dispatch({ type: REMOVE_FARM_MACHINERY, payload, operationId }),\n});\n\nexport default connect(null, mapDispatchToProps)(EquipmentRow);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\n\n//Custom Components\nimport EquipmentRow from \"./EquipmentRow\";\n\n//UI Components\nimport Paper from \"@material-ui/core/Paper\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n farmMachineries: PropTypes.array.isRequired,\n operationName: PropTypes.string.isRequired,\n operationId: PropTypes.string.isRequired,\n farmId: PropTypes.string.isRequired,\n lock: PropTypes.number.isRequired,\n selectedPeriod: PropTypes.string.isRequired,\n};\n\nconst EquipmentSection = ({\n farmMachineries,\n operationName,\n operationId,\n farmId,\n lock,\n selectedPeriod,\n}) => {\n const { t } = useTranslation();\n const permissions = new Permissions(null, lock);\n if (farmMachineries) {\n return (\n \n \n \n {operationName}\n \n \n \n {t(\"equipments.section.operation-types.given-name\")}\n \n \n \n \n {t(\"equipments.section.operation-types.equipment-name\")}\n \n \n {farmMachineries.map((item, index) => {\n return (\n \n );\n })}\n {permissions.canEdit() && (\n \n )}\n \n \n );\n }\n return null;\n};\n\nEquipmentSection.propTypes = propsDefinition;\n\nexport default EquipmentSection;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { FARM_MACHINERIES_LOADED } from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\n\n//Custom Components\nimport EquipmentsSection from \"./EquipmentsSection\";\n\nconst propsDefinition = {\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n farmMachineries: PropTypes.array, // Provided by Redux\n selectedPeriod: PropTypes.string, // Provided by Redux\n onLoad: PropTypes.func, // Provided by Redux\n lock: PropTypes.number, // Provided by Redux\n};\n\nconst EquipmentsContainer = ({\n farmMachineries,\n selectedPeriod,\n onLoad,\n farmId,\n lock,\n}) => {\n const permissions = new Permissions(null, lock);\n\n useEffect(() => {\n onLoad(agent.Farms.FarmMachineries.getAll(farmId, selectedPeriod));\n }, [onLoad, farmId, selectedPeriod]);\n\n const containers =\n permissions.canEdit() && farmMachineries && farmMachineries.length > 0\n ? farmMachineries.map((item, index) => (\n \n ))\n : farmMachineries &&\n farmMachineries.length > 0 &&\n farmMachineries\n .filter((item) => item.farmMachineries.length > 0)\n .map((item, index) => (\n \n ));\n\n if (farmMachineries && farmMachineries.length > 0 && selectedPeriod) {\n return {containers};\n }\n return null;\n};\n\nEquipmentsContainer.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n farmMachineries: state.farmMachineries.farmMachineries,\n farmId: state.farm.farm.id,\n selectedPeriod: state.farm.selectedPeriod,\n lock: state.farm.lock.status,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onLoad: (payload) => dispatch({ type: FARM_MACHINERIES_LOADED, payload }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EquipmentsContainer);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport Header from \"./Header\";\nimport Container from \"./Container\";\n\nclass Equipments extends React.Component {\n render() {\n return (\n \n
\n \n \n );\n }\n}\n\nexport default Equipments;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { SET_LAND_PAGE } from \"../../constants/actionTypes\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//UI Components\nimport Paper from \"@material-ui/core/Paper\";\nimport Box from \"@material-ui/core/Box\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Grid from \"@material-ui/core/Grid\";\n\nconst styles = (theme) => ({\n root: {\n marginBottom: \"8px\",\n },\n titleContainer: {\n marginBottom: \"24px\",\n },\n tab: {\n padding: \"8px 16px 6px 16px\",\n borderRadius: \"16px 16px 0px 0px\",\n borderColor: theme.palette.grey[500],\n backgroundColor: theme.palette.grey[300],\n cursor: \"pointer\",\n minWidth: \"140px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n \"&:hover\": {\n color: theme.palette.secondary.main,\n backgroundColor: theme.palette.grey[100],\n },\n },\n disabled: {\n backgroundColor: theme.palette.grey[500],\n \"&:hover\": {\n color: \"inherit\",\n backgroundColor: theme.palette.grey[500],\n cursor: \"default\",\n },\n },\n barStart: {\n width: theme.spacing(4),\n backgroundColor: \"inherit\",\n },\n barEnd: {\n width: \"100%\",\n backgroundColor: \"inherit\",\n },\n barStyle: {\n borderRadius: \"0px\",\n borderColor: theme.palette.grey[500],\n borderTop: 0,\n borderLeft: 0,\n borderRight: 0,\n },\n active: {\n borderBottom: 0,\n color: theme.palette.secondary.main,\n backgroundColor: \"transparent\",\n cursor: \"default\",\n \"&:hover\": {\n color: theme.palette.secondary.main,\n backgroundColor: \"transparent\",\n },\n },\n add: {\n color: theme.palette.info.dark,\n backgroundColor: \"transparent\",\n \"&:hover\": {\n color: theme.palette.info.dark,\n },\n },\n title: {\n display: \"flex\",\n justifyContent: \"center\",\n },\n});\n\nconst propsDefinition = {\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n classes: PropTypes.object, // Provided by Material Ui Style\n selectedLandPage: PropTypes.string, // Provided by Redux\n setLandPag: PropTypes.func, // Provided by Redux\n};\n\nconst LandHeader = ({ classes, selectedLandPage, setLandPage }) => {\n const { t } = useTranslation();\n\n const tabTypes = [\n {\n type: \"blocs\",\n name: t(\"land.header.tabs.blocs\"),\n },\n {\n type: \"blocsperi\",\n name: t(\"land.header.tabs.blocsperi\"),\n },\n {\n type: \"paddocks\",\n name: t(\"land.header.tabs.paddocks\"),\n },\n ];\n\n return (\n \n \n \n {t(\"land.header.title\")}\n \n \n \n \n \n {tabTypes.map((item, index) => (\n {\n setLandPage(item.type);\n }}\n className={`${classes.tab} ${\n item.type === selectedLandPage ? classes.active : \"\"\n }`}\n >\n \n {item.name}\n \n \n ))}\n \n \n \n \n );\n};\n\nLandHeader.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n selectedLandPage: state.land.selectedLandPage,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n setLandPage: (payload) => dispatch({ type: SET_LAND_PAGE, payload }),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(LandHeader));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState, useRef, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n ADD_BLOC,\n DELETE_BLOC,\n UPDATE_BLOC\n} from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\nimport profiles from \"../../../constants/profiles\";\n\n//Custom Components\nimport DeleteConfirmation from \"../../DeleteConfirmation\";\nimport FieldWithTextAdornment from \"../../FieldWithTextAdornment\";\n\n//UI Components\nimport Portal from \"@material-ui/core/Portal\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Button from \"@material-ui/core/Button\";\nimport TextField from \"@material-ui/core/TextField\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport Box from \"@material-ui/core/Box\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Typography from \"@material-ui/core/Typography\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport DeleteForever from \"@material-ui/icons/DeleteForever\";\n\nconst styles = theme => ({\n root: {\n marginBottom: theme.spacing(1)\n },\n checkboxes: {\n width: \"140px\"\n }\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n bloc: PropTypes.object,\n index: PropTypes.number,\n\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n classes: PropTypes.object, // Provided by Material Ui Style\n addBloc: PropTypes.func, // Provided by Redux\n deleteBloc: PropTypes.func, // Provided by Redux\n updateBloc: PropTypes.func // Provided by Redux\n};\n\nconst BlocRow = ({\n bloc = null,\n classes,\n addBloc,\n farmId,\n deleteBloc,\n index,\n updateBloc\n}) => {\n const [id, setId] = useState(null);\n const [name, setName] = useState(\"\");\n const [area, setArea] = useState(0);\n const [notDeletable, setNotDeletable] = useState(false);\n const [loading] = useState(false);\n const [errors, setErrors] = useState([]);\n const [changed, setChanged] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n\n const permissions = new Permissions(null, null, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n profiles._ENC\n ]);\n\n let nameInput = useRef(null);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (bloc) {\n setId(bloc.id);\n setName(bloc.name);\n setArea(bloc.area);\n setNotDeletable(!bloc.flagDelete);\n }\n }, [bloc]);\n\n const checkValidate = useCallback(() => {\n if (name === \"\") {\n setErrors(errors => [\n ...errors,\n { field: \"name\", message: t(\"land.blocs.errors.name-required\") }\n ]);\n } else {\n setErrors(errors => [...errors.filter(item => item.field !== \"name\")]);\n }\n if (!(area > 0)) {\n setErrors(errors => [\n ...errors,\n { field: \"area\", message: t(\"land.blocs.errors.area-required\") }\n ]);\n } else {\n setErrors(errors => [...errors.filter(item => item.field !== \"area\")]);\n }\n }, [name, area, t]);\n\n useEffect(() => {\n if (changed) {\n checkValidate();\n }\n }, [checkValidate, changed]);\n\n const handleCreate = () => {\n if (errors.length === 0) {\n const reqBody = {\n bloc: {\n name,\n area\n }\n };\n\n const createBloc = agent.Farms.Blocs.create(farmId, reqBody).then(res => {\n addBloc(res.body.bloc);\n setChanged(false);\n setId(null);\n setName(\"\");\n setArea(0);\n nameInput.current.focus();\n });\n\n toast.promise(createBloc, {\n loading: t(\"global.loading\"),\n success: t(\"land.blocs.notifications.bloc-added\"),\n error: t(\"land.blocs.notifications.error\")\n });\n }\n };\n\n const handleUpdate = useCallback(() => {\n const validate = (name, area) => {\n let error = false;\n if (name === \"\") {\n error = true;\n }\n if (!(area > 0)) {\n error = true;\n }\n return error;\n };\n\n if (!validate(name, area)) {\n const reqBody = {\n bloc: {\n name,\n area\n }\n };\n\n const changeBloc = agent.Farms.Blocs.update(farmId, id, reqBody).then(\n res => {\n updateBloc(res.body.bloc, index);\n setChanged(false);\n }\n );\n\n toast.promise(changeBloc, {\n loading: t(\"global.loading\"),\n success: t(\"land.blocs.notifications.bloc-saved\"),\n error: t(\"land.blocs.notifications.error\")\n });\n }\n }, [name, area, t, farmId, id, index, updateBloc]);\n\n useEffect(() => {\n if (changed && id) {\n const timer = setTimeout(() => handleUpdate(), 700);\n return () => clearTimeout(timer);\n }\n }, [handleUpdate, id, changed, name, area]);\n\n const handleDeleteConfirm = () => {\n setDeleteOpen(true);\n };\n\n const handleDelete = () => {\n const removeBloc = agent.Farms.Blocs.delete(farmId, id).then(() => {\n deleteBloc(index);\n });\n\n toast.promise(removeBloc, {\n loading: t(\"global.loading\"),\n success: t(\"land.blocs.notifications.bloc-deleted\"),\n error: t(\"land.blocs.notifications.error\")\n });\n };\n\n const actionType =\n permissions.canEdit() &&\n (!id ? (\n \n \n {t(\"land.blocs.add-button-label\")}\n \n \n ) : (\n {t(\"land.blocs.not-deletable-message\")}\n ) : (\n \"\"\n )\n }\n >\n
\n \n \n \n
\n \n ));\n\n return (\n \n \n item.field === \"name\").length > 0}\n helperText={\n errors.filter(item => item.field === \"name\").length > 0\n ? errors.filter(item => item.field === \"name\")[0].message\n : \"\"\n }\n onChange={e => {\n setChanged(true);\n setName(e.target.value);\n }}\n />\n \n \n {\n setChanged(true);\n setArea(e.target.value);\n }}\n error={errors.filter(item => item.field === \"area\").length > 0}\n helperText={\n errors.filter(item => item.field === \"area\").length > 0\n ? errors.filter(item => item.field === \"area\")[0].message\n : \"\"\n }\n onFocus={event => event.target.select()}\n InputProps={{\n inputProps: { min: 0 },\n endAdornment: (\n \n ha\n \n )\n }}\n InputLabelProps={{\n shrink: true\n }}\n />\n \n {actionType}\n \n {\n setDeleteOpen(false);\n }}\n onConfirm={() => {\n setDeleteOpen(false);\n handleDelete();\n }}\n />\n \n \n );\n};\n\nBlocRow.propTypes = propsDefinition;\n\nconst mapStateToProps = state => ({\n farmId: state.farm.farm.id\n});\n\nconst mapDispachToProps = dispatch => ({\n addBloc: payload => dispatch({ type: ADD_BLOC, payload }),\n updateBloc: (payload, index) =>\n dispatch({ type: UPDATE_BLOC, payload, index }),\n deleteBloc: index => dispatch({ type: DELETE_BLOC, index })\n});\n\nexport default connect(\n mapStateToProps,\n mapDispachToProps\n)(withStyles(styles)(BlocRow));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { SOIL_TYPES_LOADED } from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\nimport profiles from \"../../../constants/profiles\";\n\n//Custom Components\nimport BlocRow from \"./BlocRow\";\n\n//UI Components\nimport Typography from \"@material-ui/core/Typography\";\nimport Grid from \"@material-ui/core/Grid\";\n\nconst styles = (theme) => ({\n root: {\n padding: theme.spacing(1),\n },\n});\n\nconst propsDefinition = {\n //Provided props\n blocs: PropTypes.array, // Provided by Redux\n classes: PropTypes.object, // Provided by Material Ui Style\n soilTypesLoad: PropTypes.func, // Provided by Redux\n};\n\nconst BlocSection = ({ blocs, classes, soilTypesLoad }) => {\n const { t } = useTranslation();\n\n const permissions = new Permissions(null, null, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n profiles._ENC,\n ]);\n\n useEffect(() => {\n const loadSoilTypes = async () => {\n const { body, error } = await agent.SoilTypes.get();\n\n if (!error) {\n soilTypesLoad(body.soilTypes);\n }\n };\n loadSoilTypes();\n }, [soilTypesLoad]);\n\n const blocList =\n blocs.length > 0\n ? blocs.map((bloc, index) => )\n : \"\";\n\n return (\n \n \n {t(\"land.blocs.description-1\")}\n {t(\"land.blocs.description-2\")}\n {t(\"land.blocs.description-3\")}\n \n \n {blocList}\n {permissions.canEdit() && }\n \n \n );\n};\n\nBlocSection.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n blocs: state.land.blocs,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n soilTypesLoad: (payload) => dispatch({ type: SOIL_TYPES_LOADED, payload }),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(BlocSection));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//UI Components\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport TextField from \"@material-ui/core/TextField\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n bloc: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n label: PropTypes.string.isRequired,\n width: PropTypes.string,\n errors: PropTypes.array.isRequired,\n name: PropTypes.string.isRequired,\n\n //Provided props\n blocs: PropTypes.array, // Provided by Redux\n};\n\nconst SelectBloc = ({\n bloc,\n onChange,\n blocs = [],\n disabled,\n label,\n width,\n errors: errList,\n name,\n}) => {\n const errors = errList.filter((item) => item.field === name);\n const { field, message } = errors.length > 0 ? errors[0] : {};\n const [open, setOpen] = useState(false);\n\n const onOpen = () => {\n setOpen(true);\n };\n\n const onClose = () => {\n setOpen(false);\n };\n\n return (\n }\n style={{\n width: width || \"175px\",\n }}\n disabled={disabled}\n onChange={onChange}\n onOpen={onOpen}\n onClose={onClose}\n freeSolo\n size='small'\n forcePopupIcon={open || (bloc && bloc.id) ? false : true}\n popupIcon={}\n value={bloc}\n getOptionLabel={(option) => (option.name ? option.name : \"\")}\n options={blocs.length > 0 ? blocs : [{ ...blocs }]}\n getOptionDisabled={(option) => (option.blocperi ? Boolean(option.blocperi) : false)}\n ListboxProps={{ \"data-woi\": \"bloc-list\" }}\n renderInput={(params) => (\n \n )}\n />\n );\n};\n\nSelectBloc.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n blocs: state.land.blocs,\n});\n\nexport default connect(mapStateToProps)(SelectBloc);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//UI Components\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport TextField from \"@material-ui/core/TextField\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n ph: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n label: PropTypes.string.isRequired,\n width: PropTypes.string,\n errors: PropTypes.array.isRequired,\n name: PropTypes.string.isRequired,\n\n //Provided props\n phs: PropTypes.array, // Provided by Redux\n};\n\nconst SelectPh = ({\n ph,\n onChange,\n phs = [],\n label,\n disabled,\n errors: errList,\n name,\n width,\n}) => {\n const errors = errList.filter((item) => item.field === name);\n const { field, message } = errors.length > 0 ? errors[0] : {};\n const [open, setOpen] = useState(false);\n\n const onOpen = () => {\n setOpen(true);\n };\n\n const onClose = () => {\n setOpen(false);\n };\n\n return (\n }\n style={{\n width: width || \"140px\",\n }}\n onChange={onChange}\n onOpen={onOpen}\n onClose={onClose}\n freeSolo\n size='small'\n forcePopupIcon={open || (ph && ph.id) ? false : true}\n popupIcon={}\n value={ph}\n getOptionLabel={(option) => (option.name ? option.name : \"\")}\n options={phs.length > 0 ? phs : [{ ...ph }]}\n ListboxProps={{ \"data-woi\": \"ph-list\" }}\n renderInput={(params) => (\n \n )}\n />\n );\n};\n\nSelectPh.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n phs: state.global.phs,\n});\n\nexport default connect(mapStateToProps)(SelectPh);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//UI Components\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport TextField from \"@material-ui/core/TextField\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n moisture: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n label: PropTypes.string.isRequired,\n width: PropTypes.string,\n errors: PropTypes.array.isRequired,\n name: PropTypes.string.isRequired,\n\n //Provided props\n moistures: PropTypes.array, // Provided by Redux\n};\n\nconst SelectMoisture = ({\n moisture,\n onChange,\n moistures = [],\n label,\n disabled,\n errors: errList,\n name,\n width,\n}) => {\n const errors = errList.filter((item) => item.field === name);\n const { field, message } = errors.length > 0 ? errors[0] : {};\n const [open, setOpen] = useState(false);\n\n const onOpen = () => {\n setOpen(true);\n };\n\n const onClose = () => {\n setOpen(false);\n };\n\n return (\n }\n style={{\n width: width || \"115px\",\n }}\n onChange={onChange}\n onOpen={onOpen}\n onClose={onClose}\n freeSolo\n size='small'\n forcePopupIcon={open || (moisture && moisture.id) ? false : true}\n popupIcon={}\n value={moisture}\n getOptionLabel={(option) => (option.name ? option.name : \"\")}\n options={moistures.length > 0 ? moistures : [{ ...moisture }]}\n ListboxProps={{ \"data-woi\": \"moisture-list\" }}\n renderInput={(params) => (\n \n )}\n />\n );\n};\n\nSelectMoisture.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n moistures: state.global.moistures,\n});\n\nexport default connect(mapStateToProps)(SelectMoisture);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//UI Components\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport TextField from \"@material-ui/core/TextField\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n drainage: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n label: PropTypes.string.isRequired,\n width: PropTypes.string,\n errors: PropTypes.array.isRequired,\n name: PropTypes.string.isRequired,\n\n //Provided props\n drainages: PropTypes.array, // Provided by Redux\n};\n\nconst SelectDrainage = ({\n drainage,\n onChange,\n drainages = [],\n label,\n disabled,\n errors: errList,\n name,\n width,\n}) => {\n const errors = errList.filter((item) => item.field === name);\n const { field, message } = errors.length > 0 ? errors[0] : {};\n const [open, setOpen] = useState(false);\n\n const onOpen = () => {\n setOpen(true);\n };\n\n const onClose = () => {\n setOpen(false);\n };\n\n return (\n }\n style={{\n width: width || \"130px\",\n }}\n onChange={onChange}\n onOpen={onOpen}\n onClose={onClose}\n freeSolo\n size='small'\n forcePopupIcon={open || (drainage && drainage.id) ? false : true}\n popupIcon={}\n value={drainage}\n getOptionLabel={(option) => (option.name ? option.name : \"\")}\n options={drainages.length > 0 ? drainages : [{ ...drainage }]}\n ListboxProps={{ \"data-woi\": \"drainage-list\" }}\n renderInput={(params) => (\n \n )}\n />\n );\n};\n\nSelectDrainage.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n drainages: state.global.drainages,\n});\n\nexport default connect(mapStateToProps)(SelectDrainage);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//UI Components\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport TextField from \"@material-ui/core/TextField\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n soilType: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n label: PropTypes.string.isRequired,\n width: PropTypes.string,\n errors: PropTypes.array.isRequired,\n name: PropTypes.string.isRequired,\n\n //Provided props\n soilTypes: PropTypes.array, // Provided by Redux\n};\n\nconst SelectSoilType = ({\n soilType,\n onChange,\n soilTypes = [],\n label,\n disabled,\n errors: errList,\n name,\n width,\n}) => {\n const errors = errList.filter((item) => item.field === name);\n const { field, message } = errors.length > 0 ? errors[0] : {};\n const [open, setOpen] = useState(false);\n\n const onOpen = () => {\n setOpen(true);\n };\n\n const onClose = () => {\n setOpen(false);\n };\n\n return (\n }\n style={{\n width: width || \"140px\",\n }}\n onChange={onChange}\n onOpen={onOpen}\n onClose={onClose}\n freeSolo\n size='small'\n forcePopupIcon={open || (soilType && soilType.id) ? false : true}\n popupIcon={}\n value={soilType}\n getOptionLabel={(option) => (option.name ? option.name : \"\")}\n options={soilTypes.length > 0 ? soilTypes : [{ ...soilType }]}\n ListboxProps={{ \"data-woi\": \"soil-type-list\" }}\n renderInput={(params) => (\n \n )}\n />\n );\n};\n\nSelectSoilType.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n soilTypes: state.global.soilTypes,\n});\n\nexport default connect(mapStateToProps)(SelectSoilType);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n onConfirm: PropTypes.func,\n onCancel: PropTypes.func,\n};\n\nconst ConfirmSoilType = ({ open, onConfirm, onCancel }) => {\n const { t } = useTranslation();\n\n const handleConfirm = () => {\n onConfirm();\n };\n\n const handleCancel = () => {\n onCancel();\n };\n\n return (\n \n \n {t(\"land.blocsperi.soil-type-modal.title\")}\n \n \n {t(\"land.blocsperi.soil-type-modal.description\")}\n \n \n \n \n \n \n );\n};\n\nConfirmSoilType.propTypes = propsDefinition;\n\nexport default ConfirmSoilType;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n onConfirm: PropTypes.func,\n onCancel: PropTypes.func,\n};\n\nconst ConfirmDevalidation = ({ open, onConfirm, onCancel }) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"land.blocsperi.devalidation-modal.title\")}\n \n \n {t(\"land.blocsperi.devalidation-modal.description\")}\n \n \n \n \n \n \n );\n};\n\nConfirmDevalidation.propTypes = propsDefinition;\n\nexport default ConfirmDevalidation;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n ADD_BLOCPERI,\n DELETE_BLOCPERI,\n UPDATE_BLOCPERI,\n UPDATE_BLOC,\n} from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\n\n//Custom Components\nimport SelectBloc from \"./SelectBloc\";\nimport SelectPh from \"./SelectPh\";\nimport SelectMoisture from \"./SelectMoisture\";\nimport SelectDrainage from \"./SelectDrainage\";\nimport DeleteConfirmation from \"../../DeleteConfirmation\";\nimport SelectSoilType from \"./SelectSoilType\";\nimport ConfirmSoilType from \"./ConfirmSoilType\";\nimport ConfirmDevalidation from \"./ConfirmDevalidation\";\nimport FieldWithTextAdornment from \"../../FieldWithTextAdornment\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\n//UI Components\nimport Grid from \"@material-ui/core/Grid\";\nimport Button from \"@material-ui/core/Button\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport Box from \"@material-ui/core/Box\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Typography from \"@material-ui/core/Typography\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport AddCircleIcon from \"@material-ui/icons/AddCircle\";\nimport Portal from \"@material-ui/core/Portal\";\nimport DeleteForever from \"@material-ui/icons/DeleteForever\";\n\nconst styles = (theme) => ({\n root: {\n marginBottom: theme.spacing(1),\n },\n checkboxes: {\n minWidth: \"140px\",\n paddingRight: \"9px\",\n },\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n blocperi: PropTypes.object,\n classes: PropTypes.object,\n index: PropTypes.number,\n\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n addBlocperi: PropTypes.func, // Provided by Redux\n deleteBlocperi: PropTypes.func, // Provided by Redux\n updateBlocperi: PropTypes.func, // Provided by Redux\n updateBloc: PropTypes.func, // Provided by Redux\n blocs: PropTypes.array, // Provided by Redux\n periodId: PropTypes.string, // Provided by Redux\n};\n\nconst BlocperiRow = ({\n blocperi = null,\n classes,\n farmId,\n periodId,\n index,\n addBlocperi,\n deleteBlocperi,\n updateBlocperi,\n updateBloc,\n blocs,\n}) => {\n const [id, setId] = useState(null);\n const [bloc, setBloc] = useState({});\n const [soilType, setSoilType] = useState({});\n const [orga, setOrga] = useState(0);\n const [ph, setPh] = useState({});\n const [drainage, setDrainage] = useState({});\n const [moisture, setMoisture] = useState({});\n const [status, setStatus] = useState(0);\n const [notDeletable, setNotDeletable] = useState(false);\n const [loading] = useState(false);\n const [changed, setChanged] = useState(false);\n const [errors, setErrors] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [lock, setLock] = useState(0);\n const [confirmSoilTypeOpen, setConfirmSoilTypeOpen] = useState(false);\n const [confirmDevalidationOpen, setConfirmDevalidationOpen] = useState(false);\n const { t } = useTranslation();\n\n const permissions = new Permissions(null, lock);\n\n useEffect(() => {\n if (blocperi) {\n setId(blocperi.id);\n setBloc(blocperi.bloc);\n setSoilType(blocperi.bloc.soilType);\n setOrga(blocperi.orga);\n setPh(blocperi.ph);\n setDrainage(blocperi.drainage);\n setMoisture(blocperi.moisture);\n setStatus(blocperi.status);\n setNotDeletable(!blocperi.flagDelete);\n setLock(blocperi.lock);\n }\n }, [blocperi]);\n\n const checkValidate = useCallback(() => {\n if (!bloc || !bloc.id) {\n setErrors((errors) => [\n ...errors,\n { field: \"bloc\", message: t(\"land.blocsperi.errors.bloc-required\") },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"bloc\")]);\n }\n }, [bloc, t]);\n\n useEffect(() => {\n if (changed) {\n checkValidate();\n }\n }, [checkValidate, changed, bloc]);\n\n const handleCreate = () => {\n if (errors.length === 0) {\n const reqBody = {\n blocperi: {\n bloc: {\n id: bloc.id,\n soilType,\n },\n period: {\n id: periodId,\n },\n orga,\n ph,\n drainage,\n moisture,\n },\n };\n\n const createBlocperi = agent.Farms.Blocsperi.create(farmId, reqBody).then((res) => {\n addBlocperi(res.body.blocperi);\n let blocIndex;\n blocs.forEach((bloc, index) => {\n if (bloc.id === res.body.blocperi.bloc.id) {\n blocIndex = index;\n }\n });\n updateBloc(res.body.blocperi.bloc, blocIndex);\n setChanged(false);\n setId(null);\n setBloc({});\n setOrga(0);\n setPh({});\n setDrainage({});\n setMoisture({});\n setSoilType({});\n setStatus(0);\n });\n\n toast.promise(createBlocperi, {\n loading: t(\"global.loading\"),\n success: t(\"land.blocsperi.notifications.blocperi-added\"),\n error: t(\"land.blocsperi.notifications.error\"),\n });\n }\n };\n\n const handleUpdate = useCallback(() => {\n const validate = (bloc) => {\n let error = false;\n\n if (!bloc || !bloc.id) {\n error = true;\n }\n\n return error;\n };\n\n if (!validate(bloc)) {\n const reqBody = {\n blocperi: {\n bloc: {\n id: bloc.id,\n soilType,\n },\n orga,\n ph,\n drainage,\n moisture,\n },\n };\n\n const changeBlocperi = agent.Farms.Blocsperi.update(farmId, id, reqBody).then(\n (res) => {\n updateBlocperi(res.body.blocperi, index);\n setChanged(false);\n }\n );\n\n toast.promise(changeBlocperi, {\n loading: t(\"global.loading\"),\n success: t(\"land.blocsperi.notifications.blocperi-saved\"),\n error: t(\"land.blocsperi.notifications.error\"),\n });\n }\n }, [\n farmId,\n id,\n index,\n updateBlocperi,\n orga,\n ph,\n drainage,\n moisture,\n soilType,\n t,\n bloc,\n ]);\n\n useEffect(() => {\n if (changed && id && status === 0) {\n const timer = setTimeout(() => handleUpdate(), 700);\n return () => clearTimeout(timer);\n } else if (changed && id && status === 3) {\n const timer = setTimeout(() => setConfirmDevalidationOpen(true), 900);\n return () => clearTimeout(timer);\n }\n }, [handleUpdate, changed, id, orga, ph, drainage, moisture, status]);\n\n const handleDeleteConfirm = () => {\n setDeleteOpen(true);\n };\n\n const handleDelete = () => {\n const removeBlocperi = agent.Farms.Blocsperi.delete(farmId, id).then(() => {\n deleteBlocperi(index);\n });\n\n toast.promise(removeBlocperi, {\n loading: t(\"global.loading\"),\n success: t(\"land.blocsperi.notifications.blocperi-deleted\"),\n error: t(\"land.blocsperi.notifications.error\"),\n });\n };\n\n const actionType =\n !id && permissions.canEdit() ? (\n \n \n {t(\"land.blocsperi.add-button-label\")}\n \n \n ) : permissions.canEdit() ? (\n {t(\"land.blocsperi.not-deletable-message\")}\n ) : (\n \"\"\n )\n }\n >\n
\n \n \n \n
\n \n ) : null;\n\n return (\n \n \n {\n if (bloc && bloc.id) {\n setBloc(bloc);\n if (bloc.soilType.id) {\n setSoilType(bloc.soilType);\n }\n } else {\n setBloc({});\n }\n setChanged(true);\n }}\n bloc={bloc}\n label={t(\"land.blocsperi.bloc\")}\n errors={errors}\n />\n \n \n {id && status === 0 ? (\n \n
\n \n \n \n
\n
\n ) : id && status === 3 ? (\n \n
\n \n \n \n
\n
\n ) : !id && status === 0 ? (\n \n
\n \n \n \n
\n
\n ) : (\n \"\"\n )}\n
\n \n {\n setOrga(e.target.value);\n setChanged(true);\n }}\n error={errors.filter((item) => item.field === \"orga\").length > 0}\n helperText={\n errors.filter((item) => item.field === \"orga\").length > 0\n ? errors.filter((item) => item.field === \"orga\")[0].message\n : \"\"\n }\n onFocus={(event) => event.target.select()}\n InputProps={{\n inputProps: { min: 0, max: 100 },\n endAdornment: (\n \n %\n \n ),\n }}\n InputLabelProps={{\n shrink: true,\n }}\n />\n \n \n {\n setChanged(true);\n setPh(ph);\n }}\n ph={ph}\n label={t(\"land.blocsperi.ph\")}\n errors={errors}\n width='150px'\n />\n \n \n {\n setChanged(true);\n setMoisture(moisture);\n }}\n moisture={moisture}\n label={t(\"land.blocsperi.moisture\")}\n errors={errors}\n width='125px'\n />\n \n \n {\n setChanged(true);\n setDrainage(drainage);\n }}\n drainage={drainage}\n label={t(\"land.blocsperi.drainage\")}\n errors={errors}\n width='125px'\n />\n \n \n \n
\n {\n setSoilType(soilType);\n setConfirmSoilTypeOpen(true);\n }}\n soilType={soilType}\n label={t(\"land.blocs.soil-type\")}\n errors={errors}\n width='180px'\n />\n
\n
\n
\n {actionType}\n \n {\n setDeleteOpen(false);\n }}\n onConfirm={() => {\n setDeleteOpen(false);\n handleDelete();\n }}\n />\n \n \n {\n setConfirmSoilTypeOpen(false);\n setSoilType({});\n }}\n onConfirm={() => {\n setConfirmSoilTypeOpen(false);\n setChanged(true);\n }}\n />\n \n \n {\n setConfirmDevalidationOpen(false);\n setSoilType(blocperi.bloc.soilType);\n setOrga(blocperi.orga);\n setPh(blocperi.ph);\n setDrainage(blocperi.drainage);\n setMoisture(blocperi.moisture);\n setChanged(false);\n }}\n onConfirm={() => {\n setConfirmDevalidationOpen(false);\n handleUpdate();\n }}\n />\n \n
\n );\n};\n\nBlocperiRow.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n farmId: state.farm.farm.id,\n periodId: state.farm.selectedPeriod,\n blocs: state.land.blocs,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n addBlocperi: (payload) => dispatch({ type: ADD_BLOCPERI, payload }),\n updateBlocperi: (payload, index) => dispatch({ type: UPDATE_BLOCPERI, payload, index }),\n deleteBlocperi: (index) => dispatch({ type: DELETE_BLOCPERI, index }),\n updateBloc: (payload, index) => dispatch({ type: UPDATE_BLOC, payload, index }),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(BlocperiRow));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n PHS_LOADED,\n MOISTURES_LOADED,\n DRAINAGES_LOADED,\n FREQUENCIES_LOADED,\n} from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\n\n//Custom Components\nimport BlocperiRow from \"./BlocperiRow\";\n\nconst styles = (theme) => ({\n root: {\n padding: theme.spacing(1),\n },\n});\n\nconst propsDefinition = {\n //Provided props\n blocsperi: PropTypes.array, // Provided by Redux\n classes: PropTypes.object, // Provided by Material Ui Style\n phsLoad: PropTypes.func, // Provided by Redux\n moisturesLoad: PropTypes.func, // Provided by Redux\n drainagesLoad: PropTypes.func, // Provided by Redux\n frequenciesLoad: PropTypes.func, // Provided by Redux\n lock: PropTypes.number, // Provided by Redux\n};\n\nconst BlocsperiSection = ({\n blocsperi,\n classes,\n phsLoad,\n moisturesLoad,\n drainagesLoad,\n frequenciesLoad,\n lock,\n}) => {\n const permissions = new Permissions(null, lock);\n\n useEffect(() => {\n const loadPhs = async () => {\n const { body, error } = await agent.Phs.get();\n if (!error) {\n phsLoad(body.ph);\n }\n };\n loadPhs();\n\n const loadMoistures = async () => {\n const { body, error } = await agent.Moistures.get();\n if (!error) {\n moisturesLoad(body.moistures);\n }\n };\n loadMoistures();\n\n const loadDrainages = async () => {\n const { body, error } = await agent.Drainages.get();\n if (!error) {\n drainagesLoad(body.drainages);\n }\n };\n loadDrainages();\n\n const loadFrequencies = async () => {\n const { body, error } = await agent.Frequencies.get();\n if (!error) {\n frequenciesLoad(body.frequencies);\n }\n };\n loadFrequencies();\n }, [phsLoad, moisturesLoad, drainagesLoad, frequenciesLoad]);\n\n const blocperiList =\n blocsperi.length > 0\n ? blocsperi.map((blocperi, index) => (\n \n ))\n : \"\";\n\n return (\n
\n
\n {blocperiList}\n {permissions.canEdit() && }\n
\n
\n );\n};\n\nBlocsperiSection.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n blocsperi: state.land.blocsperi,\n lock: state.farm.lock.status,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n phsLoad: (payload) => dispatch({ type: PHS_LOADED, payload }),\n moisturesLoad: (payload) => dispatch({ type: MOISTURES_LOADED, payload }),\n drainagesLoad: (payload) => dispatch({ type: DRAINAGES_LOADED, payload }),\n frequenciesLoad: (payload) => dispatch({ type: FREQUENCIES_LOADED, payload }),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(BlocsperiSection));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//UI Components\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport TextField from \"@material-ui/core/TextField\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n crop: PropTypes.object,\n onChange: PropTypes.func,\n disabled: PropTypes.bool,\n label: PropTypes.string.isRequired,\n width: PropTypes.string,\n errors: PropTypes.array.isRequired,\n name: PropTypes.string.isRequired,\n\n //Provided props\n crops: PropTypes.array, // Provided by Redux\n};\n\nconst SelectCrop = (props) => {\n const {\n crop,\n onChange,\n crops = [],\n label,\n disabled,\n errors: errList,\n name,\n width,\n } = props;\n const errors = errList.filter((item) => item.field === name);\n const { field, message } = errors.length > 0 ? errors[0] : {};\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState(\"\");\n\n useEffect(() => {\n if (crop === null || !crop.id) {\n setValue(\"\");\n }\n }, [crop]);\n\n const onOpen = () => {\n setOpen(true);\n };\n\n const onClose = () => {\n setOpen(false);\n };\n\n return (\n }\n style={{\n width: width || \"250px\",\n }}\n onChange={onChange}\n onOpen={onOpen}\n onClose={onClose}\n disabled={disabled}\n freeSolo\n size='small'\n forcePopupIcon={open || (crop && crop.id) ? false : true}\n popupIcon={}\n onBlur={() => {\n if (crop === null || !crop.id) {\n setValue(\"\");\n onChange(null, null);\n }\n }}\n onInputChange={(e, d) => {\n if (d) {\n setValue(d);\n }\n }}\n inputValue={crop === null || !crop.id ? value : crop.name}\n value={crop}\n getOptionLabel={(option) => (option.name ? option.name : \"\")}\n options={crops.length > 0 ? crops : [{ ...crop }]}\n ListboxProps={{ \"data-woi\": \"crop-list\" }}\n renderInput={(params) => (\n \n )}\n />\n );\n};\n\nSelectCrop.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n crops: state.global.crops,\n});\n\nexport default connect(mapStateToProps)(SelectCrop);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//UI Components\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport TextField from \"@material-ui/core/TextField\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n blocperi: PropTypes.object,\n onChange: PropTypes.func,\n disabled: PropTypes.bool,\n label: PropTypes.string.isRequired,\n width: PropTypes.string,\n errors: PropTypes.array.isRequired,\n name: PropTypes.string.isRequired,\n\n //Provided props\n blocsperi: PropTypes.array, // Provided by Redux\n};\n\nconst SelectBlocperi = (props) => {\n const {\n blocperi,\n onChange,\n blocsperi = [],\n disabled,\n label,\n errors: errList,\n name,\n width,\n } = props;\n const errors = errList.filter((item) => item.field === name);\n const { field, message } = errors.length > 0 ? errors[0] : {};\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState(\"\");\n\n useEffect(() => {\n if (blocperi === null || !blocperi.id) {\n setValue(\"\");\n }\n }, [blocperi]);\n\n const onOpen = () => {\n setOpen(true);\n };\n\n const onClose = () => {\n setOpen(false);\n };\n\n return (\n }\n style={{\n width: width || \"230px\",\n }}\n disabled={disabled}\n onChange={onChange}\n onOpen={onOpen}\n onClose={onClose}\n freeSolo\n size='small'\n onBlur={() => {\n if (blocperi === null || !blocperi.id) {\n setValue(\"\");\n onChange(null, null);\n }\n }}\n onInputChange={(e, d) => {\n if (d) {\n setValue(d);\n }\n }}\n inputValue={blocperi === null || !blocperi.id ? value : blocperi.bloc.name}\n forcePopupIcon={open || (blocperi && blocperi.id) ? false : true}\n popupIcon={}\n value={blocperi}\n getOptionLabel={(option) =>\n option.bloc && option.bloc.name ? option.bloc.name : \"\"\n }\n options={blocsperi.length > 0 ? blocsperi : [{ ...blocsperi }]}\n ListboxProps={{ \"data-woi\": \"bloc-list\" }}\n renderInput={(params) => (\n \n )}\n />\n );\n};\n\nSelectBlocperi.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n blocsperi: state.land.blocsperi,\n});\n\nexport default connect(mapStateToProps)(SelectBlocperi);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n onConfirm: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n};\n\nconst AdminDeleteConfirmation = ({ open, onConfirm, onCancel }) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"global.delete-modal.title\")}\n \n \n \n {t(\"global.delete-modal.admin-description\")}\n \n \n \n \n \n \n \n );\n};\n\nAdminDeleteConfirmation.propTypes = propsDefinition;\n\nexport default AdminDeleteConfirmation;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n onCancel: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n loading: PropTypes.bool,\n};\n\nconst ConfirmBlocperi = ({ onCancel, onConfirm, open, loading }) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"land.paddocks.confirm-modal.title\")}\n \n \n {t(\"land.paddocks.confirm-modal.description\")}\n \n \n \n {t(\"land.paddocks.confirm-modal.cancel-button-label\")}\n \n \n \n \n );\n};\n\nConfirmBlocperi.propTypes = propsDefinition;\n\nexport default ConfirmBlocperi;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n onCancel: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n loading: PropTypes.bool,\n};\n\nconst ConfirmCrop = ({ onCancel, onConfirm, open, loading }) => {\n const { t } = useTranslation();\n\n const handleConfirm = () => {\n onConfirm();\n };\n\n const handleCancel = () => {\n onCancel();\n };\n\n return (\n \n \n {t(\"land.paddocks.confirm-crop-modal.title\")}\n \n \n {t(\"land.paddocks.confirm-crop-modal.description\")}\n \n \n \n {t(\"land.paddocks.confirm-crop-modal.cancel-button-label\")}\n \n \n \n \n );\n};\n\nConfirmCrop.propTypes = propsDefinition;\n\nexport default ConfirmCrop;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n ADD_PADDOCK,\n UPDATE_PADDOCK,\n DELETE_PADDOCK\n} from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\nimport profiles from \"../../../constants/profiles\";\n\n//Custom Components\nimport SelectCrop from \"./SelectCrop\";\nimport SelectBlocperi from \"./SelectBlocperi\";\nimport AdminDeleteConfirmation from \"../../AdminDeleteConfirmation\";\nimport BlankIcon from \"../../BlankIcon\";\nimport DeleteConfirmation from \"../../DeleteConfirmation\";\nimport ConfirmBlocperi from \"./ConfirmBlocperi\";\nimport ConfirmCrop from \"./ConfirmCrop\";\nimport FieldWithTextAdornment from \"../../FieldWithTextAdornment\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\n//UI Components\nimport Portal from \"@material-ui/core/Portal\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Box from \"@material-ui/core/Box\";\nimport Button from \"@material-ui/core/Button\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Radio from \"@material-ui/core/Radio\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport DeleteForever from \"@material-ui/icons/DeleteForever\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\n\nconst styles = theme => ({\n root: {\n marginBottom: theme.spacing(1)\n },\n checkboxes: {\n paddingRight: \"16px\",\n backgroundColor: \"inherit\"\n },\n radioGroup: {\n backgroundColor: \"inherit\"\n }\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n paddock: PropTypes.object,\n index: PropTypes.number,\n\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n addPaddock: PropTypes.func, // Provided by Redux\n updatePaddock: PropTypes.func, // Provided by Redux\n deletePaddock: PropTypes.func, // Provided by Redux\n classes: PropTypes.object // Provided by Material Ui Style\n};\n\nconst PaddockRow = ({\n paddock = null,\n index,\n farmId,\n addPaddock,\n updatePaddock,\n deletePaddock,\n classes\n}) => {\n const [id, setId] = useState(null);\n const [paddockArea, setPaddockArea] = useState(0);\n const [paddockYield, setPaddockYield] = useState(\"\");\n const [crop, setCrop] = useState({});\n const [blocperi, setBlocperi] = useState(null);\n const [notDeletable, setNotDeletable] = useState(false);\n const [status, setStatus] = useState(false);\n const [loading] = useState(false);\n const [changed, setChanged] = useState(false);\n const [errors, setErrors] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [adminDeleteOpen, setAdminDeleteOpen] = useState(false);\n const [isOrganic, setIsOrganic] = useState(false);\n const [isSecondCrop, setIsSecondCrop] = useState(false);\n const [isAccurateYield, setIsAccurateYield] = useState(\"\");\n const [lock, setLock] = useState(0);\n const [blocperiConfirmOpen, setBlocperiConfirmOpen] = useState(false);\n const [cropConfirmOpen, setCropConfirmOpen] = useState(false);\n\n const { t } = useTranslation();\n\n const permissions = new Permissions(status ? 3 : 0, lock, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR\n ]);\n\n useEffect(() => {\n if (paddock) {\n setId(paddock.id);\n setPaddockArea(paddock.area);\n setPaddockYield(paddock.yield);\n setCrop(paddock.crop);\n setBlocperi(paddock.blocperi);\n setIsOrganic(paddock.isOrganic);\n setStatus(paddock.status);\n setNotDeletable(!paddock.flagDelete);\n setIsAccurateYield(paddock.isAccurateYield);\n setLock(paddock.lock);\n setIsSecondCrop(paddock.isSecondCrop);\n }\n }, [paddock]);\n\n const checkValidate = useCallback(() => {\n let valid = true;\n if (blocperi === null || (blocperi && !blocperi.id)) {\n setErrors(errors => [\n ...errors,\n { field: \"blocperi\", message: t(\"land.paddocks.errors.bloc-required\") }\n ]);\n valid = false;\n } else {\n setErrors(errors => [\n ...errors.filter(item => item.field !== \"blocperi\")\n ]);\n }\n if (!crop || !crop.id) {\n setErrors(errors => [\n ...errors,\n { field: \"crop\", message: t(\"land.paddocks.errors.crop-required\") }\n ]);\n valid = false;\n } else {\n setErrors(errors => [...errors.filter(item => item.field !== \"crop\")]);\n }\n if (!(paddockArea > 0)) {\n setErrors(errors => [\n ...errors,\n {\n field: \"paddockArea\",\n message: t(\"land.paddocks.errors.area-required\")\n }\n ]);\n valid = false;\n } else {\n setErrors(errors => [\n ...errors.filter(item => item.field !== \"paddockArea\")\n ]);\n }\n if (!(paddockYield >= 0)) {\n setErrors(errors => [\n ...errors,\n {\n field: \"paddockYield\",\n message: t(\"land.paddocks.errors.yield-required\")\n }\n ]);\n valid = false;\n } else {\n setErrors(errors => [\n ...errors.filter(\n item => item.message !== t(\"land.paddocks.errors.yield-required\")\n )\n ]);\n }\n if (isAccurateYield === \"\") {\n setErrors(errors => [\n ...errors,\n {\n field: \"paddockYield\",\n message: t(\"land.paddocks.errors.yield-accuracy\")\n }\n ]);\n valid = false;\n } else {\n setErrors(errors => [\n ...errors.filter(\n item => item.message !== t(\"land.paddocks.errors.yield-accuracy\")\n )\n ]);\n }\n return valid;\n }, [blocperi, crop, paddockArea, paddockYield, isAccurateYield, t]);\n\n useEffect(() => {\n if (changed) {\n checkValidate();\n }\n }, [\n checkValidate,\n changed,\n blocperi,\n crop,\n paddockArea,\n paddockYield,\n isAccurateYield\n ]);\n\n const handleCreate = () => {\n if (checkValidate()) {\n const reqBody = {\n paddock: {\n blocperi,\n crop,\n area: paddockArea,\n yield: paddockYield,\n isOrganic,\n isAccurateYield,\n isSecondCrop\n }\n };\n\n const createPaddock = agent.Farms.Paddocks.create(farmId, reqBody).then(\n res => {\n setChanged(false);\n setId(null);\n setPaddockArea(0);\n setPaddockYield(\"\");\n setCrop({});\n setBlocperi(null);\n setNotDeletable(0);\n setIsAccurateYield(\"\");\n setIsSecondCrop(false);\n addPaddock(res.body.paddock);\n }\n );\n\n toast.promise(createPaddock, {\n loading: t(\"global.loading\"),\n success: t(\"land.paddocks.notifications.paddock-added\"),\n error: t(\"land.paddocks.notifications.error\")\n });\n }\n };\n\n const handleUpdate = useCallback(() => {\n const validate = (\n blocperi,\n crop,\n paddockArea,\n paddockYield,\n isAccurateYield\n ) => {\n let error = false;\n if (!blocperi || !blocperi.id) {\n error = true;\n }\n if (!crop || !crop.id) {\n error = true;\n }\n if (!(paddockArea > 0)) {\n error = true;\n }\n if (!(paddockYield >= 0)) {\n error = true;\n }\n if (isAccurateYield === \"\") {\n error = true;\n }\n\n return error;\n };\n\n if (!validate(blocperi, crop, paddockArea, paddockYield)) {\n const reqBody = {\n paddock: {\n blocperi,\n crop,\n area: paddockArea,\n yield: paddockYield,\n isOrganic,\n isAccurateYield,\n isSecondCrop\n }\n };\n\n const changePaddock = agent.Farms.Paddocks.update(\n farmId,\n id,\n reqBody\n ).then(res => {\n updatePaddock(res.body.paddock, index);\n setChanged(false);\n });\n\n toast.promise(changePaddock, {\n loading: t(\"global.loading\"),\n success: t(\"land.paddocks.notifications.paddock-saved\"),\n error: t(\"land.paddocks.notifications.error\")\n });\n }\n }, [\n crop,\n paddockArea,\n paddockYield,\n farmId,\n id,\n index,\n updatePaddock,\n isOrganic,\n isAccurateYield,\n isSecondCrop,\n t,\n blocperi\n ]);\n\n useEffect(() => {\n if (changed && id) {\n const timer = setTimeout(() => handleUpdate(), 700);\n return () => clearTimeout(timer);\n }\n }, [\n handleUpdate,\n changed,\n id,\n crop,\n paddockArea,\n paddockYield,\n isOrganic,\n isAccurateYield,\n isSecondCrop\n ]);\n\n const handleDeleteConfirm = () => {\n if (permissions.isAdmin() && notDeletable) {\n setAdminDeleteOpen(true);\n } else {\n setDeleteOpen(true);\n }\n };\n\n const handleDelete = () => {\n if (permissions.isAdmin() && notDeletable) {\n const adminDelete = agent.Farms.Paddocks.adminDelete(farmId, id).then(\n () => {\n deletePaddock(index);\n }\n );\n\n toast.promise(adminDelete, {\n loading: t(\"global.loading\"),\n success: t(\"land.paddocks.notifications.paddock-deleted\"),\n error: t(\"land.paddocks.notifications.error\")\n });\n } else {\n const removePaddock = agent.Farms.Paddocks.delete(farmId, id).then(() => {\n deletePaddock(index);\n });\n\n toast.promise(removePaddock, {\n loading: t(\"global.loading\"),\n success: t(\"land.paddocks.notifications.paddock-deleted\"),\n error: t(\"land.paddocks.notifications.error\")\n });\n }\n };\n\n const actionType =\n !id && permissions.canEdit() ? (\n \n \n {t(\"land.paddocks.add-button-label\")}\n \n \n ) : (permissions.canView() || status !== 3) && permissions.canEdit() ? (\n {t(\"land.paddocks.not-deletable-message\")}\n ) : (\n \"\"\n )\n }\n >\n
\n \n \n \n
\n \n ) : null;\n\n return (\n \n \n {\n if (!id) {\n setBlocperi(blocperi);\n setChanged(true);\n } else {\n setBlocperi(blocperi);\n setBlocperiConfirmOpen(true);\n }\n }}\n blocperi={blocperi}\n width=\"140px\"\n label={t(\"land.paddocks.bloc\")}\n errors={errors}\n />\n \n \n {\n if (!id) {\n setCrop(crop);\n setChanged(true);\n } else {\n setCrop(crop);\n setCropConfirmOpen(true);\n }\n }}\n crop={crop}\n width=\"180px\"\n label={t(\"land.paddocks.crop\")}\n errors={errors}\n />\n \n \n \n {\n setIsSecondCrop(data);\n setChanged(true);\n }}\n />\n {t(\"land.paddocks.crop-second\")}\n \n \n \n {permissions.canView() && status === 0 ? (\n \n
\n \n \n \n
\n
\n ) : status === 3 ? (\n \n
\n \n \n \n
\n
\n ) : (\n
\n \n \n \n
\n )}\n
\n \n \n {\n setIsOrganic(data);\n setChanged(true);\n }}\n />\n {t(\"land.paddocks.organic\")}\n \n \n \n {\n setPaddockArea(e.target.value);\n setChanged(true);\n }}\n error={errors.filter(item => item.field === \"paddockArea\").length > 0}\n helperText={\n errors.filter(item => item.field === \"paddockArea\").length > 0\n ? errors.filter(item => item.field === \"paddockArea\")[0].message\n : \"\"\n }\n onFocus={event => event.target.select()}\n InputProps={{\n inputProps: { min: 0 },\n endAdornment: (\n \n ha\n \n )\n }}\n InputLabelProps={{\n shrink: true\n }}\n />\n \n \n {\n setPaddockYield(e.target.value);\n setChanged(true);\n }}\n error={\n errors.filter(item => item.field === \"paddockYield\").length > 0\n }\n helperText={\n errors.filter(item => item.field === \"paddockYield\").length > 0\n ? errors.filter(item => item.field === \"paddockYield\")[0].message\n : \"\"\n }\n onFocus={event => event.target.select()}\n InputProps={{\n inputProps: { min: 0, style: { width: \"40px\" } },\n endAdornment: (\n \n \n T/ha\n \n item.field === \"paddockYield\")\n .length > 0\n }\n disabled={!permissions.canEdit()}\n >\n {\n setIsAccurateYield(e.target.value);\n setChanged(true);\n }}\n value={isAccurateYield.toString()}\n >\n 0\n ? { color: customTheme.palette.error.main }\n : null\n }\n control={\n 0\n ? { color: customTheme.palette.error.main }\n : null\n }\n />\n }\n label={\n \n {t(\"land.paddocks.is-accurate-estimated\")}\n \n }\n />\n 0\n ? {\n color: customTheme.palette.error.main,\n marginRight: 0\n }\n : { marginRight: 0 }\n }\n control={\n 0\n ? { color: customTheme.palette.error.main }\n : null\n }\n />\n }\n label={\n \n {t(\"land.paddocks.is-accurate-real\")}\n \n }\n />\n \n \n \n )\n }}\n InputLabelProps={{\n shrink: true\n }}\n />\n \n {actionType}\n \n {\n setDeleteOpen(false);\n }}\n onConfirm={() => {\n setDeleteOpen(false);\n handleDelete();\n }}\n />\n \n \n {\n setAdminDeleteOpen(false);\n }}\n onConfirm={() => {\n setAdminDeleteOpen(false);\n handleDelete();\n }}\n />\n \n \n {\n setBlocperiConfirmOpen(false);\n setBlocperi(paddock.blocperi);\n }}\n onConfirm={() => {\n setBlocperiConfirmOpen(false);\n setChanged(true);\n }}\n />\n \n \n {\n setCropConfirmOpen(false);\n setCrop(paddock.crop);\n }}\n onConfirm={() => {\n setCropConfirmOpen(false);\n setChanged(true);\n }}\n />\n \n
\n );\n};\n\nPaddockRow.propTypes = propsDefinition;\n\nconst mapStateToProps = state => ({\n farmId: state.farm.farm.id,\n access: state.common.access\n});\n\nconst mapDispachToProps = dispatch => ({\n addPaddock: payload => dispatch({ type: ADD_PADDOCK, payload }),\n updatePaddock: (payload, index) =>\n dispatch({ type: UPDATE_PADDOCK, payload, index }),\n deletePaddock: index => dispatch({ type: DELETE_PADDOCK, index })\n});\n\nexport default connect(\n mapStateToProps,\n mapDispachToProps\n)(withStyles(styles)(PaddockRow));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom Components\nimport SelectCrop from \"./SelectCrop\";\nimport SelectBlocperi from \"./SelectBlocperi\";\nimport BlankIcon from \"../../BlankIcon\";\n\n//UI Components\nimport Grid from \"@material-ui/core/Grid\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Box from \"@material-ui/core/Box\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport { Tooltip } from \"@material-ui/core\";\n\nconst styles = (theme) => ({\n root: {\n marginBottom: theme.spacing(1),\n },\n checkboxes: {\n paddingRight: \"16px\",\n backgroundColor: \"inherit\",\n },\n radioGroup: {\n backgroundColor: \"inherit\",\n },\n notchedOutline: {\n borderWidth: \"0px\",\n },\n});\n\nconst propsDefinition = {\n //Provided props\n paddocks: PropTypes.array, // Provided by Redux\n classes: PropTypes.object, // Provided by Redux\n};\n\nconst PaddockRowTotalArea = ({ classes, paddocks }) => {\n const { t } = useTranslation();\n const [totalArea, setTotalArea] = useState(0);\n\n useEffect(() => {\n let total = 0;\n paddocks.forEach((item) => {\n if (!item.isSecondCrop) {\n total += item.area;\n }\n });\n setTotalArea(total);\n }, [paddocks]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n {t(\"land.paddocks.crop-second\")}\n \n \n \n \n \n \n \n \n \n \n {t(\"land.paddocks.organic\")}\n \n \n \n \n \n ha\n \n ),\n }}\n InputLabelProps={{\n shrink: true,\n }}\n />\n \n \n \n );\n};\n\nPaddockRowTotalArea.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n paddocks: state.land.paddocks,\n});\n\nexport default connect(mapStateToProps)(withStyles(styles)(PaddockRowTotalArea));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { CROPS_LOADED } from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\n\n//Custom Components\nimport PaddockRow from \"./PaddockRow\";\nimport PaddockRowTotalArea from \"./PaddockRowTotalArea\";\n\nconst styles = (theme) => ({\n root: {\n padding: theme.spacing(1),\n display: \"flex\",\n justifyContent: \"center\",\n },\n});\n\nconst propsDefinition = {\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n paddocks: PropTypes.array, // Provided by Redux\n classes: PropTypes.object, // Provided by Material Ui Style\n cropLoad: PropTypes.func, // Provided by Redux\n lock: PropTypes.number, // Provided by Redux\n};\n\nconst PaddocksSecion = ({ paddocks, classes, cropLoad, lock }) => {\n const permissions = new Permissions(null, lock);\n\n useEffect(() => {\n const getCrops = async () => {\n const { body, error } = await agent.Crops.get();\n if (!error) {\n cropLoad(body.crops);\n }\n };\n\n getCrops();\n }, [cropLoad]);\n\n const paddockList =\n paddocks && paddocks.length > 0\n ? paddocks.map((paddock, index) => (\n \n ))\n : \"\";\n\n return (\n
\n
\n {paddockList}\n {permissions.canEdit() && }\n \n
\n
\n );\n};\n\nPaddocksSecion.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n paddocks: state.land.paddocks,\n lock: state.farm.lock.status,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n cropLoad: (payload) => dispatch({ type: CROPS_LOADED, payload }),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(PaddocksSecion));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n LAND_LOADED,\n SET_LAND_LOADING,\n SET_LAND_PAGE,\n} from \"../../constants/actionTypes\";\n\n//API\nimport agent from \"../../agent\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom Components\nimport Header from \"./Header\";\nimport BlocsSection from \"./BlocsSection\";\nimport BlocsperiSection from \"./BlocsperiSection\";\nimport PaddocksSection from \"./PaddockSection\";\n\nconst styles = (theme) => ({\n root: {\n \"@global\": {\n \".MuiInputBase-root.Mui-disabled\": {\n color: theme.palette.text.primary,\n },\n },\n },\n});\n\nconst propsDefinition = {\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n onLoad: PropTypes.func, // Provided by Redux\n selectedLandPage: PropTypes.string, // Provided by Redux\n setLoading: PropTypes.func, // Provided by Redux\n loaded: PropTypes.bool, // Provided by Redux\n selectedPeriod: PropTypes.string, // Provided by Redux\n classes: PropTypes.object, // Provided by Material Ui Style\n setLandPage: PropTypes.func, // Provided by Redux\n};\n\nconst Land = ({\n onLoad,\n selectedLandPage,\n setLoading,\n loaded,\n selectedPeriod,\n farmId,\n classes,\n setLandPage,\n}) => {\n const loadLand = useCallback(\n (selectedPeriod) => {\n setLoading(false);\n const loadPaddocks = agent.Farms.Paddocks.get(farmId, selectedPeriod);\n const loadBlocsperi = agent.Farms.Blocsperi.get(farmId, selectedPeriod);\n const loadBlocs = agent.Farms.Blocs.get(farmId, selectedPeriod);\n onLoad(\n Promise.all([loadBlocs, loadBlocsperi, loadPaddocks]).then((values) => ({\n body: values.map((item) => (item ? item.body : null)),\n }))\n );\n },\n [setLoading, onLoad, farmId]\n );\n\n useEffect(() => {\n loadLand(selectedPeriod);\n }, [loadLand, selectedPeriod]);\n\n useEffect(() => {\n if (!selectedLandPage) {\n setLandPage(\"blocs\");\n }\n }, [setLandPage, selectedLandPage]);\n\n const page = (selectedLandPage) => {\n if (loaded) {\n switch (selectedLandPage) {\n case \"blocs\":\n return ;\n case \"blocsperi\":\n return ;\n case \"paddocks\":\n return ;\n default:\n return null;\n }\n }\n return null;\n };\n\n return (\n
\n
\n {page(selectedLandPage)}\n
\n );\n};\n\nLand.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n ...state.land,\n loaded: state.land.loaded,\n farmId: state.farm.farm ? state.farm.farm.id : null,\n selectedPeriod: state.farm.selectedPeriod,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onLoad: (payload) => dispatch({ type: LAND_LOADED, payload }),\n setLoading: (payload) => dispatch({ type: SET_LAND_LOADING, payload }),\n setLandPage: (payload) => dispatch({ type: SET_LAND_PAGE, payload }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Land));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { SELECTED_INPUT_TYPE } from \"../../constants/actionTypes\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n// API\nimport agent from \"../../agent\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//UI Components\nimport Paper from \"@material-ui/core/Paper\";\nimport Box from \"@material-ui/core/Box\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\n\nconst styles = theme => ({\n root: {\n marginBottom: \"8px\"\n },\n titleContainer: {\n marginBottom: \"24px\"\n },\n checkboxes: {\n marginLeft: \"30px\",\n paddingRight: \"10px\"\n },\n tab: {\n padding: \"8px 16px 6px 16px\",\n borderRadius: \"16px 16px 0px 0px\",\n borderColor: theme.palette.grey[500],\n backgroundColor: theme.palette.grey[300],\n cursor: \"pointer\",\n minWidth: \"140px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n \"&:hover\": {\n color: theme.palette.secondary.main,\n backgroundColor: theme.palette.grey[100]\n }\n },\n disabled: {\n backgroundColor: theme.palette.grey[500],\n \"&:hover\": {\n color: \"inherit\",\n backgroundColor: theme.palette.grey[500],\n cursor: \"default\"\n }\n },\n barStart: {\n width: theme.spacing(4),\n backgroundColor: \"inherit\"\n },\n barEnd: {\n width: \"100%\",\n backgroundColor: \"inherit\"\n },\n barStyle: {\n borderRadius: \"0px\",\n borderColor: theme.palette.grey[500],\n borderTop: 0,\n borderLeft: 0,\n borderRight: 0\n },\n active: {\n borderBottom: 0,\n color: theme.palette.secondary.main,\n backgroundColor: \"transparent\",\n cursor: \"default\",\n \"&:hover\": {\n color: theme.palette.secondary.main,\n backgroundColor: \"transparent\"\n }\n },\n add: {\n color: theme.palette.info.dark,\n backgroundColor: \"transparent\",\n \"&:hover\": {\n color: theme.palette.info.dark\n }\n },\n title: {\n display: \"flex\",\n justifyContent: \"center\"\n }\n});\n\nconst propsDefinition = {\n inputEstimated: PropTypes.number, //Provided props\n setInputEstimated: PropTypes.func, //Provided props\n farmId: PropTypes.string, // Provided by Redux\n selectedPeriod: PropTypes.string, // Provided by Redux\n classes: PropTypes.object, // Provided by Material Ui Style\n selectedInputType: PropTypes.string, // Provided by Redux\n setInputType: PropTypes.func // Provided by Redux\n};\n\nconst Header = ({\n classes,\n farmId,\n selectedPeriod,\n inputEstimated,\n setInputEstimated,\n selectedInputType,\n setInputType\n}) => {\n const { t } = useTranslation();\n\n const purchasesTypes = [\n {\n type: \"seed\",\n name: t(\"purchases.header.types.seed\")\n },\n {\n type: \"fertiliser\",\n name: t(\"purchases.header.types.fertiliser\")\n },\n {\n type: \"pesticide\",\n name: t(\"purchases.header.types.pesticide\")\n }\n ];\n\n return (\n \n \n \n {t(\"purchases.header.title\")}\n \n {\n if (inputEstimated === 1) {\n setInputEstimated(0);\n agent.Farms.FarmInputsPurchases.deleteInputEstimated(\n farmId,\n selectedPeriod\n );\n } else {\n setInputEstimated(1);\n agent.Farms.FarmInputsPurchases.postInputEstimated(\n farmId,\n selectedPeriod\n );\n }\n }}\n />\n {t(\"purchases.header.disable-prices\")}\n \n \n \n \n \n \n {purchasesTypes.map((item, index) => (\n setInputType(item.type)}\n className={`${classes.tab} ${\n item.type === selectedInputType ? classes.active : \"\"\n }`}\n data-woi=\"purchase-section\"\n >\n \n {item.name}\n \n \n ))}\n \n \n \n \n );\n};\n\nHeader.propTypes = propsDefinition;\n\nconst mapStateToProps = state => ({\n farmId: state.farm.farm.id,\n selectedPeriod: state.farm.selectedPeriod,\n selectedInputType: state.farmInputs.selectedInputType\n});\n\nconst mapDispatchToProps = dispatch => ({\n setInputType: payload => dispatch({ type: SELECTED_INPUT_TYPE, payload })\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(Header));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//UI Components\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Button from \"@material-ui/core/Button\";\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\n\nconst styles = (theme) => ({\n root: {\n backgroundColor: theme.palette.success.dark,\n \"&:hover\": {\n backgroundColor: theme.palette.success.main,\n },\n },\n icon: {\n color: \"#FFF\",\n marginRight: \"8px\",\n },\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n handleConfirmInputs: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired,\n disabledMessage: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n\n //Provided props\n classes: PropTypes.object, // Provided by Material Ui Style\n};\n\nconst ConfirmInputs = ({\n handleConfirmInputs,\n classes,\n disabled,\n disabledMessage,\n label,\n}) => {\n return (\n \n
\n \n \n {label}\n \n
\n
\n );\n};\n\nConfirmInputs.propTypes = propsDefinition;\n\nexport default withStyles(styles)(ConfirmInputs);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\n//Utils\nimport usePrevious from \"../../../utils/usePrevious\";\n\n//UI Components\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Autocomplete, { createFilterOptions } from \"@material-ui/lab/Autocomplete\";\nimport TextField from \"@material-ui/core/TextField\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport List from \"@material-ui/core/List\";\n\nconst filter = createFilterOptions();\n\nconst ListboxComponent = React.forwardRef(function ListboxComponent(props, ref) {\n const { children, onScroll, ...custom } = props;\n\n return (\n
\n \n {children.map((child) => {\n return child;\n })}\n \n
\n );\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n selectedInputType: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n farmId: PropTypes.string.isRequired,\n periodId: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n query: PropTypes.string.isRequired,\n setQuery: PropTypes.func.isRequired,\n errors: PropTypes.array.isRequired,\n};\n\nconst SearchInputs = ({\n value,\n onChange,\n name,\n selectedInputType,\n label,\n farmId,\n periodId,\n disabled,\n query,\n setQuery,\n errors,\n}) => {\n const { t } = useTranslation();\n const [inputs, setInputs] = useState([]);\n const [page, setPage] = useState(1);\n const [dataEnd, setDataEnd] = useState(false);\n const [loading, setLoading] = useState(false);\n const [initialLoaded, setInitialLoaded] = useState(false);\n const [open, setOpen] = useState(false);\n\n const getInputs = useCallback(\n async (query = \"\") => {\n setLoading(true);\n setInputs([]);\n const { body, error } = await agent.Inputs.search(\n selectedInputType,\n periodId,\n farmId,\n query\n );\n if (!error) {\n setInputs(body.inputs);\n } else {\n setInputs({ id: \"error\", name: \"error\" });\n }\n setPage(1);\n setDataEnd(false);\n setLoading(false);\n setInitialLoaded(true);\n },\n [selectedInputType, periodId, farmId]\n );\n\n const prevQuery = usePrevious(query);\n\n useEffect(() => {\n if (open) {\n let timer;\n if (query !== \"\" && query !== prevQuery) {\n timer = setTimeout(() => {\n getInputs(query);\n }, 300);\n\n return () => clearTimeout(timer);\n } else if ((query === \"\" && query !== prevQuery) || !initialLoaded) {\n timer = setTimeout(() => {\n getInputs();\n }, 0);\n\n return () => clearTimeout(timer);\n }\n }\n }, [query, open, getInputs, prevQuery, initialLoaded]);\n\n const getInputsPage = async () => {\n setLoading(true);\n const { body, error } = await agent.Inputs.search(\n selectedInputType,\n periodId,\n farmId,\n query,\n page + 1\n );\n if (!error) {\n setPage(page + 1);\n if (body.inputs.length === 0) {\n setDataEnd(true);\n } else {\n setInputs((inputs) => [...inputs, ...body.inputs]);\n }\n }\n setLoading(false);\n };\n\n const onOpen = () => {\n setOpen(true);\n };\n\n const onClose = () => {\n setOpen(false);\n };\n\n const title = value && value.name ? {value.name} : \"\";\n\n return (\n \n \n }\n fullWidth={true}\n onChange={(e, data) => onChange(data)}\n onInputChange={(e, value) => setQuery(value)}\n value={value}\n onOpen={onOpen}\n filterOptions={(options, params) => {\n const filtered = filter(options, params);\n\n if (loading && inputs.length > 0) {\n filtered.push({\n loading: true,\n });\n }\n\n if (selectedInputType === \"fertiliser\") {\n filtered.push({\n custom: true,\n });\n }\n\n return filtered;\n }}\n onClose={onClose}\n freeSolo\n size='small'\n name={name}\n options={inputs}\n disabled={disabled}\n getOptionDisabled={(option) => {\n return (\n (option.loading || option.id === \"error\" || option.usedByFarm === 1) &&\n (!value || option.id !== value.id)\n );\n }}\n getOptionLabel={(option) => {\n return option.name ? option.name : \"\";\n }}\n renderOption={(option) => {\n return option ? (\n option.id ? (\n
\n {option.input && option.input.name\n ? option.input.name\n : option.name\n ? option.name\n : \"\"}\n
\n ) : option.custom ? (\n
\n {t(\"purchases.section.input-add-custom\")}\n
\n ) : option.loading ? (\n
\n {t(\"purchases.section.input-search\")}\n
\n ) : (\n \"\"\n )\n ) : (\n \"\"\n );\n }}\n ListboxComponent={ListboxComponent}\n ListboxProps={{\n onScroll: (event) => {\n const list = event.currentTarget;\n if (\n list.scrollTop + list.clientHeight >= list.scrollHeight * 0.95 &&\n !loading &&\n !dataEnd\n ) {\n getInputsPage();\n }\n },\n }}\n renderInput={(params) => (\n item.field === \"input\").length > 0}\n helperText={\n errors.filter((item) => item.field === \"input\").length > 0\n ? errors.filter((item) => item.field === \"input\")[0].message\n : \"\"\n }\n InputProps={{\n ...params.InputProps,\n type: \"search\",\n }}\n value={value}\n />\n )}\n />\n
\n );\n};\n\nSearchInputs.propTypes = propsDefinition;\n\nexport default SearchInputs;\n","import { useEffect, useRef } from \"react\";\n\nexport default function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom Components\nimport FieldWithTextAdornment from \"../../FieldWithTextAdornment\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n min: PropTypes.number,\n max: PropTypes.number,\n errors: PropTypes.array.isRequired,\n price: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n onCancel: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n unit: PropTypes.string.isRequired,\n setPrice: PropTypes.func.isRequired,\n currency: PropTypes.string.isRequired,\n};\n\nfunction PriceConfirmation({\n open,\n min,\n max,\n errors,\n price,\n onCancel,\n onConfirm,\n unit,\n setPrice,\n currency,\n}) {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"purchases.price-confirmation-modal.title\")}\n \n \n \n \n \n {t(\"purchases.price-confirmation-modal.sub-title-left\")}\n \n {\n setPrice(e.target.value);\n }}\n errors={errors}\n adornment={`${currency}/${unit}`}\n width='130px'\n />\n \n \n \n {t(\"purchases.price-confirmation-modal.sub-title-right\")}\n \n {}}\n adornment={`€/${unit}`}\n width='130px'\n />\n {}}\n adornment={`€/${unit}`}\n width='130px'\n />\n \n \n \n {t(\"purchases.price-confirmation-modal.description\")}\n \n \n \n \n \n \n \n );\n}\n\nPriceConfirmation.propTypes = propsDefinition;\n\nexport default PriceConfirmation;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { GLOBAL_CUSTOM_TYPES_LOADED } from \"../../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../../agent\";\n\n//UI Components\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n farmId: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n selectedType: PropTypes.string.isRequired,\n\n //Provided props\n customTypes: PropTypes.array, // Provided by Redux\n setCustomTypes: PropTypes.array, // Provided by Redux\n};\n\nconst SelectCustomType = ({\n customTypes = [],\n selectedType,\n onChange,\n farmId,\n setCustomTypes,\n}) => {\n useEffect(() => {\n if (customTypes.length === 0) {\n const getCustomTypes = async () => {\n const { body } = await agent.CustomTypes.get(farmId);\n setCustomTypes(body.customTypes);\n onChange({\n target: { value: body.customTypes[0].id },\n currentTarget: {\n dataset: {\n npk: body.customTypes[0].npk,\n unit: body.customTypes[0].unit,\n currency: body.customTypes[0].currency,\n },\n },\n });\n };\n\n getCustomTypes();\n } else if (selectedType === \"\") {\n onChange({\n target: { value: customTypes[0].id },\n currentTarget: {\n dataset: {\n npk: customTypes[0].npk,\n unit: customTypes[0].unit,\n currency: customTypes[0].currency,\n },\n },\n });\n }\n }, [customTypes, onChange, selectedType, farmId, setCustomTypes]);\n\n if (customTypes.length > 0) {\n return (\n \n \n \n );\n }\n return null;\n};\n\nSelectCustomType.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n customTypes: state.global.customTypes,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n setCustomTypes: (payload) => dispatch({ type: GLOBAL_CUSTOM_TYPES_LOADED, payload }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SelectCustomType);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Custom Components\nimport FieldWithTextAdornment from \"../../../FieldWithTextAdornment\";\nimport SelectCustomType from \"./SelectCustomType\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\nimport TextField from \"@material-ui/core/TextField\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport { makeStyles } from \"@material-ui/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n breakline: {\n width: \"100%\",\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\n marginBottom: theme.spacing(1),\n },\n rightMargin: {\n marginRight: \"8px\",\n },\n}));\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n open: PropTypes.bool.isRequired,\n onCancel: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n farmId: PropTypes.string.isRequired,\n periodId: PropTypes.string.isRequired,\n};\n\nconst CustomInput = ({ open, onCancel, onConfirm, farmId, periodId }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n\n const [type, setType] = useState(\"\");\n const [requiresNpk, setRequiresNpk] = useState(false);\n const [name, setName] = useState(\"\");\n const [useDefaultName, setUseDefaultName] = useState(true);\n const [currency, setCurrency] = useState(\"\");\n const [unit, setUnit] = useState(\"\");\n const [N, setN] = useState(\"\");\n const [P, setP] = useState(\"\");\n const [K, setK] = useState(\"\");\n const [errors, setErrors] = useState([]);\n\n useEffect(() => {\n if (requiresNpk && useDefaultName) {\n setName(`NPK ${N}-${P}-${K}*`);\n }\n }, [requiresNpk, name, useDefaultName, N, P, K]);\n\n useEffect(() => {\n if (!requiresNpk) {\n setName(\"\");\n }\n }, [type, requiresNpk]);\n\n useEffect(() => {\n setErrors((errors) => errors.filter((error) => error.field !== \"global\"));\n }, [N, P, K]);\n\n useEffect(() => {\n setErrors([]);\n }, [type]);\n\n const handleCancel = () => {\n onCancel();\n };\n\n const getComposition = () => {\n return requiresNpk\n ? {\n N,\n P,\n K,\n }\n : {};\n };\n\n const handleConfirm = () => {\n if (requiresNpk && name !== \"\") {\n agent.Farms.FarmInputsPurchases.NPK.check(farmId, periodId, type, N, P, K).then(\n (res) => {\n if (res.body.input.exist) {\n setErrors((errors) => [\n ...errors,\n { field: \"global\", message: t(\"purchases.custom-input-modal.input-exist\") },\n ]);\n } else {\n setName(\"\");\n setCurrency(\"\");\n setUnit(\"\");\n setN(\"\");\n setP(\"\");\n setK(\"\");\n setErrors([]);\n onConfirm(type, name, getComposition(), currency, unit);\n }\n }\n );\n } else if (name !== \"\") {\n setName(\"\");\n setCurrency(\"\");\n setUnit(\"\");\n setN(\"\");\n setP(\"\");\n setK(\"\");\n setErrors([]);\n onConfirm(type, name, getComposition(), currency, unit);\n } else {\n setErrors((errors) => [\n ...errors,\n {\n field: \"name\",\n message: t(\"purchases.custom-input-modal.name-required\"),\n },\n ]);\n }\n };\n\n return (\n \n \n {t(\"purchases.custom-input-modal.title\")}\n \n \n \n \n \n {t(\"purchases.custom-input-modal.input-type\")}\n \n \n {\n const { npk, currency, unit } = e.currentTarget.dataset;\n setRequiresNpk(Boolean(parseInt(npk)));\n setCurrency(currency);\n setUnit(unit);\n setType(e.target.value);\n }}\n farmId={farmId}\n />\n \n \n \n \n \n {t(\"purchases.custom-input-modal.input-name\")}\n \n \n setName(e.target.value)}\n error={errors.filter((error) => error.field === \"name\").length > 0}\n helperText={\n errors.filter((error) => error.field === \"name\").length > 0\n ? errors.filter((error) => error.field === \"name\")[0].message\n : \"\"\n }\n InputProps={{\n startAdornment: requiresNpk && (\n \n {t(\"purchases.custom-input-modal.default-letter\")}\n setUseDefaultName(value)}\n size='small'\n />\n \n ),\n }}\n />\n \n \n \n {requiresNpk && (\n <>\n \n {t(\"purchases.custom-input-modal.description\")}\n \n \n {\n let value = e.target.value;\n if (value > 100) value = 100;\n if (value < 0) value = 0;\n setN(value);\n }}\n error={!(parseInt(N) >= 0)}\n helperText={\n !(parseInt(N) >= 0) &&\n t(\"purchases.custom-input-modal.error.mandatory\")\n }\n adornment={`% ${t(\"purchases.custom-input-modal.N\")}`}\n width='90px'\n />\n \n \n {\n let value = e.target.value;\n if (value > 100) value = 100;\n if (value < 0) value = 0;\n setP(value);\n }}\n error={!(parseInt(P) >= 0)}\n helperText={\n !(parseInt(P) >= 0) &&\n t(\"purchases.custom-input-modal.error.mandatory\")\n }\n adornment={`% ${t(\"purchases.custom-input-modal.P\")}`}\n width='90px'\n />\n \n \n {\n let value = e.target.value;\n if (value > 100) value = 100;\n if (value < 0) value = 0;\n setK(value);\n }}\n error={!(parseInt(K) >= 0)}\n helperText={\n !(parseInt(K) >= 0) &&\n t(\"purchases.custom-input-modal.error.mandatory\")\n }\n adornment={`% ${t(\"purchases.custom-input-modal.K\")}`}\n width='90px'\n />\n \n {errors.filter((item) => item.field === \"global\").length > 0 && (\n \n \n {errors.filter((item) => item.field === \"global\")[0].message}\n \n \n )}\n \n )}\n \n \n \n \n \n = 0) || !(parseInt(P) >= 0) || !(parseInt(K) >= 0))\n }\n onClick={handleConfirm}\n color='secondary'\n >\n {t(\"purchases.custom-input-modal.confirm-button-label\")}\n \n \n \n );\n};\n\nCustomInput.propTypes = propsDefinition;\n\nexport default CustomInput;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect, useCallback, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n UPDATE_FARM_INPUT_PURCHASE,\n ADD_FARM_INPUT_PURCHASE,\n REMOVE_FARM_INPUT_PURCHASE\n} from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\nimport profiles from \"../../../constants/profiles\";\n\n//Custom Components\nimport BlankIcon from \"../../BlankIcon\";\nimport FieldWithTextAdornment from \"../../FieldWithTextAdornment\";\nimport SearchInputs from \"./SearchInputs\";\nimport PriceConfirmation from \"./PriceConfirmation\";\nimport DeleteConfirmation from \"../../DeleteConfirmation\";\nimport CustomInput from \"./CustomInput\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\n//UI Components\nimport ErrorOutlineIcon from \"@material-ui/icons/ErrorOutline\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Typography from \"@material-ui/core/Typography\";\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport WarningIcon from \"@material-ui/icons/Warning\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport Button from \"@material-ui/core/Button\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport DeleteForever from \"@material-ui/icons/DeleteForever\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport Portal from \"@material-ui/core/Portal\";\n\nconst styles = theme => ({\n root: {\n padding: theme.spacing(1)\n },\n rowContainer: {\n marginBottom: theme.spacing(1)\n },\n checkboxes: {\n paddingRight: \"10px\"\n },\n confirmInputs: {\n display: \"flex\",\n justifyContent: \"center\"\n }\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n selectedInputType: PropTypes.string.isRequired,\n farmId: PropTypes.string.isRequired,\n selectedPeriod: PropTypes.string.isRequired,\n index: PropTypes.number,\n data: PropTypes.object,\n\n //Provided props\n inputEstimated: PropTypes.number,\n updateFarmInputPurchase: PropTypes.func, // Provided by Redux\n addFarmInputPurchase: PropTypes.func, // Provided by Redux\n deleteFarmInputPurchase: PropTypes.func, // Provided by Redux\n classes: PropTypes.object // Provided by Redux\n};\n\nconst PurchaseRow = ({\n classes,\n inputEstimated,\n selectedInputType,\n farmId,\n selectedPeriod,\n index,\n data = {},\n updateFarmInputPurchase,\n addFarmInputPurchase,\n deleteFarmInputPurchase\n}) => {\n const prevSelectedInputTypeRef = useRef();\n useEffect(() => {\n prevSelectedInputTypeRef.current = selectedInputType;\n });\n const prevSelectedInputType = prevSelectedInputTypeRef.current;\n\n const [id, setId] = useState(null);\n const [price, setPrice] = useState(\"\");\n const [isGrouped, setIsGrouped] = useState(0);\n const [unit, setUnit] = useState(\"\");\n const [grouped, setGrouped] = useState({});\n const [status, setStatus] = useState(0);\n const [priceMin, setPriceMin] = useState(0);\n const [priceMax, setPriceMax] = useState(0);\n const [currency, setCurrency] = useState(\"\");\n const [, setLast] = useState(0);\n const [average, setAverage] = useState(0);\n const [isAverage, setIsAverage] = useState(0);\n const [input, setInput] = useState(null);\n const [lock, setLock] = useState(0);\n const [loading, setLoading] = useState(false);\n const [errors, setErrors] = useState([]);\n const [changed, setChanged] = useState(false);\n const [confirmOpen, setConfirmOpen] = useState(false);\n const [confirmed, setConfirmed] = useState(false);\n const [notDeletable, setNotDeletable] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [customOpen, setCustomOpen] = useState(false);\n const [query, setQuery] = useState(\"\");\n const [composition, setComposition] = useState({});\n\n const { t } = useTranslation();\n const permissions = new Permissions(status, lock, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR\n ]);\n\n useEffect(() => {\n if (data.id) {\n setId(data.id);\n setPrice(data.price === null ? \"\" : data.price);\n setIsGrouped(data.isGrouped);\n setGrouped(\n data.input &&\n data.input.prices &&\n data.input.prices.grouped &&\n data.input.prices.grouped.id\n ? data.input.prices.grouped\n : {}\n );\n setLock(data.lock);\n setStatus(data.status);\n setCurrency(data.currency);\n if (data.input && data.input.prices) {\n setPriceMin(data.input.prices.min || 0);\n setPriceMax(data.input.prices.max || 0);\n setAverage(data.input.prices.average || 0);\n setLast(data.input.prices.last || 0);\n setUnit(data.input.unit || \"\");\n }\n setNotDeletable(data.flagDelete);\n setIsAverage(data.isAverage);\n const {\n id: inputId,\n name: inputName,\n unit: inputUnit,\n operationUnit: inputOperationUnit,\n price: inputPrice\n } = data.input || {};\n setInput(\n data.input\n ? {\n id: inputId,\n name: inputName,\n unit: inputUnit,\n operationUnit: inputOperationUnit,\n price: inputPrice\n }\n : {}\n );\n setErrors([]);\n }\n }, [data]);\n\n const clear = useCallback(() => {\n if (id === null && input !== null) {\n setChanged(false);\n setConfirmed(false);\n setPrice(\"\");\n setIsGrouped(0);\n setUnit(\"\");\n setGrouped({});\n setStatus(0);\n setPriceMin(0);\n setPriceMax(0);\n setLast(0);\n setAverage(0);\n setIsAverage(0);\n setInput(null);\n setErrors([]);\n }\n }, [id, input]);\n\n useEffect(() => {\n if (selectedInputType !== prevSelectedInputType) {\n clear();\n }\n }, [selectedInputType, clear, prevSelectedInputType]);\n\n const update = useCallback(\n requestBody => {\n const updatePurchase = agent.Farms.FarmInputsPurchases.update(\n farmId,\n selectedInputType,\n id,\n requestBody\n )\n .then(res => {\n updateFarmInputPurchase(res.body.farmInputPurchase, index);\n setChanged(false);\n setConfirmed(false);\n })\n .catch(() => {\n setChanged(false);\n setConfirmed(false);\n });\n\n toast.promise(updatePurchase, {\n loading: t(\"global.loading\"),\n success: t(\"purchases.section.notifications.input-saved\"),\n error: t(\"purchases.section.notifications.error\")\n });\n },\n [updateFarmInputPurchase, farmId, selectedInputType, id, index, t]\n );\n\n const validateData = useCallback(() => {\n if (input && !input.id) {\n setErrors(errors => [\n ...errors,\n {\n field: \"input\",\n message: t(\"purchases.section.errors.required-input\")\n }\n ]);\n } else {\n setErrors(errors => [...errors.filter(item => item.field !== \"input\")]);\n }\n if (input && input.id) {\n if (!inputEstimated && (price === \"\" || price < 0)) {\n setErrors(errors => [\n ...errors,\n { field: \"price\", message: t(\"purchases.section.errors.null-price\") }\n ]);\n } else {\n setErrors(errors => [...errors.filter(item => item.field !== \"price\")]);\n }\n } else {\n setErrors(errors => [...errors.filter(item => item.field === \"input\")]);\n }\n }, [price, input, t, inputEstimated]);\n\n useEffect(() => {\n if (changed) {\n validateData();\n }\n }, [changed, validateData]);\n\n useEffect(() => {\n if (\n !confirmed &&\n !confirmOpen &&\n !isAverage &&\n !isGrouped &&\n price > 0 &&\n price !== data.price &&\n changed &&\n (priceMin > 0 || priceMax > 0) &&\n (price < priceMin || price > priceMax || priceMin === priceMax)\n ) {\n setLoading(true);\n const timer = setTimeout(() => setConfirmOpen(true), 1100);\n return () => clearTimeout(timer);\n } else if (!confirmOpen) {\n setConfirmed(true);\n setLoading(false);\n }\n }, [\n price,\n data.price,\n priceMin,\n priceMax,\n changed,\n isAverage,\n isGrouped,\n confirmOpen,\n confirmed\n ]);\n\n useEffect(() => {\n const errCheck = errors.filter(item => item.field !== \"price\");\n if (\n changed &&\n errCheck.length === 0 &&\n id &&\n id !== null &&\n confirmed &&\n (price !== data.price || (status === 3 && status !== data.status))\n ) {\n const requestBody = {\n farmInputPurchase: {\n isGrouped: isGrouped,\n isAverage: isAverage,\n price: price,\n status: status,\n input: {\n ...input,\n prices: {\n grouped: grouped.id ? grouped : {},\n min: priceMin,\n max: priceMax\n }\n },\n composition\n }\n };\n const timer = setTimeout(() => update(requestBody), 700);\n return () => clearTimeout(timer);\n }\n }, [\n confirmed,\n changed,\n errors,\n isGrouped,\n price,\n status,\n priceMin,\n priceMax,\n input,\n grouped,\n selectedPeriod,\n update,\n isAverage,\n id,\n data.price,\n data.status,\n composition\n ]);\n\n const handleCreate = () => {\n setLoading(true);\n if (\n errors.length === 0 &&\n (inputEstimated || price >= 0) &&\n input &&\n input.id\n ) {\n const requestBody = {\n farmInputPurchase: {\n isGrouped: isGrouped,\n isAverage: isAverage,\n price: price,\n status: status,\n input: {\n ...input,\n prices: {\n grouped: grouped.id ? grouped : {},\n min: priceMin,\n max: priceMax\n }\n },\n name: input.name,\n composition,\n period: {\n id: selectedPeriod\n }\n }\n };\n\n const createPurchase = agent.Farms.FarmInputsPurchases.create(\n farmId,\n selectedInputType,\n requestBody\n )\n .then(res => {\n addFarmInputPurchase(res.body.farmInputPurchase);\n setChanged(false);\n setConfirmed(false);\n setId(null);\n setPrice(\"\");\n setIsGrouped(0);\n setUnit(\"\");\n setGrouped({});\n setStatus(0);\n setPriceMin(0);\n setPriceMax(0);\n setLast(0);\n setAverage(0);\n setIsAverage(0);\n setInput(null);\n setComposition({});\n setErrors([]);\n setLoading(false);\n })\n .catch(() => {\n setLoading(false);\n });\n\n toast.promise(createPurchase, {\n loading: t(\"global.loading\"),\n success: t(\"purchases.section.notifications.input-added\"),\n error: t(\"purchases.section.notifications.error\")\n });\n }\n };\n\n const handleDelete = () => {\n const deletePurchase = agent.Farms.FarmInputsPurchases.delete(\n farmId,\n selectedInputType,\n id\n ).then(() => {\n deleteFarmInputPurchase(index);\n });\n\n toast.promise(deletePurchase, {\n loading: t(\"global.loading\"),\n success: t(\"purchases.section.notifications.input-deleted\"),\n error: t(\"purchases.section.notifications.error\")\n });\n };\n\n const handleStatus = () => {\n setStatus(3);\n setChanged(true);\n setConfirmed(true);\n };\n\n const handleDeleteConfirm = () => {\n setDeleteOpen(true);\n };\n\n useEffect(() => {\n if (!inputEstimated) {\n if (\n (data && data.status !== 3 && status !== 3 && changed) ||\n (changed && data && data.price !== price)\n ) {\n if (parseFloat(price) === 0 && !isGrouped) {\n setStatus(0);\n } else if (\n (parseFloat(priceMin) <= parseFloat(price) &&\n parseFloat(price) <= parseFloat(priceMax)) ||\n isGrouped\n ) {\n setStatus(2);\n } else {\n setStatus(1);\n }\n }\n } else {\n handleStatus();\n }\n }, [\n inputEstimated,\n price,\n status,\n changed,\n isGrouped,\n priceMax,\n priceMin,\n data\n ]);\n\n return (\n \n \n {\n setIsAverage(0);\n setIsGrouped(0);\n if (!inputEstimated) {\n setPrice(\"\");\n }\n if (input && input.custom) {\n setCustomOpen(true);\n return;\n }\n if (input && input.id) {\n const { body, error } = await agent.Inputs.Prices.get(\n selectedInputType,\n input.id,\n selectedPeriod,\n farmId\n );\n if (!error) {\n const prices = body.prices;\n setUnit(input.unit);\n if (!inputEstimated) {\n setPrice(input.price === null ? \"\" : input.price);\n }\n setInput(input);\n setAverage(prices.average);\n setGrouped(prices.grouped.id ? prices.grouped : {});\n setPriceMin(prices.min);\n setPriceMax(prices.max);\n setLast(prices.last);\n setCurrency(prices.currency);\n }\n } else {\n setAverage(0);\n setGrouped({});\n setPriceMin(0);\n setPriceMax(0);\n setInput({});\n setLast(0);\n }\n setChanged(true);\n }}\n errors={errors}\n value={input}\n label={t(\"purchases.section.input\")}\n NLabel={t(\"purchases.section.tooltip.N\")}\n PLabel={t(\"purchases.section.tooltip.P\")}\n KLabel={t(\"purchases.section.tooltip.K\")}\n name=\"input\"\n />\n \n \n {\n setIsAverage(0);\n setPrice(e.target.value);\n setConfirmed(false);\n setChanged(true);\n }}\n onFocus={event => event.target.select()}\n adornment={!inputEstimated && unit ? `${currency}/${unit}` : \"\"}\n width=\"130px\"\n />\n \n {/* TODO: Add condition to not display grid item if inputEstimation is 1\n Check with Yannick if on the DB we don't care about the validation status of the inputs when inputEstimation is 1\n */}\n {inputEstimated ? null : (\n \n {permissions.canView() && status === 0 && id !== null ? (\n \n
\n \n \n \n
\n
\n ) : permissions.canView() && status === 1 ? (\n \n
\n \n \n \n
\n
\n ) : permissions.canView() && status === 2 ? (\n \n
\n \n \n \n
\n
\n ) : status === 3 ? (\n \n
\n \n \n \n
\n
\n ) : status === -1 ? (\n \n
\n \n \n \n
\n
\n ) : (\n
\n \n \n \n
\n )}\n
\n )}\n \n \n {\n setPrice(data ? grouped.price : \"\");\n setIsAverage(0);\n setIsGrouped(data ? 1 : 0);\n setChanged(true);\n setConfirmed(data ? true : false);\n }}\n />\n {t(\"purchases.section.grouped-label\")}\n \n \n \n 0 || priceMax > 0 ? priceMin : \"\"}\n adornment={unit ? `${currency}/${unit}` : \"\"}\n width=\"130px\"\n />\n \n \n 0 || priceMax > 0 ? priceMax : \"\"}\n adornment={unit ? `${currency}/${unit}` : \"\"}\n width=\"130px\"\n />\n \n \n \n {\n setIsAverage(data ? 1 : 0);\n setPrice(data ? average : \"\");\n setChanged(true);\n setConfirmed(data ? true : false);\n }}\n checked={isAverage ? true : false}\n />\n {t(\"purchases.section.average-label\")}\n \n \n {id === null && permissions.canEdit() ? (\n \n = 0) || price === \"\"))\n }\n style={{ minWidth: \"120px\" }}\n fullWidth={true}\n onClick={handleCreate}\n >\n {t(\"purchases.section.add-button-label\")}\n \n \n ) : ((!permissions.canView() && status !== 3) || permissions.canView()) &&\n permissions.canEdit() ? (\n \n {t(\"purchases.section.not-deletable-message\")}\n \n ) : (\n \"\"\n )\n }\n >\n
\n \n \n \n
\n \n ) : null}\n \n {\n setPrice(data.price ? data.price : \"\");\n setIsAverage(data ? data.isAverage : 0);\n setIsGrouped(data ? data.isGrouped : 0);\n setConfirmed(false);\n setConfirmOpen(false);\n }}\n onConfirm={() => {\n setConfirmOpen(false);\n setConfirmed(true);\n }}\n currency={currency}\n errors={errors}\n unit={unit}\n price={price}\n setPrice={setPrice}\n min={priceMin}\n max={priceMax}\n />\n \n \n {\n setCustomOpen(false);\n }}\n onConfirm={(inputId, inputName, composition, currency, unit) => {\n setInput({ id: inputId, name: inputName });\n setComposition(composition);\n setCurrency(currency);\n setUnit(unit);\n setCustomOpen(false);\n }}\n farmId={farmId}\n periodId={selectedPeriod}\n />\n \n \n {\n setDeleteOpen(false);\n }}\n onConfirm={() => {\n setDeleteOpen(false);\n handleDelete();\n }}\n />\n \n \n );\n};\n\nPurchaseRow.propTypes = propsDefinition;\n\nconst mapDispatchToProps = dispatch => ({\n updateFarmInputPurchase: (payload, index) =>\n dispatch({\n type: UPDATE_FARM_INPUT_PURCHASE,\n payload,\n index\n }),\n addFarmInputPurchase: payload =>\n dispatch({ type: ADD_FARM_INPUT_PURCHASE, payload }),\n deleteFarmInputPurchase: index =>\n dispatch({ type: REMOVE_FARM_INPUT_PURCHASE, index })\n});\n\nexport default connect(\n null,\n mapDispatchToProps\n)(withStyles(styles)(PurchaseRow));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n FARM_INPUTS_PURCHASES_LOADED,\n UPDATE_FARM_INPUTS_PURCHASES,\n CLEAR_FARM_INPUTS_PURCHASES\n} from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\nimport profiles from \"../../../constants/profiles\";\n\n//Custom Components\nimport LoadingSpinner from \"../../LoadingSpinner\";\nimport ConfirmInputs from \"./ConfirmInputs\";\nimport PurchaseRow from \"./PurchaseRow\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\nconst styles = theme => ({\n root: {\n padding: theme.spacing(1)\n },\n rowContainer: {\n marginBottom: theme.spacing(1)\n },\n checkboxes: {\n paddingRight: \"10px\"\n },\n confirmInputs: {\n display: \"flex\",\n justifyContent: \"center\"\n }\n});\n\nconst propsDefinition = {\n //Provided props\n inputEstimated: PropTypes.number,\n farmId: PropTypes.string, // Provided by Redux\n classes: PropTypes.object, // Provided by Material Ui Style\n selectedPeriod: PropTypes.string, // Provided by Redux\n onLoad: PropTypes.func, // Provided by Redux\n selectedInputType: PropTypes.string, // Provided by Redux\n farmInputsPurchases: PropTypes.array, // Provided by Redux\n updateFarmInputsPurchases: PropTypes.func, // Provided by Redux\n clearFarmInputsPurchases: PropTypes.func, // Provided by Redux\n loaded: PropTypes.bool, // Provided by Redux\n lock: PropTypes.number // Provided by Redux\n};\n\nconst PurchasesSection = ({\n classes,\n inputEstimated,\n selectedPeriod,\n farmId,\n onLoad,\n selectedInputType,\n farmInputsPurchases,\n updateFarmInputsPurchases,\n clearFarmInputsPurchases,\n loaded,\n lock\n}) => {\n const permissions = new Permissions(null, lock, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR\n ]);\n\n const { t } = useTranslation();\n\n const purchasesTypes = [\n {\n type: \"seed\",\n name: t(\"purchases.header.types.seed\")\n },\n {\n type: \"fertiliser\",\n name: t(\"purchases.header.types.fertiliser\")\n },\n {\n type: \"pesticide\",\n name: t(\"purchases.header.types.pesticide\")\n }\n ];\n\n const inputType =\n purchasesTypes &&\n purchasesTypes.filter(item => item.type === selectedInputType).length > 0\n ? purchasesTypes.filter(item => item.type === selectedInputType)[0].name\n : \"\";\n\n useEffect(() => {\n onLoad(\n agent.Farms.FarmInputsPurchases.get(\n farmId,\n selectedInputType,\n selectedPeriod\n )\n );\n }, [onLoad, farmId, selectedPeriod, selectedInputType]);\n\n const handleConfirmInputs = async () => {\n const validatePurchases = agent.Farms.FarmInputsPurchases.validate(\n farmId,\n selectedInputType,\n selectedPeriod\n ).then(res => {\n updateFarmInputsPurchases(res.body.farmInputsPurchases);\n });\n\n toast.promise(validatePurchases, {\n loading: t(\"global.loading\"),\n success: t(\"purchases.section.notifications.inputs-validated\"),\n error: t(\"purchases.section.notifications.error\")\n });\n };\n\n useEffect(() => {\n if (selectedInputType !== \"\") {\n clearFarmInputsPurchases();\n }\n }, [selectedInputType, clearFarmInputsPurchases]);\n\n if (!loaded) {\n return (\n \n \n \n );\n }\n\n if (farmInputsPurchases && farmInputsPurchases.length > 0) {\n return (\n
\n {farmInputsPurchases.map((item, index) => (\n \n ))}\n {permissions.canEdit() && (\n \n )}\n {permissions.canEdit() &&\n permissions.canView() &&\n farmInputsPurchases.length > 0 ? (\n
\n item.status < 2).length >\n 0 ||\n farmInputsPurchases.filter(item => item.status !== 3).length ===\n 0\n }\n label={t(\"purchases.container.validate-button-label\", {\n inputType\n })}\n disabledMessage={\n farmInputsPurchases.filter(item => item.status < 2).length > 0\n ? t(\"purchases.container.validation.invalid\", { inputType })\n : farmInputsPurchases.filter(item => item.status !== 3)\n .length === 0\n ? t(\"purchases.container.validation.valid\")\n : \"\"\n }\n handleConfirmInputs={handleConfirmInputs}\n />\n
\n ) : (\n \"\"\n )}\n
\n );\n }\n return (\n \n );\n};\n\nconst mapStateToProps = state => ({\n farmId: state.farm.farm.id,\n farmInputsPurchases: state.farmInputs.farmInputsPurchases,\n selectedInputType: state.farmInputs.selectedInputType,\n loaded: state.farmInputs.loaded,\n lock: state.farm.lock.status,\n selectedPeriod: state.farm.selectedPeriod\n});\n\nconst mapDispatchToProps = dispatch => ({\n onLoad: payload =>\n dispatch({\n type: FARM_INPUTS_PURCHASES_LOADED,\n payload\n }),\n updateFarmInputsPurchases: payload =>\n dispatch({\n type: UPDATE_FARM_INPUTS_PURCHASES,\n payload\n }),\n clearFarmInputsPurchases: () =>\n dispatch({\n type: CLEAR_FARM_INPUTS_PURCHASES\n })\n});\n\nPurchasesSection.propTypes = propsDefinition;\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(PurchasesSection));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Custom Components\nimport Header from \"./Header\";\nimport PurchasesSection from \"./PurchasesSection\";\n\n// API\nimport agent from \"../../agent\";\n\n// Redux\nimport { connect } from \"react-redux\";\n\n// TODO: Add UseEffect to get inputEstimated when components is loaded without dependencies\n\nconst propsDefinition = {\n farmId: PropTypes.string, // Provided by Redux\n selectedPeriod: PropTypes.string // Provided by Redux\n};\n\nconst Purchases = ({ farmId, selectedPeriod }) => {\n const [inputEstimated, setInputEstimated] = useState(0);\n useEffect(() => {\n const getInputEstimated = async () => {\n const {\n body,\n errors\n } = await agent.Farms.FarmInputsPurchases.getInputEstimated(\n farmId,\n selectedPeriod\n );\n if (!errors) {\n setInputEstimated(parseInt(body.inputEstimation.inputEstimated));\n }\n };\n\n getInputEstimated();\n }, [farmId, selectedPeriod]);\n\n return (\n \n \n \n \n );\n};\n\nconst mapStateToProps = state => ({\n farmId: state.farm.farm.id,\n selectedPeriod: state.farm.selectedPeriod\n});\n\n// export default Purchases;\n\nPurchases.propTypes = propsDefinition;\n\nexport default connect(mapStateToProps)(Purchases);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//UI Components\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst style = (theme) => ({\n titleContainer: {\n marginBottom: \"24px\",\n },\n});\n\nconst HedgerowsHeader = (props) => {\n const { classes } = props;\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"hedgerows.header.title\")}\n \n \n );\n};\n\nexport default withStyles(style)(HedgerowsHeader);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useState, useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport TextField from \"@material-ui/core/TextField\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n errors: PropTypes.array.isRequired,\n};\n\nconst SearchSpecies = ({ value, onChange, name, label, disabled, errors }) => {\n const { t } = useTranslation();\n const [species, setSpecies] = useState([\n { id: \"loading\", name: t(\"hedgerows.section.species-search\") },\n ]);\n const [query, setQuery] = useState(\"\");\n const [open, setOpen] = useState(false);\n\n const getSpecies = useCallback(async (query = \"\") => {\n const { body, error } = await agent.Species.search(query);\n if (!error) {\n setSpecies(body.trees);\n } else {\n setSpecies({ id: \"error\", name: \"error\" });\n }\n }, []);\n\n useEffect(() => {\n if (open) {\n let timer;\n if (query !== \"\") {\n timer = setTimeout(() => {\n getSpecies(query);\n }, 300);\n\n return () => clearTimeout(timer);\n } else {\n timer = setTimeout(() => {\n getSpecies();\n }, 100);\n\n return () => clearTimeout(timer);\n }\n }\n }, [query, open, getSpecies]);\n\n const onOpen = () => {\n setOpen(true);\n };\n\n const onClose = (e, val) => {\n setOpen(false);\n };\n\n return (\n \n }\n fullWidth={true}\n value={value}\n onChange={(e, data) => onChange(data)}\n onInputChange={(e) => setQuery(e && e.target ? e.target.value : \"\")}\n onOpen={onOpen}\n onClose={onClose}\n freeSolo\n size='small'\n name={name}\n options={species}\n disabled={disabled}\n getOptionDisabled={(option) => {\n return (\n (option.id === \"loading\" || option.id === \"error\" || option.usedByFarm === 1) &&\n (!value || option.id !== value.id)\n );\n }}\n getOptionLabel={(option) => (option.name ? option.name : \"\")}\n renderInput={(params) => (\n item.field === name).length > 0}\n helperText={\n errors.filter((item) => item.field === name).length > 0\n ? errors.filter((item) => item.field === name)[0].message\n : \"\"\n }\n InputProps={{\n ...params.InputProps,\n type: \"search\",\n }}\n value={value}\n />\n )}\n />\n );\n};\n\nSearchSpecies.propTypes = propsDefinition;\n\nexport default SearchSpecies;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n ADD_HEDGEROWS,\n REMOVE_HEDGEROWS,\n UPDATE_HEDGEROWS\n} from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\nimport profiles from \"../../../constants/profiles\";\nimport BlankIcon from \"../../BlankIcon\";\n\n//Custom Components\nimport SearchSpecies from \"./SearchSpecies\";\nimport FieldWithTextAdornment from \"../../FieldWithTextAdornment\";\nimport DeleteConfirmation from \"../../DeleteConfirmation\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\n//UI Components\nimport Portal from \"@material-ui/core/Portal\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Button from \"@material-ui/core/Button\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport DeleteForever from \"@material-ui/icons/DeleteForever\";\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\n\nconst styles = theme => ({\n root: {\n marginBottom: theme.spacing(1)\n },\n checkboxes: {\n width: \"140px\"\n }\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n hedgerow: PropTypes.object,\n farmId: PropTypes.string.isRequired,\n selectedPeriod: PropTypes.string.isRequired,\n index: PropTypes.number,\n\n //Provided props\n addHedgerow: PropTypes.func, // Provided by Redux\n updateHedgerow: PropTypes.func, // Provided by Redux\n deleteHedgerow: PropTypes.func, // Provided by Redux\n classes: PropTypes.object // Provided by Material ui style\n};\n\nconst HedgerowRow = ({\n hedgerow = null,\n classes,\n farmId,\n selectedPeriod,\n index,\n addHedgerow,\n updateHedgerow,\n deleteHedgerow\n}) => {\n const [id, setId] = useState(null);\n const [species, setSpecies] = useState(null);\n const [quantity, setQuantity] = useState(0);\n const [difference, setDifference] = useState(0);\n const [status, setStatus] = useState(0);\n const [lastYearSize, setLastYearSize] = useState(0);\n const [currentYearSize, setCurrentYearSize] = useState(0);\n const [loading] = useState(false);\n const [errors, setErrors] = useState([]);\n const [changed, setChanged] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [lock, setLock] = useState(0);\n\n const { t } = useTranslation();\n const permissions = new Permissions(status, lock, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR\n ]);\n\n useEffect(() => {\n if (hedgerow) {\n setId(hedgerow.id);\n setSpecies(hedgerow.species);\n setQuantity(hedgerow.quantity);\n setDifference(hedgerow.difference);\n setStatus(hedgerow.status);\n setLastYearSize(hedgerow.size.lastYear);\n setCurrentYearSize(hedgerow.size.current);\n setLock(hedgerow.lock);\n }\n }, [hedgerow]);\n\n const checkValidate = useCallback(() => {\n if (!species || (species && !species.id)) {\n setErrors(errors => [\n ...errors,\n {\n field: \"species\",\n message: t(\"hedgerows.section.errors.required-species\")\n }\n ]);\n } else {\n setErrors(errors => [...errors.filter(item => item.field !== \"species\")]);\n }\n if (!(quantity > 0)) {\n setErrors(errors => [\n ...errors,\n {\n field: \"quantity\",\n message: t(\"hedgerows.section.errors.required-quantity\")\n }\n ]);\n } else {\n setErrors(errors => [\n ...errors.filter(item => item.field !== \"quantity\")\n ]);\n }\n if (!(currentYearSize > 0)) {\n setErrors(errors => [\n ...errors,\n {\n field: \"currentYearSize\",\n message: t(\"hedgerows.section.errors.required-current-year-size\")\n }\n ]);\n } else {\n setErrors(errors => [\n ...errors.filter(item => item.field !== \"currentYearSize\")\n ]);\n }\n }, [species, quantity, currentYearSize, t]);\n\n useEffect(() => {\n if (changed) {\n checkValidate();\n }\n }, [checkValidate, changed]);\n\n const handleCreate = () => {\n if (errors.length === 0) {\n const reqBody = {\n hedgerow: {\n species,\n period: {\n id: selectedPeriod\n },\n quantity,\n difference,\n status,\n size: {\n lastYear: lastYearSize,\n current: currentYearSize\n }\n }\n };\n\n const createHedgerow = agent.Farms.Hedgerows.create(farmId, reqBody).then(\n res => {\n addHedgerow(res.body.hedgerow);\n setChanged(false);\n setId(null);\n setSpecies(null);\n setQuantity(0);\n setDifference(0);\n setStatus(0);\n setLastYearSize(0);\n setCurrentYearSize(0);\n setErrors([]);\n }\n );\n\n toast.promise(createHedgerow, {\n loading: t(\"global.loading\"),\n success: t(\"hedgerows.section.notifications.hedgerow-added\"),\n error: t(\"hedgerows.section.notifications.error\")\n });\n }\n };\n\n const handleUpdate = useCallback(() => {\n const validate = (species, quantity, currentYearSize) => {\n let error = false;\n if (!species || (species && !species.id)) {\n error = true;\n }\n if (!(quantity > 0)) {\n error = true;\n }\n if (!(currentYearSize > 0)) {\n error = true;\n }\n return error;\n };\n\n if (!validate(species, quantity, currentYearSize)) {\n const reqBody = {\n hedgerow: {\n species,\n quantity,\n difference,\n size: {\n lastYear: lastYearSize,\n current: currentYearSize\n }\n }\n };\n\n const changeHedgerow = agent.Farms.Hedgerows.update(\n farmId,\n id,\n reqBody\n ).then(res => {\n updateHedgerow(res.body.hedgerow, index);\n setChanged(false);\n });\n\n toast.promise(changeHedgerow, {\n loading: t(\"global.loading\"),\n success: t(\"hedgerows.section.notifications.hedgerow-saved\"),\n error: t(\"hedgerows.section.notifications.error\")\n });\n }\n }, [\n t,\n farmId,\n id,\n index,\n updateHedgerow,\n species,\n quantity,\n difference,\n lastYearSize,\n currentYearSize\n ]);\n\n useEffect(() => {\n if (changed && id) {\n const timer = setTimeout(() => handleUpdate(), 700);\n return () => clearTimeout(timer);\n }\n }, [handleUpdate, id, changed]);\n\n const handleDeleteConfirm = () => {\n setDeleteOpen(true);\n };\n\n const handleDelete = () => {\n const removeHedgerow = agent.Farms.Hedgerows.delete(farmId, id).then(\n res => {\n deleteHedgerow(index);\n }\n );\n\n toast.promise(removeHedgerow, {\n loading: t(\"global.loading\"),\n success: t(\"hedgerows.section.notifications.hedgerow-deleted\"),\n error: t(\"hedgerows.section.notifications.error\")\n });\n };\n\n const handleStatus = async () => {\n const reqBody = {\n hedgerow: {\n status: 3\n }\n };\n\n const changeHedgerow = agent.Farms.Hedgerows.update(\n farmId,\n id,\n reqBody\n ).then(res => {\n updateHedgerow(res.body.hedgerow, index);\n setChanged(false);\n });\n\n toast.promise(changeHedgerow, {\n loading: t(\"global.loading\"),\n success: t(\"hedgerows.section.notifications.hedgerow-validated\"),\n error: t(\"hedgerows.section.notifications.error\")\n });\n };\n\n const actionType =\n !id && permissions.canEdit() ? (\n \n \n {t(\"hedgerows.section.add-button-label\")}\n \n \n ) : permissions.canEdit() && (permissions.canView() || status !== 3) ? (\n
\n \n \n \n
\n ) : (\n \"\"\n );\n\n return (\n \n \n {\n setSpecies(species);\n setChanged(true);\n }}\n errors={errors}\n value={species}\n label={t(\"hedgerows.section.species\")}\n name=\"species\"\n />\n \n \n {permissions.canView() && status === 0 ? (\n \n
\n \n \n \n
\n
\n ) : status === 3 ? (\n \n
\n \n \n \n
\n
\n ) : (\n
\n \n \n \n
\n )}\n
\n \n {\n setQuantity(e.target.value);\n setChanged(true);\n }}\n onFocus={event => event.target.select()}\n adornment={t(\"hedgerows.section.trees\")}\n width=\"130px\"\n />\n \n \n {\n setCurrentYearSize(e.target.value);\n setChanged(true);\n }}\n onFocus={event => event.target.select()}\n adornment={t(\"hedgerows.section.unit\")}\n width=\"150px\"\n />\n \n \n {\n setLastYearSize(e.target.value);\n setChanged(true);\n }}\n onFocus={event => event.target.select()}\n adornment={t(\"hedgerows.section.unit\")}\n width=\"180px\"\n />\n \n \n {\n setDifference(e.target.value);\n setChanged(true);\n }}\n onFocus={event => event.target.select()}\n adornment={t(\"hedgerows.section.trees\")}\n width=\"130px\"\n />\n \n {actionType}\n \n {\n setDeleteOpen(false);\n }}\n onConfirm={() => {\n setDeleteOpen(false);\n handleDelete();\n }}\n />\n \n
\n );\n};\n\nHedgerowRow.propTypes = propsDefinition;\n\nconst mapDispachToProps = dispatch => ({\n addHedgerow: payload => dispatch({ type: ADD_HEDGEROWS, payload }),\n updateHedgerow: (payload, index) =>\n dispatch({ type: UPDATE_HEDGEROWS, payload, index }),\n deleteHedgerow: index => dispatch({ type: REMOVE_HEDGEROWS, index })\n});\n\nexport default connect(\n null,\n mapDispachToProps\n)(withStyles(styles)(HedgerowRow));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { HEDGEROWS_LOADED } from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\n\n//Custom Components\nimport HedgerowsRow from \"./HedgerowRow\";\n\nconst style = (theme) => ({\n root: {\n padding: theme.spacing(1),\n display: \"flex\",\n justifyContent: \"center\",\n },\n});\n\nconst propsDefinition = {\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n classes: PropTypes.object, // Provided by Material Ui Style\n selectedPeriod: PropTypes.string, // Provided by Redux\n onLoad: PropTypes.func, // Provided by Redux\n hedgerows: PropTypes.array, // Provided by Redux\n lock: PropTypes.number, // Provided by Redux\n};\n\nconst HedgerowsSection = ({\n classes,\n farmId,\n selectedPeriod,\n onLoad,\n hedgerows,\n lock,\n}) => {\n const permissions = new Permissions(null, lock);\n\n useEffect(() => {\n const getHedgerowsLoaded = async () => {\n const { body, error } = await agent.Farms.Hedgerows.get(farmId, selectedPeriod);\n\n if (!error) {\n onLoad(body.hedgerows);\n }\n };\n getHedgerowsLoaded();\n }, [farmId, selectedPeriod, onLoad]);\n\n const hedgerowsList =\n hedgerows && hedgerows.length > 0\n ? hedgerows.map((item, index) => (\n \n ))\n : [];\n\n return (\n
\n
\n {hedgerowsList}\n {permissions.canEdit() && (\n \n )}\n
\n
\n );\n};\n\nHedgerowsSection.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n farmId: state.farm.farm.id,\n selectedPeriod: state.farm.selectedPeriod,\n hedgerows: state.hedgerows.hedgerows,\n lock: state.farm.lock.status,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onLoad: (payload) => dispatch({ type: HEDGEROWS_LOADED, payload }),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(style)(HedgerowsSection));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\n\n//Custom Components\nimport Header from \"./Header\";\nimport HedgerowsSection from \"./HedgerowsSection\";\n\n\nclass Hedgerows extends React.Component {\n render() {\n return (\n
\n
\n \n
\n );\n }\n}\n\nexport default Hedgerows;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//UI Components\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst style = (theme) => ({\n titleContainer: {\n marginBottom: \"24px\",\n },\n});\n\nconst GhgProgramHeader = ({ classes }) => {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"ghg-program.header.title\")}\n \n \n );\n};\n\nexport default withStyles(style)(GhgProgramHeader);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//UI Components\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n width: PropTypes.string,\n\n //Provided props\n programs: PropTypes.array, // Provided by Redux\n};\n\nconst SelectProgram = ({ value, onChange, label, programs, disabled, width }) => {\n if (programs) {\n return (\n \n \n {label}\n \n \n {programs.map((item, index) => (\n \n {item.name}\n \n ))}\n \n \n );\n }\n return null;\n};\n\nSelectProgram.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n programs: state.global.programs,\n});\n\nexport default connect(mapStateToProps)(SelectProgram);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//UI Components\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n onChange: PropTypes.func.isRequired,\n baselinePeriod: PropTypes.object,\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n\n //Provided props\n periods: PropTypes.array, // Provided by Redux\n};\n\nconst SelectPeriod = ({ periods = [], onChange, baselinePeriod, label, disabled }) => {\n if (baselinePeriod !== undefined && periods.length > 0) {\n return (\n \n \n {label}\n \n \n {periods.map((item, i) => {\n return (\n \n {item.name}\n \n );\n })}\n \n \n );\n }\n return null;\n};\n\nSelectPeriod.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n periods: state.global.periods,\n});\n\nexport default connect(mapStateToProps)(SelectPeriod);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { ADD_GHG_PROGRAM, REMOVE_GHG_PROGRAM } from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//Custom\nimport profiles from \"../../../constants/profiles\";\nimport Permissions from \"../../../utils/Permissions\";\nimport DeleteConfirmation from \"../../DeleteConfirmation\";\n\n//Custom Components\nimport SelectProgram from \"./SelectProgram\";\nimport SelectPeriod from \"./SelectPeriod\";\n\n//UI Components\nimport IconButton from \"@material-ui/core/IconButton\";\nimport DeleteForever from \"@material-ui/icons/DeleteForever\";\nimport Portal from \"@material-ui/core/Portal\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Button from \"@material-ui/core/Button\";\n\nconst useStyles = makeStyles((theme) => ({\n rowContainer: {\n marginBottom: theme.spacing(1),\n },\n}));\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n ghgProgram: PropTypes.object,\n index: PropTypes.number,\n farmId: PropTypes.string.isRequired,\n\n //Provided props\n onGhgProgramCreate: PropTypes.func, // Provided by Redux\n onGhgProgramDelete: PropTypes.func, // Provided by Redux\n};\n\nconst GhgProgramRow = ({\n ghgProgram = {},\n onGhgProgramCreate,\n onGhgProgramDelete,\n index,\n farmId,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation();\n\n const [id, setId] = useState(null);\n const [program, setProgram] = useState({});\n const [baselinePeriod, setBaselinePeriod] = useState({});\n const [startPeriod, setStartPeriod] = useState(\"\");\n const [endPeriod, setEndPeriod] = useState(\"\");\n\n const [deleteOpen, setDeleteOpen] = useState(false);\n\n const permissions = new Permissions(null, null, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n profiles._ENC,\n ]);\n\n useEffect(() => {\n if (ghgProgram.id) {\n setId(ghgProgram.id);\n setProgram(ghgProgram.program);\n setStartPeriod(ghgProgram.program.start);\n setEndPeriod(ghgProgram.program.end);\n setBaselinePeriod(ghgProgram.period);\n }\n }, [ghgProgram]);\n\n const handleProgramSelection = (e) => {\n const { start, end } = e.currentTarget.dataset;\n setProgram({ id: e.target.value });\n setStartPeriod(start);\n setEndPeriod(end);\n };\n\n const handlePeriodSelection = (e) => {\n setBaselinePeriod({ id: e.target.value });\n };\n\n const handleCreate = () => {\n const reqBody = {\n ghgProgram: {\n program: {\n id: program.id,\n },\n period: {\n id: baselinePeriod.id,\n },\n },\n };\n\n const createGhgProgram = agent.Farms.GhgPrograms.create(farmId, reqBody).then(\n (res) => {\n onGhgProgramCreate(res.body.ghgProgram);\n setProgram(null);\n setBaselinePeriod(null);\n setStartPeriod(\"\");\n setEndPeriod(\"\");\n }\n );\n\n toast.promise(createGhgProgram, {\n loading: t(\"global.loading\"),\n success: t(\"ghg-program.section.notifications.program-added\"),\n error: t(\"ghg-program.section.notifications.error\"),\n });\n };\n\n const handleDeleteConfirm = () => {\n setDeleteOpen(true);\n };\n\n const handleDelete = async () => {\n const deleteGhgProgram = agent.Farms.GhgPrograms.delete(farmId, id).then((res) => {\n onGhgProgramDelete(index);\n });\n\n toast.promise(deleteGhgProgram, {\n loading: t(\"global.loading\"),\n success: t(\"ghg-program.section.notifications.program-deleted\"),\n error: t(\"ghg-program.section.notifications.error\"),\n });\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n {permissions.canEdit() &&\n (id === null ? (\n \n \n {t(\"ghg-program.section.add-button-label\")}\n \n \n ) : (\n \n \n \n ))}\n \n {\n setDeleteOpen(false);\n }}\n onConfirm={() => {\n setDeleteOpen(false);\n handleDelete();\n }}\n />\n \n \n );\n};\n\nGhgProgramRow.propTypes = propsDefinition;\n\nconst mapDispatchToProps = (dispatch) => ({\n onGhgProgramCreate: (payload) => dispatch({ type: ADD_GHG_PROGRAM, payload }),\n onGhgProgramDelete: (index) => dispatch({ type: REMOVE_GHG_PROGRAM, index }),\n});\n\nexport default connect(null, mapDispatchToProps)(GhgProgramRow);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect } from \"react\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport {\n GHG_PROGRAMS_LOADED,\n GLOBAL_PROGRAMS_LOADED,\n GLOBAL_PERIOD_LOADED,\n} from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\nimport profiles from \"../../../constants/profiles\";\n\n//Custom Components\nimport LoadingSpinner from \"../../LoadingSpinner\";\nimport GhgProgramRow from \"./GhgProgramRow\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\nconst style = (theme) => ({\n root: {\n padding: theme.spacing(2),\n marginBottom: theme.spacing(1),\n },\n});\n\nconst GhgProgramSection = (props) => {\n const {\n onGhgProgramsLoaded,\n farmId,\n onProgramsLoaded,\n ghgPrograms,\n loaded,\n classes,\n onPeriodLoaded,\n } = props;\n\n const permissions = new Permissions(null, null, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n profiles._ENC,\n ]);\n\n useEffect(() => {\n let mounted = true;\n const getGhgProgram = async () => {\n const { body } = await agent.Farms.GhgPrograms.get(farmId);\n if (mounted) {\n onGhgProgramsLoaded(body.ghgPrograms);\n }\n };\n getGhgProgram();\n return () => (mounted = false);\n }, [farmId, onGhgProgramsLoaded]);\n\n useEffect(() => {\n let mounted = true;\n const getProgramsLoaded = async () => {\n const { body } = await agent.Programs.get();\n if (mounted) {\n onProgramsLoaded(body.programs);\n }\n };\n getProgramsLoaded();\n return () => (mounted = false);\n }, [onProgramsLoaded]);\n\n useEffect(() => {\n onPeriodLoaded(agent.Periods.get());\n }, [onPeriodLoaded]);\n\n if (!loaded) {\n return (\n \n \n \n );\n }\n\n if (loaded) {\n return (\n
\n {ghgPrograms.map((ghgProgram, index) => (\n \n ))}\n {permissions.canEdit() && }\n
\n );\n }\n\n return null;\n};\n\nconst mapStateToProps = (state) => ({\n farmId: state.farm.farm.id,\n ghgPrograms: state.ghgPrograms.ghgPrograms,\n loaded: state.ghgPrograms.loaded,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onGhgProgramsLoaded: (payload) => dispatch({ type: GHG_PROGRAMS_LOADED, payload }),\n onProgramsLoaded: (payload) => dispatch({ type: GLOBAL_PROGRAMS_LOADED, payload }),\n onPeriodLoaded: (payload) =>\n dispatch({\n type: GLOBAL_PERIOD_LOADED,\n payload,\n }),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(style)(GhgProgramSection));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\n\n//Custom Components\nimport Header from \"./Header\";\nimport GhgProgramSection from \"./GhgProgramSection\";\n\n\nclass GhgProgram extends React.Component {\n render() {\n return (\n
\n
\n \n
\n );\n }\n}\n\nexport default GhgProgram;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n onCancel: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n loading: PropTypes.bool,\n};\n\nfunction ConfirmOccupation({ onCancel, onConfirm, open, loading }) {\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"land-use.section.confirm-modal.title\")}\n \n \n {t(\"land-use.section.confirm-modal.description\")}\n \n \n \n {t(\"land-use.section.confirm-modal.cancel-button-label\")}\n \n \n \n \n );\n}\n\nConfirmOccupation.propTypes = propsDefinition;\n\nexport default ConfirmOccupation;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\n\n//UI Components\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n width: PropTypes.string,\n\n //Provided props\n occupations: PropTypes.array, // Provided by Redux\n};\n\nconst SelectOccupation = ({ value, onChange, label, occupations, disabled, width }) => {\n if (occupations) {\n return (\n \n \n {label}\n \n \n {occupations.map((item, index) => (\n \n {item.name}\n \n ))}\n \n \n );\n }\n return null;\n};\n\nSelectOccupation.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n occupations: state.global.occupations,\n});\n\nexport default connect(mapStateToProps)(SelectOccupation);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { GLOBAL_OCCUPATIONS_LOADED } from \"../../../constants/actionTypes\";\n\n//API\nimport agent from \"../../../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//Notifications\nimport toast from \"react-hot-toast\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom\nimport Permissions from \"../../../utils/Permissions\";\nimport profiles from \"../../../constants/profiles\";\n\n//Custom Components\nimport ConfirmOccupation from \"./ConfirmOccupation\";\nimport SelectOccupation from \"./SelectOccupation\";\nimport FieldWithTextAdornment from \"../../FieldWithTextAdornment\";\n\n//Theme\nimport customTheme from \"../../../theme\";\n\n//UI Components\nimport FormControl from \"@material-ui/core/FormControl\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Radio from \"@material-ui/core/Radio\";\nimport Button from \"@material-ui/core/Button\";\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Portal from \"@material-ui/core/Portal\";\n\nconst style = (theme) => ({\n outlinedContainer: {\n padding: theme.spacing(2),\n marginBottom: theme.spacing(1),\n },\n underline: {\n width: \"100%\",\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\n marginBottom: theme.spacing(2),\n },\n typoMarginRight: {\n marginRight: theme.spacing(1),\n },\n typoMarginLeft: {\n marginLeft: theme.spacing(1),\n },\n valid: {\n color: theme.palette.success.main,\n marginRight: \"8px\",\n },\n invalid: {\n color: theme.palette.error.main,\n marginRight: \"8px\",\n },\n validateButton: {\n backgroundColor: theme.palette.success.dark,\n \"&:hover\": {\n backgroundColor: theme.palette.success.main,\n },\n },\n});\n\nconst propsDefinition = {\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n classes: PropTypes.object, // Provided by Redux\n selectedPeriod: PropTypes.string, // Provided by Redux\n onOccupationsLoaded: PropTypes.func, // Provided by Redux\n};\n\nconst LandOccupationSection = ({\n classes,\n farmId,\n selectedPeriod,\n onOccupationsLoaded,\n}) => {\n const { t } = useTranslation();\n\n const [id, setId] = useState(null);\n const [status, setStatus] = useState(0);\n const [changedOccupation, setChangedOccupation] = useState(null);\n const [occupation, setOccupation] = useState(null);\n const [passedYears, setPassedYears] = useState(0);\n const [quantity, setQuantity] = useState(0);\n const [confirmOpen, setConfirmOpen] = useState(false);\n const [confirmValue, setConfirmValue] = useState(null);\n const [maxYears, setMaxYears] = useState(0);\n const [lock, setLock] = useState(0);\n\n const [changed, setChanged] = useState(false);\n const [errors, setErrors] = useState([]);\n\n const permissions = new Permissions(status, lock, [\n profiles._ADM,\n profiles._AGRS,\n profiles._AGR,\n ]);\n\n const checkValidate = useCallback(() => {\n if (occupation && !occupation.id) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"occupation\",\n message: t(\"land-use.section.errors.required-occupation\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"occupation\")]);\n }\n if (!(passedYears > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"passedYears\",\n message: t(\"land-use.section.errors.required-years\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"passedYears\")]);\n }\n if (!(quantity > 0)) {\n setErrors((errors) => [\n ...errors,\n {\n field: \"quantity\",\n message: t(\"land-use.section.errors.required-area\"),\n },\n ]);\n } else {\n setErrors((errors) => [...errors.filter((item) => item.field !== \"quantity\")]);\n }\n if (!changedOccupation) {\n setErrors([]);\n }\n }, [t, occupation, passedYears, quantity, changedOccupation]);\n\n useEffect(() => {\n if (changed) {\n checkValidate();\n }\n }, [checkValidate, changed]);\n\n const handleUpdate = useCallback(() => {\n const validate = (occupation, passedYears, quantity) => {\n let error = false;\n if (changedOccupation === 1) {\n if (occupation && !occupation.id) {\n error = true;\n }\n if (!(passedYears > 0)) {\n error = true;\n }\n if (!(quantity > 0)) {\n error = true;\n }\n } else if (changedOccupation === null) {\n error = true;\n }\n return error;\n };\n\n if (!validate(occupation, passedYears, quantity)) {\n const reqBody = {\n landOccupation: {\n status,\n changedOccupation,\n occupation,\n passedYears,\n quantity,\n },\n };\n\n const updateLandOccupation = agent.Farms.LandOccupation.update(\n farmId,\n id,\n reqBody\n ).then((res) => {\n const landOccupation = res.body.landOccupation;\n setId(landOccupation.id);\n setStatus(landOccupation.status);\n setChangedOccupation(landOccupation.changedOccupation);\n setOccupation(landOccupation.occupation);\n setPassedYears(landOccupation.passedYears);\n setMaxYears(landOccupation.maxYears);\n setQuantity(landOccupation.quantity);\n setChanged(false);\n });\n\n toast.promise(updateLandOccupation, {\n loading: t(\"global.loading\"),\n success: t(\"land-use.section.notifications.occupation-saved\"),\n error: t(\"land-use.section.notifications.error\"),\n });\n }\n }, [t, farmId, id, occupation, passedYears, quantity, status, changedOccupation]);\n\n useEffect(() => {\n if (changed && id) {\n const timer = setTimeout(() => handleUpdate(), 700);\n return () => clearTimeout(timer);\n }\n }, [handleUpdate, id, changed]);\n\n useEffect(() => {\n let mounted = true;\n const getLandOccupation = async () => {\n const { body, error } = await agent.Farms.LandOccupation.get(\n farmId,\n selectedPeriod\n );\n\n if (!error && mounted) {\n const landOccupation = body.landOccupation;\n setId(landOccupation.id);\n setStatus(landOccupation.status);\n setChangedOccupation(landOccupation.changedOccupation);\n setOccupation(landOccupation.occupation);\n setPassedYears(landOccupation.passedYears);\n setMaxYears(landOccupation.maxYears);\n setQuantity(landOccupation.quantity);\n setLock(landOccupation.lock);\n }\n };\n if (selectedPeriod) {\n getLandOccupation();\n }\n return () => (mounted = false);\n }, [farmId, selectedPeriod]);\n\n useEffect(() => {\n const getOccupationsLoaded = async () => {\n const { body, error } = await agent.Occupations.get();\n\n if (!error) {\n onOccupationsLoaded(body.occupations);\n }\n };\n getOccupationsLoaded();\n }, [onOccupationsLoaded]);\n\n if (id) {\n return (\n
\n \n \n \n \n \n {t(\"land-use.section.title\")}\n \n {status === 3 ? (\n \n \n \n ) : (\n \n \n \n )}\n \n \n {permissions.canEdit() && permissions.canView() && status !== 3 && (\n 0) ||\n !(quantity > 0))\n }\n style={{ height: \"40px\" }}\n className={classes.validateButton}\n onClick={() => {\n setStatus(3);\n setChanged(true);\n }}\n data-woi='confirm-occupation-button'\n >\n \n {t(\"land-use.section.validate-button-label\")}\n \n )}\n \n \n \n {t(\"land-use.section.boolean-subtitle\")}\n \n \n {\n setChangedOccupation(parseInt(e.target.value));\n setChanged(true);\n }}\n value={\n changedOccupation !== null ? changedOccupation.toString() : null\n }\n >\n \n }\n label={\n \n {t(\"land-use.section.no\")}\n \n }\n />\n \n }\n label={\n \n {t(\"land-use.section.yes\")}\n \n }\n />\n \n {changedOccupation === null && (\n \n {t(\"land-use.section.errors.required-choice\")}\n \n )}\n \n \n \n {changedOccupation === 1 && (\n <>\n \n \n {\n const { toConfirm } = e.currentTarget.dataset;\n if (parseInt(toConfirm)) {\n setConfirmValue({ id: e.target.value });\n setConfirmOpen(true);\n } else {\n setOccupation({ id: e.target.value });\n setChanged(true);\n }\n }}\n name='occupation'\n errors={errors}\n label={t(\"land-use.section.changed-select\")}\n width='400px'\n />\n \n \n \n {t(\"land-use.section.over-time-label\")}\n \n {\n setPassedYears(\n e.target.value <= maxYears ? e.target.value : maxYears\n );\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"land-use.section.years\")}\n width='130px'\n />\n \n \n \n {t(\"land-use.section.before-%\")}\n \n {\n setQuantity(e.target.value);\n setChanged(true);\n }}\n errors={errors}\n onFocus={(event) => event.target.select()}\n adornment={t(\"land-use.section.area-adornment\")}\n width='100px'\n />\n \n {t(\"land-use.section.%-area-label\")}\n \n \n \n )}\n \n \n \n {\n setConfirmValue(null);\n setConfirmOpen(false);\n }}\n onConfirm={() => {\n setOccupation(confirmValue);\n setConfirmValue(null);\n setConfirmOpen(false);\n setChanged(true);\n }}\n open={confirmOpen}\n loading={false}\n />\n \n
\n );\n }\n return null;\n};\n\nLandOccupationSection.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n farmId: state.farm.farm.id,\n selectedPeriod: state.farm.selectedPeriod,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onOccupationsLoaded: (payload) =>\n dispatch({ type: GLOBAL_OCCUPATIONS_LOADED, payload }),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(style)(LandOccupationSection));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//UI Components\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst style = (theme) => ({\n titleContainer: {\n marginBottom: \"24px\",\n },\n});\n\nconst Header = (props) => {\n const { classes } = props;\n const { t } = useTranslation();\n\n return (\n \n \n {t(\"land-use.header.title\")}\n \n \n );\n};\n\nexport default withStyles(style)(Header);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\n\n//Custom Components\nimport LandOccupationSection from \"./LandOccupationSection\";\nimport Header from \"./Header\";\n\nclass LandOccupation extends React.Component {\n render() {\n return (\n
\n
\n \n
\n );\n }\n}\n\nexport default LandOccupation;\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { SELECT_LANGUAGE, GLOBAL_LANGUAGE_LOADED } from \"../constants/actionTypes\";\n\n//API\nimport agent from \"../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//UI Components\nimport Flag from \"react-world-flags\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\n\nconst propsDefinition = {\n //Provided props\n farmId: PropTypes.string, // Provided by Redux\n onLanguagesLoaded: PropTypes.func, // Provided by Redux\n languages: PropTypes.array, // Provided by Redux\n language: PropTypes.string, // Provided by Redux\n setSelectedLanguage: PropTypes.func, // Provided by Redux\n className: PropTypes.string, // Provided by Redux\n};\n\nconst iso3languages = {\n EN: \"GBR\",\n FR: \"FRA\",\n DE: \"DEU\",\n ES: \"ARG\",\n IT: \"ITA\",\n};\n\nconst SelectLanguage = (props) => {\n const {\n onLanguagesLoaded,\n languages,\n language,\n setSelectedLanguage,\n className,\n } = props;\n const { i18n } = useTranslation();\n\n useEffect(() => {\n const getLoadedLanguages = async () => {\n const { body, error } = await agent.Languages.get();\n\n if (!error) {\n onLanguagesLoaded(body.languages);\n }\n };\n getLoadedLanguages();\n }, [onLanguagesLoaded]);\n\n const onSelectChange = async (event) => {\n const prevLanguage = language;\n const { body, error } = await agent.Auth.Language.update({\n language: { id: event.target.value },\n });\n if (!error) {\n setSelectedLanguage(body.language.id);\n i18n.changeLanguage(body.language.id.toLowerCase());\n localStorage.setItem(\"i18nextLng\", body.language.id.toLowerCase());\n } else {\n setSelectedLanguage(prevLanguage);\n }\n };\n\n if (language !== undefined && languages && languages.length > 0) {\n return (\n \n \n \n );\n }\n return null;\n};\n\nSelectLanguage.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n languages: state.global.languages,\n language: state.common.language,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onLanguagesLoaded: (payload) =>\n dispatch({\n type: GLOBAL_LANGUAGE_LOADED,\n payload,\n }),\n setSelectedLanguage: (payload) =>\n dispatch({\n type: SELECT_LANGUAGE,\n payload,\n }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SelectLanguage);\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React, { useEffect, useState, useCallback } from \"react\";\nimport { useLocation, Link as RouterLink } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\n\n//Redux\nimport { connect } from \"react-redux\";\nimport { LOGOUT } from \"../constants/actionTypes\";\n\n//API\nimport agent from \"../agent\";\n\n//Hooks\nimport { useTranslation } from \"react-i18next\";\n\n//HOC\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Custom Components\nimport SelectLanguage from \"./SelectLanguage\";\nimport Logo from \"./Logo\";\n\n//UI Components\nimport Button from \"@material-ui/core/Button\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Breadcrumbs from \"@material-ui/core/Breadcrumbs\";\nimport NavigateNextIcon from \"@material-ui/icons/NavigateNext\";\nimport Grid from \"@material-ui/core/Grid\";\n\nconst styles = (theme) => ({\n root: {\n height: \"45px\",\n },\n logo: {\n height: \"60px\",\n },\n marginRight: {\n marginRight: \"8px\",\n },\n logout: {\n color: theme.palette.error.main,\n },\n});\n\nconst propsDefinition = {\n //Required attributes to be defined in the implementation\n logout: PropTypes.func.isRequired,\n\n //Provided props\n farm: PropTypes.object, // Provided by Redux\n classes: PropTypes.object, // Provided by Material Ui Style\n};\n\nconst Header = ({ classes, farm, logout }) => {\n const location = useLocation();\n const [crumbs, setCrumbs] = useState([]);\n const { t, i18n } = useTranslation();\n\n const generateCrumbs = useCallback(\n (routeArr, farm) => {\n if (farm) {\n let uri = \"\";\n return routeArr.map((item, index) => {\n let label = t(\"header.home\");\n switch (index) {\n case 0:\n label = null;\n break;\n case 1:\n uri = \"/\";\n break;\n case 2:\n if (item === \"new\") {\n label = t(\"header.new-profile\");\n } else if (item >= 0) {\n label = `${farm.lastName} ${farm.firstName}`;\n }\n uri = uri + \"farm/\" + item + \"/dashboard\";\n break;\n case 3:\n if (item === \"crop\") {\n label = t(\"header.crop\");\n } else if (item === \"equipments\") {\n label = t(\"header.equipments\");\n } else if (item === \"purchases\") {\n label = t(\"header.purchases\");\n } else if (item === \"land\") {\n label = t(\"header.land\");\n } else if (item === \"program\") {\n label = t(\"header.program\");\n } else if (item === \"hedgerows\") {\n label = t(\"header.hedgerows\");\n } else if (item === \"occupation\") {\n label = t(\"header.occupation\");\n } else if (item === \"dashboard\") {\n label = null;\n }\n uri = uri + \"/\" + item;\n break;\n default:\n break;\n }\n if (\n index < routeArr.length - 1 &&\n index >= 1 &&\n label &&\n routeArr[index + 1] !== \"dashboard\"\n ) {\n return (\n \n {label}\n \n );\n } else if (label) {\n return (\n \n {label}\n \n );\n }\n return null;\n });\n }\n },\n [t]\n );\n\n useEffect(() => {\n const routeArr = location.pathname.split(\"/\");\n const crumbs = generateCrumbs(routeArr, farm);\n setCrumbs(crumbs);\n }, [location, farm, generateCrumbs]);\n\n const handleLogout = async () => {\n const { error } = await agent.Auth.logout();\n\n if (!error) {\n logout();\n i18n.changeLanguage(navigator.language);\n }\n };\n\n if (\n location.pathname.split(\"/\")[1] === \"farm\" &&\n location.pathname.split(\"/\")[2] !== \"new\"\n ? farm && location.pathname.split(\"/\")[2] === farm.id\n : true\n ) {\n return (\n \n \n \n \n \n \n }\n aria-label='breadcrumb'\n >\n {crumbs}\n \n \n \n \n \n Logout\n \n \n \n \n );\n }\n return null;\n};\n\nHeader.propTypes = propsDefinition;\n\nconst mapStateToProps = (state) => ({\n pathname: state.router.location.pathname,\n farm: state.farm.farm,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n logout: () => dispatch({ type: LOGOUT }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Header));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport React from \"react\";\n\nimport { Route, Switch, Redirect } from \"react-router-dom\";\nimport { push } from \"connected-react-router\";\nimport { hotjar } from \"react-hotjar\";\n\n//Timezone and Calendar\nimport moment from \"moment\";\nimport MomentUtils from \"@date-io/moment\";\nimport \"moment/min/locales.min\";\n\n//Redux\nimport { store } from \"../store\";\nimport { connect } from \"react-redux\";\nimport { APP_LOAD, REDIRECT, LOGOUT } from \"../constants/actionTypes\";\n\n//API\nimport agent from \"../agent\";\n\n//HOC\nimport { withTranslation } from \"react-i18next\";\n\n//Custom Components\nimport Home from \"../components/Home\";\nimport Login from \"../components/Login\";\nimport Dashboard from \"../components/Dashboard\";\nimport Crop from \"../components/Crop\";\nimport Equipments from \"./Equipments\";\nimport Land from \"../components/Land\";\nimport Purchases from \"../components/Purchases\";\nimport Hedgerows from \"../components/Hedgerows\";\nimport GhgProgram from \"../components/GhgProgram\";\nimport LandOccupation from \"../components/LandOccupation\";\nimport Header from \"./Header\";\nimport LoadingSpinner from \"./LoadingSpinner\";\n\n//Theme\nimport customTheme from \"../theme\";\nimport \"fontsource-roboto/latin-500-normal.css\";\n\n//UI Components\nimport { ThemeProvider } from \"@material-ui/core/styles\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport Container from \"@material-ui/core/Container\";\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\n\nclass App extends React.Component {\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.redirectTo) {\n store.dispatch(push(nextProps.redirectTo));\n this.props.onRedirect();\n }\n }\n\n UNSAFE_componentWillMount() {\n try {\n const token = window.localStorage.getItem(\"sessionToken\");\n if (token) {\n agent.setToken(token);\n }\n\n this.props.onLoad(token ? agent.Auth.session() : null, token);\n } catch (e) {\n this.props.onLoad(null, null);\n }\n hotjar.initialize(2360184, 6);\n }\n\n render() {\n const PrivateRoute = ({ isLoggedIn, ...props }) => {\n return isLoggedIn ? (\n props.computedMatch.params.farmId ? (\n \n ) : (\n \n )\n ) : (\n \n );\n };\n\n const FarmRoute = ({ ...props }) => {\n return props.computedMatch.params.farmId === this.props.selectedFarm ||\n props.computedMatch.params.farmId === \"new\" ? (\n \n ) : (\n \n );\n };\n\n if (this.props.appLoaded) {\n return (\n \n \n \n \n {this.props.currentUser ?
: \"\"}\n\n \n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n \n \n \n \n \n );\n }\n return (\n \n \n \n );\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n appLoaded: state.common.appLoaded,\n appName: state.common.appName,\n currentUser: state.common.currentUser,\n language: state.common.language,\n redirectTo: state.common.redirectTo,\n selectedFarm: state.common.selectedFarm,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n onLoad: (payload, token) =>\n dispatch({ type: APP_LOAD, payload, token, skipTracking: true }),\n onRedirect: () => dispatch({ type: REDIRECT }),\n logout: () => dispatch({ type: LOGOUT }),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withTranslation()(App));\n","/* Copyright (C) 2020 Soil Capital Belgium SPRL - All Rights Reserved */\nimport ReactDOM from \"react-dom\";\nimport { Provider } from \"react-redux\";\nimport React from \"react\";\nimport { store, history } from \"./store\";\nimport customTheme from \"./theme\";\n\nimport \"./i18n\";\n\n//Notifications\nimport { Toaster } from \"react-hot-toast\";\n\nimport { Route, Switch } from \"react-router-dom\";\nimport { ConnectedRouter } from \"connected-react-router\";\n\nimport App from \"./components/App\";\n\nimport { IntercomProvider } from \"react-use-intercom\";\n\nconst INTERCOM_APP_ID = \"h8vjcs8y\";\n\nstore.subscribe(() => {\n window.localStorage.setItem(\"reduxState\", JSON.stringify(store.getState()));\n});\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n \n ,\n\n document.getElementById(\"root\")\n);\n"],"sourceRoot":""}