Merge branch 'access_object' into dev_environment
This commit is contained in:
commit
deb3fabd45
12 changed files with 72 additions and 43 deletions
BIN
src/assets/marketplaceImages/Libra_Cart_temp.jpg
Normal file
BIN
src/assets/marketplaceImages/Libra_Cart_temp.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
|
|
@ -22,6 +22,7 @@ interface Props {
|
||||||
loadMore?: () => void;
|
loadMore?: () => void;
|
||||||
//startingTranslate: number;
|
//startingTranslate: number;
|
||||||
valDisplay?: "high" | "low" | "average";
|
valDisplay?: "high" | "low" | "average";
|
||||||
|
insert?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const useStyles = makeStyles((_theme) => {
|
const useStyles = makeStyles((_theme) => {
|
||||||
|
|
@ -39,7 +40,7 @@ const useStyles = makeStyles((_theme) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
export default function BinsList(props: Props) {
|
export default function BinsList(props: Props) {
|
||||||
const { bins, duplicateBin, title, gridView, loadMore, valDisplay } = props;
|
const { bins, duplicateBin, title, gridView, loadMore, valDisplay, insert } = props;
|
||||||
const classes = useStyles();
|
const classes = useStyles();
|
||||||
// const history = useHistory();
|
// const history = useHistory();
|
||||||
const navigate = useNavigate()
|
const navigate = useNavigate()
|
||||||
|
|
@ -114,7 +115,12 @@ export default function BinsList(props: Props) {
|
||||||
{bins.map((b, i) =>
|
{bins.map((b, i) =>
|
||||||
(
|
(
|
||||||
<Grid
|
<Grid
|
||||||
size={{
|
size={insert ? {
|
||||||
|
xs: 6,
|
||||||
|
sm: 6,
|
||||||
|
md: 4,
|
||||||
|
lg: 3,
|
||||||
|
} : {
|
||||||
xs: 6,
|
xs: 6,
|
||||||
sm: 4,
|
sm: 4,
|
||||||
md: 3,
|
md: 3,
|
||||||
|
|
|
||||||
|
|
@ -316,6 +316,7 @@ export default function BinyardDisplay(props: Props) {
|
||||||
<Grid size={12}>
|
<Grid size={12}>
|
||||||
<BinsList
|
<BinsList
|
||||||
gridView
|
gridView
|
||||||
|
insert
|
||||||
valDisplay="average"
|
valDisplay="average"
|
||||||
bins={grainBins}
|
bins={grainBins}
|
||||||
duplicateBin={duplicateBin}
|
duplicateBin={duplicateBin}
|
||||||
|
|
@ -332,6 +333,7 @@ export default function BinyardDisplay(props: Props) {
|
||||||
<Grid size={12}>
|
<Grid size={12}>
|
||||||
<BinsList
|
<BinsList
|
||||||
gridView
|
gridView
|
||||||
|
insert
|
||||||
valDisplay="average"
|
valDisplay="average"
|
||||||
bins={fertBins}
|
bins={fertBins}
|
||||||
duplicateBin={duplicateBin}
|
duplicateBin={duplicateBin}
|
||||||
|
|
@ -348,6 +350,7 @@ export default function BinyardDisplay(props: Props) {
|
||||||
<Grid size={12}>
|
<Grid size={12}>
|
||||||
<BinsList
|
<BinsList
|
||||||
gridView
|
gridView
|
||||||
|
insert
|
||||||
valDisplay="average"
|
valDisplay="average"
|
||||||
bins={emptyBins}
|
bins={emptyBins}
|
||||||
duplicateBin={duplicateBin}
|
duplicateBin={duplicateBin}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import {
|
||||||
MenuItem,
|
MenuItem,
|
||||||
OutlinedInput,
|
OutlinedInput,
|
||||||
Select,
|
Select,
|
||||||
|
TextField,
|
||||||
Theme
|
Theme
|
||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
import moment, { Moment } from "moment";
|
import moment, { Moment } from "moment";
|
||||||
|
|
@ -16,6 +17,7 @@ import ReactDOM from "react-dom";
|
||||||
import { DateRangePreset, SetDefaultPreset } from "./DateRange";
|
import { DateRangePreset, SetDefaultPreset } from "./DateRange";
|
||||||
import ResponsiveDialog from "common/ResponsiveDialog";
|
import ResponsiveDialog from "common/ResponsiveDialog";
|
||||||
import { withStyles, WithStyles } from "@mui/styles";
|
import { withStyles, WithStyles } from "@mui/styles";
|
||||||
|
import { cloneDeep } from "lodash";
|
||||||
|
|
||||||
const styles = (_theme: Theme) => createStyles({});
|
const styles = (_theme: Theme) => createStyles({});
|
||||||
|
|
||||||
|
|
@ -249,18 +251,30 @@ class DateSelect extends React.Component<Props, State> {
|
||||||
onClose={this.closeDateRangeDialog}
|
onClose={this.closeDateRangeDialog}
|
||||||
aria-labelledby="date-range-dialog">
|
aria-labelledby="date-range-dialog">
|
||||||
<DialogContent>
|
<DialogContent>
|
||||||
{/* <StaticDateRangePicker
|
<TextField
|
||||||
disableFuture
|
fullWidth
|
||||||
value={dateRange}
|
margin="normal"
|
||||||
onChange={date => this.updateDateRange(date)}
|
type="date"
|
||||||
renderInput={(startProps, endProps) => (
|
label="Start Time"
|
||||||
<React.Fragment>
|
value={dateRange[0]?.format("YYYY-MM-DD")}
|
||||||
<TextField {...startProps} />
|
onChange={e => {
|
||||||
<DateRangeDelimiter> to </DateRangeDelimiter>
|
let range = cloneDeep(dateRange)
|
||||||
<TextField {...endProps} />
|
range[0] = moment(e.target.value)
|
||||||
</React.Fragment>
|
this.updateDateRange(range)
|
||||||
)}
|
}}
|
||||||
/> */}
|
/>
|
||||||
|
<TextField
|
||||||
|
fullWidth
|
||||||
|
margin="normal"
|
||||||
|
type="date"
|
||||||
|
label="End Time"
|
||||||
|
value={dateRange[1]?.format("YYYY-MM-DD")}
|
||||||
|
onChange={e => {
|
||||||
|
let range = cloneDeep(dateRange)
|
||||||
|
range[1] = moment(e.target.value)
|
||||||
|
this.updateDateRange(range)
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
<DialogActions>
|
<DialogActions>
|
||||||
<Button onClick={this.closeDateRangeDialog} color="primary">
|
<Button onClick={this.closeDateRangeDialog} color="primary">
|
||||||
|
|
|
||||||
|
|
@ -42,11 +42,11 @@ const featureVersions: Map<string, FeatureVersionByPlatform> = new Map([
|
||||||
v2Cell: "N/A",
|
v2Cell: "N/A",
|
||||||
v2WifiS3: "N/A",
|
v2WifiS3: "N/A",
|
||||||
v2CellS3: "N/A",
|
v2CellS3: "N/A",
|
||||||
v2CellBlack: "2.1.6",
|
v2CellBlack: "2.1.7",
|
||||||
v2CellGreen: "N/A",
|
v2CellGreen: "N/A",
|
||||||
v2WifiBlue: "2.1.6",
|
v2WifiBlue: "2.1.7",
|
||||||
v2CellBlue: "2.1.6",
|
v2CellBlue: "2.1.7",
|
||||||
v2EthBlue: "2.1.6"
|
v2EthBlue: "2.1.7"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ export default function Heaters() {
|
||||||
.listObjectHeatersPageData(pageSize, tablePage * pageSize, undefined, undefined, searchText, as)
|
.listObjectHeatersPageData(pageSize, tablePage * pageSize, undefined, undefined, searchText, as)
|
||||||
.then(resp => {
|
.then(resp => {
|
||||||
setTotal(resp.data.total)
|
setTotal(resp.data.total)
|
||||||
setHeaters(resp.data.heaterData);
|
setHeaters(resp.data.heaterData ?? []);
|
||||||
});
|
});
|
||||||
}, [objectHeaterAPI, as, pageSize, tablePage, searchText]);
|
}, [objectHeaterAPI, as, pageSize, tablePage, searchText]);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,8 @@ export default function Users() {
|
||||||
"remove-devices",
|
"remove-devices",
|
||||||
"copy-token",
|
"copy-token",
|
||||||
"recluse",
|
"recluse",
|
||||||
"pause-data"
|
"pause-data",
|
||||||
|
"access-object"
|
||||||
].sort();
|
].sort();
|
||||||
const features = [
|
const features = [
|
||||||
"admin",
|
"admin",
|
||||||
|
|
|
||||||
|
|
@ -90,8 +90,7 @@ export default function InteractionProvider(props: PropsWithChildren<Props>) {
|
||||||
) => {
|
) => {
|
||||||
const view = otherTeam ? otherTeam : as
|
const view = otherTeam ? otherTeam : as
|
||||||
let url = pondURL(
|
let url = pondURL(
|
||||||
"/interactions/forComponents/" +
|
"/interactions/forComponents?componentIds=" +
|
||||||
"?componentIds=" +
|
|
||||||
fullComponentLocations.toString() +
|
fullComponentLocations.toString() +
|
||||||
(view ? "&as=" + view : "")
|
(view ? "&as=" + view : "")
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ export default function TeamProvider(props: PropsWithChildren<Props>) {
|
||||||
prefixSearch?: string,
|
prefixSearch?: string,
|
||||||
) => {
|
) => {
|
||||||
//let asText = team ? "&as=" + team.key() : "";
|
//let asText = team ? "&as=" + team.key() : "";
|
||||||
const view = otherTeam ? otherTeam : as
|
const view = otherTeam ? otherTeam : (as.length > 0 ? as : undefined)
|
||||||
let url = pondURL(
|
let url = pondURL(
|
||||||
"/teams" +
|
"/teams" +
|
||||||
"?limit=" +
|
"?limit=" +
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@ export default function TaskViewer(props: ViewProps) {
|
||||||
openDialog();
|
openDialog();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const loadMultitask = useCallback(() => {
|
const loadMultitask = useCallback(() => {
|
||||||
if (!loadKeys) return;
|
if (!loadKeys) return;
|
||||||
if (loadKeys.length > 0) {
|
if (loadKeys.length > 0) {
|
||||||
|
|
@ -146,11 +147,13 @@ export default function TaskViewer(props: ViewProps) {
|
||||||
taskAPI
|
taskAPI
|
||||||
.getMultiTasks(loadKeys, as)
|
.getMultiTasks(loadKeys, as)
|
||||||
.then(resp => {
|
.then(resp => {
|
||||||
|
if(resp.data.tasks){
|
||||||
resp.data.tasks.forEach(task => {
|
resp.data.tasks.forEach(task => {
|
||||||
if (task.settings) {
|
if (task.settings) {
|
||||||
temp.set(task.key, Task.any(task));
|
temp.set(task.key, Task.any(task));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
setTasks(temp);
|
setTasks(temp);
|
||||||
setLoaded(true);
|
setLoaded(true);
|
||||||
})
|
})
|
||||||
|
|
@ -167,11 +170,13 @@ export default function TaskViewer(props: ViewProps) {
|
||||||
taskAPI
|
taskAPI
|
||||||
.listTasks(50, 0, "asc", "start", undefined, undefined, as, prevMonth, nextMonth)
|
.listTasks(50, 0, "asc", "start", undefined, undefined, as, prevMonth, nextMonth)
|
||||||
.then(resp => {
|
.then(resp => {
|
||||||
|
if(resp.data.tasks){
|
||||||
resp.data.tasks.forEach(task => {
|
resp.data.tasks.forEach(task => {
|
||||||
if (task.settings) {
|
if (task.settings) {
|
||||||
temp.set(task.key, Task.any(task));
|
temp.set(task.key, Task.any(task));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
setTasks(temp);
|
setTasks(temp);
|
||||||
setLoaded(true);
|
setLoaded(true);
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -266,7 +266,7 @@ export default function UserMenu() {
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
)}
|
)}
|
||||||
<Divider />
|
<Divider />
|
||||||
{hasAdmin && (
|
{(hasAdmin || user.allowedTo("access-object")) && (
|
||||||
<Tooltip title="Access Object">
|
<Tooltip title="Access Object">
|
||||||
<MenuItem onClick={() => openAccessObject()} aria-label="Access Object" dense>
|
<MenuItem onClick={() => openAccessObject()} aria-label="Access Object" dense>
|
||||||
<ListItemIcon>
|
<ListItemIcon>
|
||||||
|
|
@ -276,7 +276,7 @@ export default function UserMenu() {
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
)}
|
)}
|
||||||
<Divider />
|
{(hasAdmin || user.allowedTo("access-object")) && <Divider /> }
|
||||||
<MenuItem onClick={handleLogout} aria-label="Sign Out" dense>
|
<MenuItem onClick={handleLogout} aria-label="Sign Out" dense>
|
||||||
<ListItemIcon>
|
<ListItemIcon>
|
||||||
<ExitToApp className={classes.red} />
|
<ExitToApp className={classes.red} />
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ import FeatureCard from "./FeatureCard";
|
||||||
//import { ImgIcon } from "common/ImgIcon";
|
//import { ImgIcon } from "common/ImgIcon";
|
||||||
//images to import for the image in the card for the feature make sure to have a 2:1 aspect ratio to keep the cards symmetrical
|
//images to import for the image in the card for the feature make sure to have a 2:1 aspect ratio to keep the cards symmetrical
|
||||||
import FeatureImageTest from "assets/marketplaceImages/VisualFarmMPImage.png";
|
import FeatureImageTest from "assets/marketplaceImages/VisualFarmMPImage.png";
|
||||||
|
import LibraCartImage from "assets/marketplaceImages/Libra_Cart_temp.jpg";
|
||||||
|
|
||||||
// export interface FAQ {
|
// export interface FAQ {
|
||||||
// question: string;
|
// question: string;
|
||||||
|
|
@ -62,14 +63,14 @@ const agFeatureList: ProductDetails[] = [
|
||||||
// bulletPoints: ["bullet one", "bullet two"],
|
// bulletPoints: ["bullet one", "bullet two"],
|
||||||
// questions: [],
|
// questions: [],
|
||||||
},
|
},
|
||||||
// {
|
{
|
||||||
// featureName: "libra-cart",
|
featureName: "libra-cart",
|
||||||
// featureLogo: <LibraCartIcon />,
|
featureLogo: <LibraCartIcon />,
|
||||||
// featureCost: 0,
|
featureCost: 0,
|
||||||
// cardImage: FeatureImageTest,
|
cardImage: LibraCartImage,
|
||||||
// featureTitle: "Libra Cart",
|
featureTitle: "Libra Cart",
|
||||||
// longDescription: "Integrate with Libra Cart to bring your data into our platform"
|
longDescription: "Integrate with Libra Cart to bring your data into our platform"
|
||||||
// }
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
// const constructionFeatureList: ProductDetails[] = []
|
// const constructionFeatureList: ProductDetails[] = []
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue