Skip to content
This repository has been archived by the owner on Sep 16, 2024. It is now read-only.

Commit

Permalink
chore: Bb 214 implement export new calculation (#232)
Browse files Browse the repository at this point in the history
* Add template nmp, empty nmp file

* Save empty file to localStorage on New calc

* Renamed emptyNMP/templateNMP

* Rename templateNMP

* FARM_DETAILS Constant and Stringify
  • Loading branch information
GDamaso authored Jul 4, 2024
1 parent 538f8f8 commit a71fefd
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 8 deletions.
5 changes: 5 additions & 0 deletions frontend/src/Constants/Names.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
const Names = {
FARM_DETAILS: 'farmDetails',
};

export default Names;
40 changes: 40 additions & 0 deletions frontend/src/Constants/templateNMP.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
const templateNMP = {
farmDetails: {
Year: '',
FarmName: '',
FarmRegion: 21,
FarmSubRegion: null,
SoilTests: null,
TestingMethod: '11',
Manure: null,
HasSelectedFarmType: true,
ImportsManureCompost: true,
HasAnimals: false,
HasDairyCows: false,
HasBeefCows: false,
HasPoultry: false,
HasMixedLiveStock: false,
HasHorticulturalCrops: true,
HasBerries: true,
LeafTests: null,
LeafTestingMethod: '0',
UserJourney: 7,
},
unsaved: false,
years: [
{
Year: '',
Fields: [],
FarmAnimals: [],
FarmManures: [],
GeneratedManures: [],
ImportedManures: [],
SeparatedSolidManures: [],
ManureStorageSystems: [],
},
],
LastAppliedFarmManureId: null,
NMPReleaseVersion: 3,
};

export default templateNMP;
4 changes: 2 additions & 2 deletions frontend/src/Views/Export/ExportPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@
* @desc Export page for downloading your work in nmp format
* @author @GDamaso
*/

import Button from '@Commons/Button/Button.tsx';
import { Link } from 'react-router-dom';
import MainPageHeader from '@Commons/MainPageHeader/MainPageHeader.tsx';
import MainPageFooter from '@Commons/MainPageFooter/MainPageFooter.tsx';
import { FC } from 'react';
import CustomLink from '@Commons/CustomLink/CustomLink.tsx';
import Names from '@Constants/Names.ts';
import { StyledContent, StyledLandingContainer } from './ExportPage.styles.ts';

const ExportPage: FC = () => {
const downloadFile = () => {
const nmpString = localStorage.getItem('farmDetails');
const nmpString = localStorage.getItem(Names.FARM_DETAILS);
const nmpJSON = nmpString && JSON.parse(nmpString);
const nmpBlob = nmpString && new Blob([nmpString], { type: 'application/json' });
const nmpUrl = nmpBlob && URL.createObjectURL(nmpBlob);
Expand Down
8 changes: 6 additions & 2 deletions frontend/src/Views/LandingPage/LandingPage.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import Button from '@Commons/Button/Button.tsx';
import templateNMP from '@Constants/templateNMP.ts';
import Names from '@Constants/Names.ts';
import {
StyledContent,
StyledButtonGroup,
Expand All @@ -12,7 +14,8 @@ const LandingPage = () => {
if (upload) upload.click();
};

const isValidFile = (file: File): boolean => file.type === 'application/json' || file.name.endsWith('.nmp');
const isValidFile = (file: File): boolean =>
file.type === 'application/json' || file.name.endsWith('.nmp');

const saveFile = (e: any) => {
const file = e.target.files[0];
Expand All @@ -26,13 +29,14 @@ const LandingPage = () => {

fr.onload = () => {
const data = fr.result;
if (data) localStorage.setItem('farmDetails', data.toString());
if (data) localStorage.setItem(Names.FARM_DETAILS, JSON.stringify(data));
};
window.location.href = '/main';
};

const newCalcHandler = () => {
localStorage.clear();
localStorage.setItem(Names.FARM_DETAILS, JSON.stringify(templateNMP));
window.location.href = '/main';
};

Expand Down
7 changes: 3 additions & 4 deletions frontend/src/Views/MainPage/MainPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import InputModuleInterface from 'src/Interface/InputModuleinterface';
import FarmDetailsInterface from 'src/Interface/FarmDetailsInterface';
import * as InputModules from '@Commons/Forms/InputModules/index';
import initialFarmDetails from '@Constants/InitialFarmDetails';
import Names from '@Constants/Names';
import FieldDetailInterface from 'src/Interface/FieldDetailsInterface';
import nmpInterface from 'src/Interface/nmpInterface';
import { StyledMain, StyledMainContainer } from './MainPage.styles';
Expand All @@ -25,7 +26,7 @@ const mockBerriesWorkflow: InputModuleInterface[] = [
];

const getLocalDetails = () => {
const nmpString = localStorage.getItem('farmDetails');
const nmpString = localStorage.getItem(Names.FARM_DETAILS);
try {
if (nmpString) return JSON.parse(nmpString);
} catch (err) {
Expand Down Expand Up @@ -85,7 +86,7 @@ const MainPage: React.FC = () => {

useEffect(() => {
if (localDetails) {
localStorage.setItem('farmDetails', JSON.stringify(localDetails));
localStorage.setItem(Names.FARM_DETAILS, JSON.stringify(localDetails));
}
}, [localDetails]);

Expand Down Expand Up @@ -114,14 +115,12 @@ const MainPage: React.FC = () => {
}
break;
default:
console.log('default');
if (cmd && Object.keys(InputModules).includes(cmd)) {
moduleID = cmd;
}
break;
}
const updatedStates = formStates.map((module: InputModuleInterface) => {
console.log('moduleID: ', moduleID, 'Second: ', secondModuleID);
if (module.id === moduleID || module.id === secondModuleID) {
return {
...module,
Expand Down

0 comments on commit a71fefd

Please sign in to comment.