Skip to content

Commit

Permalink
#464 Configure-beta - Finish webhooks and dataset
Browse files Browse the repository at this point in the history
  • Loading branch information
tariqksoliman committed Jun 11, 2024
1 parent 2f847c0 commit 9f0c798
Show file tree
Hide file tree
Showing 37 changed files with 513 additions and 935 deletions.
112 changes: 108 additions & 4 deletions API/Backend/Datasets/routes/datasets.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const inspect = require("util").inspect;

const { sequelize } = require("../../../connection");

const Utils = require("../../../utils.js");
const logger = require("../../../logger");
const datasets = require("../models/datasets");
const csvtojson = require("csvtojson");
Expand Down Expand Up @@ -88,10 +89,63 @@ router.post("/entries", function (req, res, next) {
for (let i = 0; i < sets.length; i++) {
entries.push({ name: sets[i].name, updated: sets[i].updatedAt });
}
res.send({
status: "success",
body: { entries: entries },
});
// For each entry, list all occurrences in latest configuration objects
sequelize
.query(
`
SELECT t1.*
FROM configs AS t1
INNER JOIN (
SELECT mission, MAX(version) AS max_version
FROM configs
GROUP BY mission
) AS t2
ON t1.mission = t2.mission AND t1.version = t2.max_version ORDER BY mission ASC;
`
)
.then(([results]) => {
// Populate occurrences
results.forEach((m) => {
Utils.traverseLayers(m.config.layers, (layer, path) => {
entries.forEach((entry) => {
entry.occurrences = entry.occurrences || {};
entry.occurrences[m.mission] =
entry.occurrences[m.mission] || [];
if (layer?.variables?.datasetLinks?.length != null) {
layer.variables.datasetLinks.forEach((d) => {
if (d.dataset === entry.name) {
entry.occurrences[m.mission].push({
name: layer.name,
uuid: layer.uuid,
path: path,
});
}
});
}
});
});
});

res.send({
status: "success",
body: { entries: entries },
});
return null;
})
.catch((err) => {
logger(
"error",
"Failed to find missions.",
req.originalUrl,
req,
err
);
res.send({
status: "failure",
message: "Failed to find missions.",
});
return null;
});
} else {
res.send({
status: "failure",
Expand Down Expand Up @@ -175,6 +229,56 @@ router.post("/search", function (req, res, next) {
});
});

/*
* req.query.layer
*/
router.get("/download", function (req, res, next) {
//First Find the table name
Datasets.findOne({ where: { name: req.query.layer } })
.then((result) => {
if (result) {
let table = result.dataValues.table;

sequelize
.query("SELECT * FROM " + table)
.then(([results]) => {
res.send({
status: "success",
body: results,
});

return null;
})
.catch((err) => {
logger(
"error",
"SQL error downloading dataset.",
req.originalUrl,
req,
err
);
res.send({
status: "failure",
message: "SQL error.",
});
});
} else {
res.send({
status: "failure",
message: "Layer not found.",
});
}

return null;
})
.catch((err) => {
logger("error", "Failure finding dataset.", req.originalUrl, req, err);
res.send({
status: "failure",
});
});
});

router.post("/upload", function (req, res, next) {
// Disable timeout
req.setTimeout(0);
Expand Down
11 changes: 10 additions & 1 deletion API/Backend/Geodatasets/routes/geodatasets.js
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,16 @@ router.post("/entries", function (req, res, next) {
// For each entry, list all occurrences in latest configuration objects
sequelize
.query(
"SELECT DISTINCT ON (mission) mission, version, config FROM configs ORDER BY mission ASC"
`
SELECT t1.*
FROM configs AS t1
INNER JOIN (
SELECT mission, MAX(version) AS max_version
FROM configs
GROUP BY mission
) AS t2
ON t1.mission = t2.mission AND t1.version = t2.max_version ORDER BY mission ASC;
`
)
.then(([results]) => {
// Populate occurrences
Expand Down
2 changes: 0 additions & 2 deletions configure/src/components/Map/Map.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import React, { useEffect, useState } from "react";
import * as L from "leaflet";

import clsx from "clsx";

import ReactJson from "react-json-view";

import { makeStyles } from "@mui/styles";
Expand Down
9 changes: 2 additions & 7 deletions configure/src/components/Panel/Panel.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,7 @@ import mmgisLogo from "../../images/mmgis.png";

import clsx from "clsx";

import {
setConfiguration,
setMission,
setModal,
setPage,
} from "../../core/ConfigureStore";
import { setMission, setModal, setPage } from "../../core/ConfigureStore";

import NewMissionModal from "./Modals/NewMissionModal/NewMissionModal";

Expand Down Expand Up @@ -222,7 +217,7 @@ export default function Panel() {
dispatch(setPage({ page: "webhooks" }));
}}
>
WebHooks
Webhooks
</Button>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,30 +1,16 @@
import React, { useState } from "react";
import React from "react";
import { useSelector, useDispatch } from "react-redux";

import { calls } from "../../../../core/calls";
import { setModal } from "../../../../core/ConfigureStore";

import {
setMissions,
setModal,
setSnackBarText,
} from "../../../../core/ConfigureStore";

import Typography from "@mui/material/Typography";
import Button from "@mui/material/Button";
import Dialog from "@mui/material/Dialog";
import DialogActions from "@mui/material/DialogActions";
import DialogContent from "@mui/material/DialogContent";
import DialogTitle from "@mui/material/DialogTitle";
import IconButton from "@mui/material/IconButton";

import CloseSharpIcon from "@mui/icons-material/CloseSharp";
import PreviewIcon from "@mui/icons-material/Preview";

import TextField from "@mui/material/TextField";
import FormGroup from "@mui/material/FormGroup";
import FormControlLabel from "@mui/material/FormControlLabel";
import Checkbox from "@mui/material/Checkbox";

import { makeStyles, useTheme } from "@mui/styles";
import useMediaQuery from "@mui/material/useMediaQuery";

Expand Down
2 changes: 1 addition & 1 deletion configure/src/components/SaveBar/SaveBar.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useEffect, useState } from "react";
import React from "react";
import { useSelector, useDispatch } from "react-redux";
import {} from "./SaveBarSlice";
import { makeStyles } from "@mui/styles";
Expand Down
6 changes: 2 additions & 4 deletions configure/src/components/Tabs/Coordinates/Coordinates.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import React, { useEffect, useState } from "react";
import { useSelector, useDispatch } from "react-redux";
import React from "react";
import { useDispatch } from "react-redux";
import { makeStyles } from "@mui/styles";

import { calls } from "../../../core/calls";
import Maker from "../../../core/Maker";
import { setSnackBarText } from "../../../core/ConfigureStore";

import config from "../../../metaconfigs/tab-coordinates-config.json";

Expand Down
2 changes: 1 addition & 1 deletion configure/src/components/Tabs/Home/Home.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useEffect, useState } from "react";
import React from "react";
import { useSelector, useDispatch } from "react-redux";
import { setVersions } from "./HomeSlice";
import { makeStyles } from "@mui/styles";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import IconButton from "@mui/material/IconButton";

import CloseSharpIcon from "@mui/icons-material/CloseSharp";
import ShapeLineIcon from "@mui/icons-material/ShapeLine";
import WarningIcon from "@mui/icons-material/Warning";
import DeleteForeverIcon from "@mui/icons-material/DeleteForever";

import TextField from "@mui/material/TextField";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useState, useEffect } from "react";
import React, { useState } from "react";
import { useSelector, useDispatch } from "react-redux";

import { calls } from "../../../../../core/calls";
Expand Down
22 changes: 1 addition & 21 deletions configure/src/components/Tabs/Home/Versions.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import React, { useEffect, useState } from "react";
import React, { useEffect } from "react";
import { useSelector, useDispatch } from "react-redux";
import { makeStyles } from "@mui/styles";

import clsx from "clsx";

import { calls } from "../../../core/calls";
import { downloadObject } from "../../../core/utils";
import {
Expand All @@ -12,10 +10,8 @@ import {
setConfiguration,
clearLockConfig,
} from "../../../core/ConfigureStore";
import { setVersions } from "./HomeSlice";

import PropTypes from "prop-types";
import { alpha } from "@mui/material/styles";
import Box from "@mui/material/Box";
import Table from "@mui/material/Table";
import TableBody from "@mui/material/TableBody";
Expand All @@ -25,31 +21,15 @@ import TableHead from "@mui/material/TableHead";
import TablePagination from "@mui/material/TablePagination";
import TableRow from "@mui/material/TableRow";
import TableSortLabel from "@mui/material/TableSortLabel";
import Toolbar from "@mui/material/Toolbar";
import Typography from "@mui/material/Typography";
import Paper from "@mui/material/Paper";
import Checkbox from "@mui/material/Checkbox";
import IconButton from "@mui/material/IconButton";
import Button from "@mui/material/Button";
import Tooltip from "@mui/material/Tooltip";
import FormControlLabel from "@mui/material/FormControlLabel";
import Switch from "@mui/material/Switch";
import DeleteIcon from "@mui/icons-material/Delete";
import FilterListIcon from "@mui/icons-material/FilterList";
import Divider from "@mui/material/Divider";
import Badge from "@mui/material/Badge";
import { visuallyHidden } from "@mui/utils";

import InventoryIcon from "@mui/icons-material/Inventory";
import PreviewIcon from "@mui/icons-material/Preview";
import DownloadIcon from "@mui/icons-material/Download";
import UploadIcon from "@mui/icons-material/Upload";
import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline";
import DeleteForeverIcon from "@mui/icons-material/DeleteForever";
import AddIcon from "@mui/icons-material/Add";
import ShapeLineIcon from "@mui/icons-material/ShapeLine";
import LowPriorityIcon from "@mui/icons-material/LowPriority";
import ControlPointDuplicateIcon from "@mui/icons-material/ControlPointDuplicate";

function descendingComparator(a, b, orderBy) {
if (b[orderBy] < a[orderBy]) {
Expand Down
8 changes: 1 addition & 7 deletions configure/src/components/Tabs/Layers/Layers.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,13 @@ import { useSelector, useDispatch } from "react-redux";
import {} from "./LayersSlice";
import { makeStyles } from "@mui/styles";

import { calls } from "../../../core/calls";
import { reorderArray } from "../../../core/utils";
import {
setSnackBarText,
setModal,
setConfiguration,
} from "../../../core/ConfigureStore";
import { setModal, setConfiguration } from "../../../core/ConfigureStore";

import LayerModal from "./Modals/LayerModal/LayerModal";

import { DragDropContext, Droppable, Draggable } from "react-beautiful-dnd";

import List from "@mui/material/List";
import ListItem from "@mui/material/ListItem";
import ListItemButton from "@mui/material/ListItemButton";
import ListItemIcon from "@mui/material/ListItemIcon";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useState } from "react";
import React from "react";
import { useSelector, useDispatch } from "react-redux";

import { getLayerByUUID, traverseLayers } from "../../../../../core/utils";
Expand Down
6 changes: 2 additions & 4 deletions configure/src/components/Tabs/Time/Time.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import React, { useEffect, useState } from "react";
import { useSelector, useDispatch } from "react-redux";
import React from "react";
import { useDispatch } from "react-redux";
import { makeStyles } from "@mui/styles";

import { calls } from "../../../core/calls";
import Maker from "../../../core/Maker";
import { setSnackBarText } from "../../../core/ConfigureStore";

import config from "../../../metaconfigs/tab-time-config.json";

Expand Down
12 changes: 2 additions & 10 deletions configure/src/components/Tabs/Tools/Modals/ToolModal/ToolModal.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,12 @@
import React, { useState } from "react";
import React from "react";
import { useSelector, useDispatch } from "react-redux";

import { calls } from "../../../../../core/calls";
import {
getLayerByUUID,
getIn,
setIn,
getToolFromConfiguration,
updateToolInConfiguration,
} from "../../../../../core/utils";

import {
setModal,
setSnackBarText,
setConfiguration,
} from "../../../../../core/ConfigureStore";
import { setModal, setConfiguration } from "../../../../../core/ConfigureStore";

import Typography from "@mui/material/Typography";
import Button from "@mui/material/Button";
Expand Down
3 changes: 1 addition & 2 deletions configure/src/components/Tabs/Tools/Tools.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useEffect, useState } from "react";
import React, { useEffect } from "react";
import { useSelector, useDispatch } from "react-redux";
import {} from "./ToolsSlice";
import { makeStyles } from "@mui/styles";
Expand All @@ -15,7 +15,6 @@ import {
import ToolModal from "./Modals/ToolModal/ToolModal";

import Grid from "@mui/material/Grid";
import Paper from "@mui/material/Paper";
import Box from "@mui/material/Box";

const useStyles = makeStyles((theme) => ({
Expand Down
Loading

0 comments on commit 9f0c798

Please sign in to comment.