diff --git a/package-lock.json b/package-lock.json
index c143d79..7ff40e1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3002,6 +3002,11 @@
"integrity": "sha512-7JkwTEE1hlRKETbCFd8HDZeLiQIUcl8rC6JgNjvHCNaxOeNmQ9V4LvQXRUsKIV2CC73qKxljwVhToaA3kLRqTw==",
"dev": true
},
+ "chain-function": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.1.tgz",
+ "integrity": "sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg=="
+ },
"chalk": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
@@ -3107,6 +3112,11 @@
}
}
},
+ "clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+ },
"clone-deep": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
@@ -3607,6 +3617,91 @@
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"dev": true
},
+ "d3-color": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz",
+ "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q=="
+ },
+ "d3-dispatch": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz",
+ "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA=="
+ },
+ "d3-drag": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz",
+ "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==",
+ "requires": {
+ "d3-dispatch": "1",
+ "d3-selection": "1"
+ }
+ },
+ "d3-ease": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz",
+ "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ=="
+ },
+ "d3-hierarchy": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz",
+ "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ=="
+ },
+ "d3-interpolate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz",
+ "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==",
+ "requires": {
+ "d3-color": "1"
+ }
+ },
+ "d3-path": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
+ "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="
+ },
+ "d3-selection": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz",
+ "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg=="
+ },
+ "d3-shape": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
+ "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
+ "requires": {
+ "d3-path": "1"
+ }
+ },
+ "d3-timer": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz",
+ "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw=="
+ },
+ "d3-transition": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz",
+ "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==",
+ "requires": {
+ "d3-color": "1",
+ "d3-dispatch": "1",
+ "d3-ease": "1",
+ "d3-interpolate": "1",
+ "d3-selection": "^1.1.0",
+ "d3-timer": "1"
+ }
+ },
+ "d3-zoom": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz",
+ "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==",
+ "requires": {
+ "d3-dispatch": "1",
+ "d3-drag": "1",
+ "d3-interpolate": "1",
+ "d3-selection": "1",
+ "d3-transition": "1"
+ }
+ },
"date-fns": {
"version": "2.16.1",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz",
@@ -3834,6 +3929,11 @@
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
},
+ "dequal": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz",
+ "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug=="
+ },
"destroy": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
@@ -3941,6 +4041,14 @@
"utila": "~0.4"
}
},
+ "dom-helpers": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz",
+ "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==",
+ "requires": {
+ "@babel/runtime": "^7.1.2"
+ }
+ },
"dom-serializer": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz",
@@ -8051,6 +8159,28 @@
"resolved": "https://registry.npmjs.org/react-codemirror2/-/react-codemirror2-7.2.1.tgz",
"integrity": "sha512-t7YFmz1AXdlImgHXA9Ja0T6AWuopilub24jRaQdPVbzUJVNKIYuy3uCFZYa7CE5S3UW6SrSa5nAqVQvtzRF9gw=="
},
+ "react-d3-tree": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/react-d3-tree/-/react-d3-tree-2.0.1.tgz",
+ "integrity": "sha512-Hm9Ic1WEtn8OPy951TVuYuOafVEdxsQYqraDh7aOH8KTdtWBCVckfO8HZglR6LH0LsFH8TaDXiEx/GRKQmU7hg==",
+ "requires": {
+ "clone": "^2.1.1",
+ "d3-hierarchy": "^1.1.9",
+ "d3-selection": "^1.4.2",
+ "d3-shape": "^1.3.7",
+ "d3-zoom": "^1.8.3",
+ "dequal": "^2.0.2",
+ "react-transition-group": "^1.1.3",
+ "uuid": "^8.3.1"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
+ }
+ }
+ },
"react-dom": {
"version": "17.0.1",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz",
@@ -8121,6 +8251,18 @@
"prop-types": "^15.5.0"
}
},
+ "react-transition-group": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-1.2.1.tgz",
+ "integrity": "sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q==",
+ "requires": {
+ "chain-function": "^1.0.0",
+ "dom-helpers": "^3.2.0",
+ "loose-envify": "^1.3.1",
+ "prop-types": "^15.5.6",
+ "warning": "^3.0.0"
+ }
+ },
"read-config-file": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.0.0.tgz",
@@ -10035,6 +10177,14 @@
"rxjs": "^6.6.3"
}
},
+ "warning": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
+ "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
"watchpack": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.0.tgz",
diff --git a/package.json b/package.json
index c58b53b..69e0aa0 100644
--- a/package.json
+++ b/package.json
@@ -63,6 +63,7 @@
"react": "^17.0.1",
"react-ace": "^9.3.0",
"react-codemirror2": "^7.2.1",
+ "react-d3-tree": "^2.0.1",
"react-dom": "^17.0.1",
"react-router-dom": "^5.2.0",
"react-tabs": "^3.2.0",
diff --git a/server/schema.js b/server/schema.js
index 4ac0b5a..47cd847 100644
--- a/server/schema.js
+++ b/server/schema.js
@@ -117,7 +117,7 @@ async function run() {
const client = new MongoClient(url, {useUnifiedTopology: true});
const regex = /\/(\w+)\?/g
const databaseName = url.match(regex)
- console.log('DATABASSSSUUUUUU', url)
+ // console.log('DATABASSSSUUUUUU', url)
const databaseString = databaseName.join('').slice(1, databaseName.join('').length - 1)
// console.log('DATABASSSSUUUUUU2222222', databaseString)
diff --git a/src/Components/MongoSchemaIDE.js b/src/Components/MongoSchemaIDE.js
index c84fcd9..604042f 100644
--- a/src/Components/MongoSchemaIDE.js
+++ b/src/Components/MongoSchemaIDE.js
@@ -14,7 +14,7 @@ const _ = require('lodash');
const MongoSchemaIDE = ({schemaData, selectedSchemaData, graphQLSchema}) => {
const [data, setData] = useState([]);
const [graphData, setGraphData] = useState({});
- console.log('SELECTED SCHEMAS WOAAAAA', graphQLSchema);
+ // console.log('SELECTED SCHEMAS WOAAAAA', graphQLSchema);
// console.log("UPDATED ROOTQUERY OBJ+++", graphQLSchema)
// iterates over the graphQLSchema and removes the double quotes
const eliminateQuotes = (obj) => {
@@ -28,7 +28,7 @@ const MongoSchemaIDE = ({schemaData, selectedSchemaData, graphQLSchema}) => {
const newLinePillar = (str) => {
if (str === undefined) return;
- console.log(str);
+ // console.log(str);
let newStr = '';
let array = str.split('');
for (let i = 0; i < array.length; i+=1) {
diff --git a/src/Components/Tree.js b/src/Components/Tree.js
new file mode 100644
index 0000000..feba6fe
--- /dev/null
+++ b/src/Components/Tree.js
@@ -0,0 +1,115 @@
+import React from 'react';
+import Tree from 'react-d3-tree';
+import '../public/custom-tree.css';
+// This is a simplified example of an org chart with a depth of 2.
+// Note how deeper levels are defined recursively via the `children` property.
+const orgChart = {
+ name: 'CEO',
+ children: [
+ {
+ name: 'Manager',
+ attributes: {
+ department: 'Production',
+ },
+ children: [
+ {
+ name: 'Foreman',
+ attributes: {
+ department: 'Fabrication',
+ },
+ children: [
+ {
+ name: "kill me"
+ },
+ {
+ name: 'love me'
+ }
+ ],
+ },
+ {
+ name: 'Foreman',
+ attributes: {
+ department: 'Assembly',
+ },
+ children: [
+ {
+ name: 'Worker',
+ },
+ ],
+ },
+ ],
+ },
+ ],
+};
+
+
+// users:
+// email: {type: "string", required: true}
+// forum: {type: "Array", required: true}
+// password: {type: "string", required: true}
+// username: {type: "string", required: true}
+// __v: {type: "number", required: true}
+// _id: {primaryKey: true, type: "Object
+
+// mongodb+srv://judy:coderepforum@coderep-forum-idfny.mongodb.net/Forum?retryWrites=true&w=majority
+
+export default function OrgChartTree({selectedSchemaData}) {
+ let schemaChart = {};
+ if (selectedSchemaData[0]) {
+ schemaChart = {
+ name: 'Database Schema',
+ children: [],
+ }
+ let i = 0;
+ let childArr = [];
+ for (let key in selectedSchemaData[0]) {
+ console.log(selectedSchemaData[0][key])
+ for (let prop in selectedSchemaData[0][key]) {
+ childArr.push({name: prop})
+ }
+ console.log(childArr);
+ schemaChart.children[i] = {
+ name: key,
+ children: childArr,
+ };
+ childArr = [];
+ i++
+ }
+ }
+
+ // iterate over the selectedSchemaData
+ // console.log(Object.keys(selectedSchemaData))
+ function getName(obj) {
+ let name = '';
+ for (let key in obj) {
+ name += obj[key];
+ }
+ return name;
+ }
+
+ let array = [];
+
+ for (let key in selectedSchemaData) {
+ console.log('LALLALALALALLA', selectedSchemaData[key])
+ }
+ const straightPathFunc = (linkDatum, orientation) => {
+ const { source, target } = linkDatum;
+ return orientation === 'vertical'
+ ? `M${source.x},${source.y}L${target.x},${target.y}`
+ : `M${source.y},${source.x}L${target.y},${target.x}`;
+ };
+
+ return (
+ // `