moved all of the libracart suff from the old frontend into the new new, also added libracart as an option alongside jd and cnh to skip the auth0 callback when redirected back to us from there
This commit is contained in:
parent
67cafbe2ed
commit
a0a54bee2a
14 changed files with 528 additions and 12 deletions
|
|
@ -20,7 +20,7 @@ import PageContainer from "./PageContainer";
|
|||
export default function CNHi() {
|
||||
const [currentOrg, setCurrentOrg] = useState("");
|
||||
const cnhiAPI = useCNHiProxyAPI();
|
||||
const [organizations, setOrganizations] = useState<Map<string, pond.JDAccount>>(new Map());
|
||||
const [organizations, setOrganizations] = useState<Map<string, pond.CNHiAccount>>(new Map());
|
||||
const [fieldAccordion, setFieldAccordion] = useState(false);
|
||||
const [dataOptions, setDataOptions] = useState<pond.DataOption[]>([]);
|
||||
const [{ as }] = useGlobalState();
|
||||
|
|
|
|||
148
src/pages/LibraCart.tsx
Normal file
148
src/pages/LibraCart.tsx
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
import {
|
||||
Accordion,
|
||||
AccordionDetails,
|
||||
AccordionSummary,
|
||||
Box,
|
||||
Button,
|
||||
Checkbox,
|
||||
FormControlLabel,
|
||||
Grid2 as Grid,
|
||||
MenuItem,
|
||||
Select
|
||||
} from "@mui/material";
|
||||
import { ExpandMore } from "@mui/icons-material";
|
||||
import LibraCartAccess from "integrations/LibraCart/LibraCartAccess";
|
||||
import { pond } from "protobuf-ts/pond";
|
||||
import { useGlobalState } from "providers";
|
||||
import { useLibraCartProxyAPI } from "providers/pond/libracartProxyAPI";
|
||||
import React, { useEffect, useState } from "react";
|
||||
import PageContainer from "./PageContainer";
|
||||
|
||||
export default function LibraCart() {
|
||||
const [currentOrg, setCurrentOrg] = useState("");
|
||||
const libracartAPI = useLibraCartProxyAPI();
|
||||
const [organizations, setOrganizations] = useState<Map<string, pond.LibraCartAccount>>(new Map());
|
||||
const [fieldAccordion, setFieldAccordion] = useState(false);
|
||||
const [dataOptions, setDataOptions] = useState<pond.DataOption[]>([]);
|
||||
const [{ as }] = useGlobalState();
|
||||
|
||||
//load organizations for the user
|
||||
useEffect(() => {
|
||||
setCurrentOrg("");
|
||||
libracartAPI
|
||||
.listAccounts(0, 0, as)
|
||||
.then(resp => {
|
||||
let tempOrgs: Map<string, pond.JDAccount> = new Map();
|
||||
resp.data.accounts.forEach(org => {
|
||||
let organization = pond.JDAccount.fromObject(org);
|
||||
tempOrgs.set(organization.key, organization);
|
||||
});
|
||||
setOrganizations(tempOrgs);
|
||||
})
|
||||
.catch(err => {});
|
||||
}, [libracartAPI, as]);
|
||||
|
||||
useEffect(() => {
|
||||
let organization = organizations.get(currentOrg);
|
||||
if (organization) {
|
||||
let currentOptions: pond.DataOption[] = organization.options ?? [];
|
||||
setDataOptions(currentOptions);
|
||||
}
|
||||
}, [currentOrg, organizations]);
|
||||
|
||||
const updateOrgData = (checked: boolean, option: pond.DataOption) => {
|
||||
let currentOps: pond.DataOption[] = dataOptions;
|
||||
if (checked && !currentOps.includes(option)) {
|
||||
currentOps.push(option);
|
||||
} else if (!checked && currentOps.includes(option)) {
|
||||
currentOps.splice(currentOps.indexOf(option), 1);
|
||||
}
|
||||
setDataOptions([...currentOps]);
|
||||
};
|
||||
|
||||
const submit = () => {
|
||||
libracartAPI.updateAccount(currentOrg, dataOptions, as ?? undefined).then(resp => {
|
||||
//update the organization in the map to have the correct dataOptions
|
||||
let org = organizations.get(currentOrg);
|
||||
if (org) {
|
||||
org.options = dataOptions;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const fieldOptions = () => {
|
||||
return (
|
||||
<React.Fragment>
|
||||
<Accordion
|
||||
expanded={fieldAccordion}
|
||||
onChange={(_, expanded) => {
|
||||
setFieldAccordion(expanded);
|
||||
}}>
|
||||
<AccordionSummary expandIcon={<ExpandMore />}>Field Data</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Grid container direction="row" spacing={2} alignItems="center" alignContent="center">
|
||||
<Grid size={6}>
|
||||
<FormControlLabel
|
||||
label="Field Boundaries"
|
||||
control={
|
||||
<Checkbox
|
||||
checked={dataOptions.includes(pond.DataOption.DATA_OPTION_FIELDS)}
|
||||
onChange={(_, checked) => {
|
||||
//setFields(!fields);
|
||||
updateOrgData(checked, pond.DataOption.DATA_OPTION_FIELDS);
|
||||
}}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid size={6}>
|
||||
View your data from Libra Cart on your visual Farm
|
||||
</Grid>
|
||||
</Grid>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</React.Fragment>
|
||||
);
|
||||
};
|
||||
return (
|
||||
<PageContainer>
|
||||
<LibraCartAccess />
|
||||
<Grid
|
||||
container
|
||||
direction="row"
|
||||
justifyContent="space-between"
|
||||
alignContent="center"
|
||||
alignItems="center"
|
||||
style={{ padding: 10 }}>
|
||||
<Grid>
|
||||
<Select
|
||||
//style={{ maxWidth: 110 }}
|
||||
title="John Deer Account"
|
||||
displayEmpty
|
||||
disableUnderline={true}
|
||||
value={currentOrg}
|
||||
onChange={(event: any) => {
|
||||
setCurrentOrg(event.target.value);
|
||||
}}>
|
||||
<MenuItem key={""} value={""}>
|
||||
Select account to adjust accessable data
|
||||
</MenuItem>
|
||||
{Array.from(organizations.values()).map(org => {
|
||||
return (
|
||||
<MenuItem key={org.key} value={org.key}>
|
||||
{org.username}
|
||||
</MenuItem>
|
||||
);
|
||||
})}
|
||||
</Select>
|
||||
</Grid>
|
||||
<Grid>
|
||||
<Button onClick={submit} variant="contained" color="primary">
|
||||
Update
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Box style={{ padding: 10 }}>{fieldOptions()}</Box>
|
||||
</PageContainer>
|
||||
);
|
||||
}
|
||||
|
|
@ -214,7 +214,7 @@ export default function TeamPage() {
|
|||
}
|
||||
|
||||
return (
|
||||
<PageContainer padding={isMobile ? 0 : 2}>
|
||||
<PageContainer spacing={isMobile ? 0 : 2}>
|
||||
<Box className={classes.container}>
|
||||
<Box className={classes.leftBox}>
|
||||
{title()}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue