Merge branch 'libracart' into 'dev_environment'
minor updates See merge request brandx/bxt-app!2
This commit is contained in:
commit
27a8cc35e4
4 changed files with 247 additions and 95 deletions
|
|
@ -6,7 +6,7 @@ import {
|
||||||
DialogActions,
|
DialogActions,
|
||||||
DialogContent,
|
DialogContent,
|
||||||
DialogTitle,
|
DialogTitle,
|
||||||
Grid,
|
Grid2 as Grid,
|
||||||
InputAdornment,
|
InputAdornment,
|
||||||
MenuItem,
|
MenuItem,
|
||||||
Slider,
|
Slider,
|
||||||
|
|
@ -19,7 +19,7 @@ import { DevicePreset } from "models/DevicePreset";
|
||||||
import { ObjectTypeString } from "objects/ObjectDescriber";
|
import { ObjectTypeString } from "objects/ObjectDescriber";
|
||||||
import { pond } from "protobuf-ts/pond";
|
import { pond } from "protobuf-ts/pond";
|
||||||
import { useSnackbar } from "providers";
|
import { useSnackbar } from "providers";
|
||||||
// import { useDevicePresetAPI } from "providers/pond/devicePresetAPI";
|
import { useDevicePresetAPI } from "providers/pond/devicePresetAPI";
|
||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { getTemperatureUnit } from "utils";
|
import { getTemperatureUnit } from "utils";
|
||||||
|
|
||||||
|
|
@ -43,7 +43,7 @@ export default function DevicePresetCard(props: Props) {
|
||||||
removeCallback,
|
removeCallback,
|
||||||
updateCallback
|
updateCallback
|
||||||
} = props;
|
} = props;
|
||||||
// const devicePresetAPI = useDevicePresetAPI();
|
const devicePresetAPI = useDevicePresetAPI();
|
||||||
const [presetName, setPresetName] = useState("");
|
const [presetName, setPresetName] = useState("");
|
||||||
const [presetType, setPresetType] = useState<pond.PresetType>(1);
|
const [presetType, setPresetType] = useState<pond.PresetType>(1);
|
||||||
const [controllerType, setControllerType] = useState<pond.ControllerType>(1);
|
const [controllerType, setControllerType] = useState<pond.ControllerType>(1);
|
||||||
|
|
@ -81,22 +81,22 @@ export default function DevicePresetCard(props: Props) {
|
||||||
p.settings.temperature = tempC;
|
p.settings.temperature = tempC;
|
||||||
p.settings.humidity = hum;
|
p.settings.humidity = hum;
|
||||||
|
|
||||||
// devicePresetAPI
|
devicePresetAPI
|
||||||
// .addDevicePreset(p.name, p.settings, objectKey, typestring)
|
.addDevicePreset(p.name, p.settings, objectKey, typestring)
|
||||||
// .then(resp => {
|
.then(resp => {
|
||||||
// //get the temp key from the preset
|
//get the temp key from the preset
|
||||||
// let temp = p.key;
|
let temp = p.key;
|
||||||
// //update the key in the preset with the key that came back from the add
|
//update the key in the preset with the key that came back from the add
|
||||||
// p.key = resp.data.key;
|
p.key = resp.data.key;
|
||||||
// //use the callback function passing in the preset and the temp key
|
//use the callback function passing in the preset and the temp key
|
||||||
// if (addCallback) {
|
if (addCallback) {
|
||||||
// addCallback(p, temp);
|
addCallback(p, temp);
|
||||||
// }
|
}
|
||||||
// openSnack("New preset saved");
|
openSnack("New preset saved");
|
||||||
// })
|
})
|
||||||
// .catch(err => {
|
.catch(err => {
|
||||||
// openSnack("Failed to save new preset");
|
openSnack("Failed to save new preset");
|
||||||
// });
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const updatePreset = () => {
|
const updatePreset = () => {
|
||||||
|
|
@ -108,32 +108,32 @@ export default function DevicePresetCard(props: Props) {
|
||||||
newPreset.settings.temperature = tempC;
|
newPreset.settings.temperature = tempC;
|
||||||
newPreset.settings.humidity = hum;
|
newPreset.settings.humidity = hum;
|
||||||
|
|
||||||
// devicePresetAPI
|
devicePresetAPI
|
||||||
// .updateDevicePreset(newPreset.key, newPreset.name, newPreset.settings)
|
.updateDevicePreset(newPreset.key, newPreset.name, newPreset.settings)
|
||||||
// .then(resp => {
|
.then(resp => {
|
||||||
// if (updateCallback) {
|
if (updateCallback) {
|
||||||
// updateCallback(oldPreset, newPreset);
|
updateCallback(oldPreset, newPreset);
|
||||||
// }
|
}
|
||||||
// openSnack("Preset Updated");
|
openSnack("Preset Updated");
|
||||||
// })
|
})
|
||||||
// .catch(err => {
|
.catch(err => {
|
||||||
// openSnack("There was a problem updating the preset");
|
openSnack("There was a problem updating the preset");
|
||||||
// });
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const removePreset = () => {
|
const removePreset = () => {
|
||||||
// devicePresetAPI
|
devicePresetAPI
|
||||||
// .removeDevicePreset(preset.key)
|
.removeDevicePreset(preset.key)
|
||||||
// .then(resp => {
|
.then(resp => {
|
||||||
// openSnack("Preset has been deleted");
|
openSnack("Preset has been deleted");
|
||||||
// setOpenDeleteConfirmation(false);
|
setOpenDeleteConfirmation(false);
|
||||||
// if (removeCallback) {
|
if (removeCallback) {
|
||||||
// removeCallback(preset);
|
removeCallback(preset);
|
||||||
// }
|
}
|
||||||
// })
|
})
|
||||||
// .catch(err => {
|
.catch(err => {
|
||||||
// openSnack("There was a problem deleting this preset");
|
openSnack("There was a problem deleting this preset");
|
||||||
// });
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const deleteConfirmation = () => {
|
const deleteConfirmation = () => {
|
||||||
|
|
@ -192,7 +192,7 @@ export default function DevicePresetCard(props: Props) {
|
||||||
<Card raised style={{ padding: 10, width: "100%" }}>
|
<Card raised style={{ padding: 10, width: "100%" }}>
|
||||||
{deleteConfirmation()}
|
{deleteConfirmation()}
|
||||||
<Grid container direction="row" alignContent="center" alignItems="center">
|
<Grid container direction="row" alignContent="center" alignItems="center">
|
||||||
<Grid item xs={12} sm={6}>
|
<Grid size={{xs:12, sm:6}}>
|
||||||
<TextField
|
<TextField
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
margin="normal"
|
margin="normal"
|
||||||
|
|
@ -203,7 +203,7 @@ export default function DevicePresetCard(props: Props) {
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12} sm={6}>
|
<Grid size={{xs:12, sm:6}}>
|
||||||
{presetType !== pond.PresetType.PRESET_TYPE_UNKNOWN &&
|
{presetType !== pond.PresetType.PRESET_TYPE_UNKNOWN &&
|
||||||
controllerType !== pond.ControllerType.CONTROLLER_TYPE_UNKNOWN && (
|
controllerType !== pond.ControllerType.CONTROLLER_TYPE_UNKNOWN && (
|
||||||
<Box paddingLeft={2}>
|
<Box paddingLeft={2}>
|
||||||
|
|
@ -216,7 +216,7 @@ export default function DevicePresetCard(props: Props) {
|
||||||
</Box>
|
</Box>
|
||||||
)}
|
)}
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={6}>
|
<Grid size={6}>
|
||||||
{/* type */}
|
{/* type */}
|
||||||
<TextField
|
<TextField
|
||||||
style={{ width: "100%", marginRight: 5 }}
|
style={{ width: "100%", marginRight: 5 }}
|
||||||
|
|
@ -250,7 +250,7 @@ export default function DevicePresetCard(props: Props) {
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</TextField>
|
</TextField>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={6}>
|
<Grid size={6}>
|
||||||
{/* controller type */}
|
{/* controller type */}
|
||||||
<TextField
|
<TextField
|
||||||
style={{ width: "100%", marginLeft: 5 }}
|
style={{ width: "100%", marginLeft: 5 }}
|
||||||
|
|
@ -281,7 +281,7 @@ export default function DevicePresetCard(props: Props) {
|
||||||
</Grid>
|
</Grid>
|
||||||
{/* temp slider */}
|
{/* temp slider */}
|
||||||
{isMobile ? (
|
{isMobile ? (
|
||||||
<Grid item xs={12}>
|
<Grid size={12}>
|
||||||
<Box
|
<Box
|
||||||
display="flex"
|
display="flex"
|
||||||
alignContent="center"
|
alignContent="center"
|
||||||
|
|
@ -338,10 +338,10 @@ export default function DevicePresetCard(props: Props) {
|
||||||
</Grid>
|
</Grid>
|
||||||
) : (
|
) : (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<Grid item xs={2}>
|
<Grid size={2}>
|
||||||
<Typography>Temperature</Typography>
|
<Typography>Temperature</Typography>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={7}>
|
<Grid size={7}>
|
||||||
<Box paddingRight={2}>
|
<Box paddingRight={2}>
|
||||||
<Slider
|
<Slider
|
||||||
//orientation="vertical"
|
//orientation="vertical"
|
||||||
|
|
@ -362,7 +362,7 @@ export default function DevicePresetCard(props: Props) {
|
||||||
/>
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={3}>
|
<Grid size={3}>
|
||||||
<TextField
|
<TextField
|
||||||
style={{ width: "100%" }}
|
style={{ width: "100%" }}
|
||||||
margin="dense"
|
margin="dense"
|
||||||
|
|
@ -395,7 +395,7 @@ export default function DevicePresetCard(props: Props) {
|
||||||
)}
|
)}
|
||||||
{/* humidity slider */}
|
{/* humidity slider */}
|
||||||
{isMobile ? (
|
{isMobile ? (
|
||||||
<Grid item xs={12}>
|
<Grid size={12}>
|
||||||
<Box
|
<Box
|
||||||
display="flex"
|
display="flex"
|
||||||
alignContent="center"
|
alignContent="center"
|
||||||
|
|
@ -437,10 +437,10 @@ export default function DevicePresetCard(props: Props) {
|
||||||
</Grid>
|
</Grid>
|
||||||
) : (
|
) : (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<Grid item xs={2}>
|
<Grid size={2}>
|
||||||
<Typography>Humidity</Typography>
|
<Typography>Humidity</Typography>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={7}>
|
<Grid size={7}>
|
||||||
<Box paddingRight={2}>
|
<Box paddingRight={2}>
|
||||||
<Slider
|
<Slider
|
||||||
//orientation="vertical"
|
//orientation="vertical"
|
||||||
|
|
@ -456,7 +456,7 @@ export default function DevicePresetCard(props: Props) {
|
||||||
/>
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={3}>
|
<Grid size={3}>
|
||||||
<TextField
|
<TextField
|
||||||
style={{ width: "100%" }}
|
style={{ width: "100%" }}
|
||||||
margin="dense"
|
margin="dense"
|
||||||
|
|
|
||||||
|
|
@ -32,9 +32,9 @@ export default function LibraCart() {
|
||||||
libracartAPI
|
libracartAPI
|
||||||
.listAccounts(0, 0, as)
|
.listAccounts(0, 0, as)
|
||||||
.then(resp => {
|
.then(resp => {
|
||||||
let tempOrgs: Map<string, pond.JDAccount> = new Map();
|
let tempOrgs: Map<string, pond.LibraCartAccount> = new Map();
|
||||||
resp.data.accounts.forEach(org => {
|
resp.data.accounts.forEach(org => {
|
||||||
let organization = pond.JDAccount.fromObject(org);
|
let organization = pond.LibraCartAccount.fromObject(org);
|
||||||
tempOrgs.set(organization.key, organization);
|
tempOrgs.set(organization.key, organization);
|
||||||
});
|
});
|
||||||
setOrganizations(tempOrgs);
|
setOrganizations(tempOrgs);
|
||||||
|
|
@ -70,40 +70,40 @@ export default function LibraCart() {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const fieldOptions = () => {
|
// const fieldOptions = () => {
|
||||||
return (
|
// return (
|
||||||
<React.Fragment>
|
// <React.Fragment>
|
||||||
<Accordion
|
// <Accordion
|
||||||
expanded={fieldAccordion}
|
// expanded={fieldAccordion}
|
||||||
onChange={(_, expanded) => {
|
// onChange={(_, expanded) => {
|
||||||
setFieldAccordion(expanded);
|
// setFieldAccordion(expanded);
|
||||||
}}>
|
// }}>
|
||||||
<AccordionSummary expandIcon={<ExpandMore />}>Field Data</AccordionSummary>
|
// <AccordionSummary expandIcon={<ExpandMore />}>Field Data</AccordionSummary>
|
||||||
<AccordionDetails>
|
// <AccordionDetails>
|
||||||
<Grid container direction="row" spacing={2} alignItems="center" alignContent="center">
|
// <Grid container direction="row" spacing={2} alignItems="center" alignContent="center">
|
||||||
<Grid size={6}>
|
// <Grid size={6}>
|
||||||
<FormControlLabel
|
// <FormControlLabel
|
||||||
label="Field Boundaries"
|
// label="Field Boundaries"
|
||||||
control={
|
// control={
|
||||||
<Checkbox
|
// <Checkbox
|
||||||
checked={dataOptions.includes(pond.DataOption.DATA_OPTION_FIELDS)}
|
// checked={dataOptions.includes(pond.DataOption.DATA_OPTION_FIELDS)}
|
||||||
onChange={(_, checked) => {
|
// onChange={(_, checked) => {
|
||||||
//setFields(!fields);
|
// //setFields(!fields);
|
||||||
updateOrgData(checked, pond.DataOption.DATA_OPTION_FIELDS);
|
// updateOrgData(checked, pond.DataOption.DATA_OPTION_FIELDS);
|
||||||
}}
|
// }}
|
||||||
/>
|
// />
|
||||||
}
|
// }
|
||||||
/>
|
// />
|
||||||
</Grid>
|
// </Grid>
|
||||||
<Grid size={6}>
|
// <Grid size={6}>
|
||||||
View your data from Libra Cart on your visual Farm
|
// View your data from Libra Cart
|
||||||
</Grid>
|
// </Grid>
|
||||||
</Grid>
|
// </Grid>
|
||||||
</AccordionDetails>
|
// </AccordionDetails>
|
||||||
</Accordion>
|
// </Accordion>
|
||||||
</React.Fragment>
|
// </React.Fragment>
|
||||||
);
|
// );
|
||||||
};
|
// };
|
||||||
return (
|
return (
|
||||||
<PageContainer>
|
<PageContainer>
|
||||||
<LibraCartAccess />
|
<LibraCartAccess />
|
||||||
|
|
@ -117,7 +117,7 @@ export default function LibraCart() {
|
||||||
<Grid>
|
<Grid>
|
||||||
<Select
|
<Select
|
||||||
//style={{ maxWidth: 110 }}
|
//style={{ maxWidth: 110 }}
|
||||||
title="John Deer Account"
|
title="LibraCart Account"
|
||||||
displayEmpty
|
displayEmpty
|
||||||
disableUnderline={true}
|
disableUnderline={true}
|
||||||
value={currentOrg}
|
value={currentOrg}
|
||||||
|
|
@ -136,13 +136,13 @@ export default function LibraCart() {
|
||||||
})}
|
})}
|
||||||
</Select>
|
</Select>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid>
|
{/* <Grid>
|
||||||
<Button onClick={submit} variant="contained" color="primary">
|
<Button onClick={submit} variant="contained" color="primary">
|
||||||
Update
|
Update
|
||||||
</Button>
|
</Button>
|
||||||
|
</Grid> */}
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
{/* <Box style={{ padding: 10 }}>{fieldOptions()}</Box> */}
|
||||||
<Box style={{ padding: 10 }}>{fieldOptions()}</Box>
|
|
||||||
</PageContainer>
|
</PageContainer>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
150
src/providers/pond/devicePresetAPI.tsx
Normal file
150
src/providers/pond/devicePresetAPI.tsx
Normal file
|
|
@ -0,0 +1,150 @@
|
||||||
|
import { useHTTP } from "hooks";
|
||||||
|
import { createContext, PropsWithChildren, useContext } from "react";
|
||||||
|
import { pond } from "protobuf-ts/pond";
|
||||||
|
import { pondURL } from "./pond";
|
||||||
|
import { AxiosResponse } from "axios";
|
||||||
|
import { useGlobalState } from "providers";
|
||||||
|
|
||||||
|
export interface IDevicePresetInterface {
|
||||||
|
//add
|
||||||
|
addDevicePreset: (
|
||||||
|
name: string,
|
||||||
|
settings: pond.DevicePresetSettings,
|
||||||
|
parentKey?: string,
|
||||||
|
parentTypes?: string
|
||||||
|
) => Promise<AxiosResponse<pond.AddDevicePresetResponse>>;
|
||||||
|
//list
|
||||||
|
listDevicePresets: (
|
||||||
|
limit: number,
|
||||||
|
offset: number,
|
||||||
|
order?: "asc" | "desc",
|
||||||
|
orderBy?: string,
|
||||||
|
search?: string,
|
||||||
|
keys?: string[],
|
||||||
|
types?: string[]
|
||||||
|
) => Promise<AxiosResponse<pond.ListDevicePresetResponse>>;
|
||||||
|
//update
|
||||||
|
updateDevicePreset: (
|
||||||
|
key: string,
|
||||||
|
name: string,
|
||||||
|
settings: pond.DevicePresetSettings
|
||||||
|
) => Promise<AxiosResponse<pond.UpdateDevicePresetResponse>>;
|
||||||
|
|
||||||
|
//remove
|
||||||
|
removeDevicePreset: (key: string) => Promise<AxiosResponse<pond.DeleteDevicePresetResponse>>;
|
||||||
|
|
||||||
|
//get
|
||||||
|
getDevicePreset: (key: string) => Promise<AxiosResponse<pond.GetDevicePresetResponse>>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const DevicePresetAPIcontext = createContext<IDevicePresetInterface>(
|
||||||
|
{} as IDevicePresetInterface
|
||||||
|
);
|
||||||
|
|
||||||
|
interface Props {}
|
||||||
|
|
||||||
|
export default function DevicePresetProvider(props: PropsWithChildren<Props>) {
|
||||||
|
const { children } = props;
|
||||||
|
const { get, del, post, put } = useHTTP();
|
||||||
|
const [{ as }] = useGlobalState();
|
||||||
|
|
||||||
|
//add
|
||||||
|
const addDevicePreset = (
|
||||||
|
name: string,
|
||||||
|
settings: pond.DevicePresetSettings,
|
||||||
|
parentKey?: string,
|
||||||
|
parentType?: string
|
||||||
|
) => {
|
||||||
|
let key = "";
|
||||||
|
let type = "";
|
||||||
|
if (parentKey && parentType) {
|
||||||
|
key = "&parentKey=" + parentKey;
|
||||||
|
type = "&parentType=" + parentType;
|
||||||
|
}
|
||||||
|
if (as) {
|
||||||
|
return post<pond.AddDevicePresetResponse>(
|
||||||
|
pondURL("/devicePreset?name=" + name + "&as=" + as + key + type),
|
||||||
|
settings
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return post<pond.AddDevicePresetResponse>(
|
||||||
|
pondURL("/devicePreset?name=" + name + key + type),
|
||||||
|
settings
|
||||||
|
);
|
||||||
|
};
|
||||||
|
//list
|
||||||
|
const listDevicePresets = (
|
||||||
|
limit: number,
|
||||||
|
offset: number,
|
||||||
|
order?: "asc" | "desc",
|
||||||
|
orderBy?: string,
|
||||||
|
search?: string,
|
||||||
|
keys?: string[],
|
||||||
|
types?: string[]
|
||||||
|
) => {
|
||||||
|
let asText = "";
|
||||||
|
if (as) asText = "&as=" + as;
|
||||||
|
return get<pond.ListDevicePresetResponse>(
|
||||||
|
pondURL(
|
||||||
|
"/devicePresets?limit=" +
|
||||||
|
limit +
|
||||||
|
"&offset=" +
|
||||||
|
offset +
|
||||||
|
("&order=" + (order ? order : "asc")) +
|
||||||
|
("&by=" + (orderBy ? orderBy : "key")) +
|
||||||
|
(search ? "&search=" + search : "") +
|
||||||
|
(keys ? "&keys=" + keys.toString() : "") +
|
||||||
|
(types ? "&types=" + types.toString() : "") +
|
||||||
|
asText
|
||||||
|
)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
//update
|
||||||
|
const updateDevicePreset = (key: string, name: string, settings: pond.DevicePresetSettings) => {
|
||||||
|
if (as) {
|
||||||
|
return put<pond.UpdateDevicePresetResponse>(
|
||||||
|
pondURL("/devicePreset/" + key + "?as=" + as + "&name=" + name),
|
||||||
|
settings
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return put<pond.UpdateDevicePresetResponse>(
|
||||||
|
pondURL("/devicePreset/" + key + "?name=" + name),
|
||||||
|
settings
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
//remove
|
||||||
|
const removeDevicePreset = (key: string) => {
|
||||||
|
if (as) {
|
||||||
|
return del<pond.DeleteDevicePresetResponse>(pondURL("/devicePreset/" + key + "?as=" + as));
|
||||||
|
}
|
||||||
|
return del<pond.DeleteDevicePresetResponse>(pondURL("/devicePreset/" + key + "?as=" + as));
|
||||||
|
};
|
||||||
|
|
||||||
|
//get
|
||||||
|
const getDevicePreset = (key: string) => {
|
||||||
|
if (as) {
|
||||||
|
return del<pond.GetDevicePresetResponse>(pondURL("/devicePreset/" + key + "?as=" + as));
|
||||||
|
}
|
||||||
|
return del<pond.GetDevicePresetResponse>(pondURL("/devicePreset/" + key + "?as=" + as));
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<DevicePresetAPIcontext.Provider
|
||||||
|
value={{
|
||||||
|
//add
|
||||||
|
addDevicePreset,
|
||||||
|
//list
|
||||||
|
listDevicePresets,
|
||||||
|
//update
|
||||||
|
updateDevicePreset,
|
||||||
|
//remove
|
||||||
|
removeDevicePreset,
|
||||||
|
//get
|
||||||
|
getDevicePreset
|
||||||
|
}}>
|
||||||
|
{children}
|
||||||
|
</DevicePresetAPIcontext.Provider>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const useDevicePresetAPI = () => useContext(DevicePresetAPIcontext);
|
||||||
|
|
@ -37,6 +37,7 @@ import KeyManagerProvider, { useKeyManagerAPI } from "./keyManagerAPI";
|
||||||
import JohnDeereProvider, { useJohnDeereProxyAPI } from "./johnDeereProxyAPI";
|
import JohnDeereProvider, { useJohnDeereProxyAPI } from "./johnDeereProxyAPI";
|
||||||
import LibraCartProvider, { useLibraCartProxyAPI } from "./libracartProxyAPI";
|
import LibraCartProvider, { useLibraCartProxyAPI } from "./libracartProxyAPI";
|
||||||
import CNHiProvider, { useCNHiProxyAPI } from "./cnhiProxyAPI";
|
import CNHiProvider, { useCNHiProxyAPI } from "./cnhiProxyAPI";
|
||||||
|
import DevicePresetProvider, { useDevicePresetAPI } from "./devicePresetAPI";
|
||||||
// import NoteProvider from "providers/noteAPI";
|
// import NoteProvider from "providers/noteAPI";
|
||||||
|
|
||||||
export const pondURL = (partial: string, demo: boolean = false): string => {
|
export const pondURL = (partial: string, demo: boolean = false): string => {
|
||||||
|
|
@ -167,5 +168,6 @@ export {
|
||||||
useKeyManagerAPI,
|
useKeyManagerAPI,
|
||||||
useJohnDeereProxyAPI,
|
useJohnDeereProxyAPI,
|
||||||
useCNHiProxyAPI,
|
useCNHiProxyAPI,
|
||||||
useLibraCartProxyAPI
|
useLibraCartProxyAPI,
|
||||||
|
useDevicePresetAPI
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue