diff --git a/.gitignore b/.gitignore
index 4d29575..f60f236 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,5 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*
+
+*.gif
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 83c6a63..c1261d1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2434,6 +2434,11 @@
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
},
+ "art": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/art/-/art-0.10.3.tgz",
+ "integrity": "sha512-HXwbdofRTiJT6qZX/FnchtldzJjS3vkLJxQilc3Xj+ma2MXjY4UAyQ0ls1XZYVnDvVIBiFZbC6QsvtW86TD6tQ=="
+ },
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -3987,6 +3992,16 @@
"sha.js": "^2.4.8"
}
},
+ "create-react-class": {
+ "version": "15.6.3",
+ "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz",
+ "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==",
+ "requires": {
+ "fbjs": "^0.8.9",
+ "loose-envify": "^1.3.1",
+ "object-assign": "^4.1.1"
+ }
+ },
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
@@ -4803,6 +4818,24 @@
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
+ "encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "requires": {
+ "iconv-lite": "^0.6.2"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
+ "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ }
+ }
+ }
+ },
"end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -5804,6 +5837,35 @@
"bser": "2.1.1"
}
},
+ "fbjs": {
+ "version": "0.8.17",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
+ "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
+ "requires": {
+ "core-js": "^1.0.0",
+ "isomorphic-fetch": "^2.1.1",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^0.7.18"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+ "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
+ },
+ "promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "requires": {
+ "asap": "~2.0.3"
+ }
+ }
+ }
+ },
"figgy-pudding": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
@@ -7149,6 +7211,15 @@
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
},
+ "isomorphic-fetch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+ "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
+ "requires": {
+ "node-fetch": "^1.0.1",
+ "whatwg-fetch": ">=0.10.0"
+ }
+ },
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
@@ -7908,6 +7979,11 @@
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
},
+ "konva": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/konva/-/konva-7.1.3.tgz",
+ "integrity": "sha512-yYL6Ie6bEwxIvmWxRdoeUW4lSiAKvM2yg++Z4qx6vuiLgtICJFX1i5LwUeMIN9Z5RSLbJ4h7wG+6kMtAxL+ltg=="
+ },
"last-call-webpack-plugin": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz",
@@ -8572,6 +8648,15 @@
"tslib": "^1.10.0"
}
},
+ "node-fetch": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+ "requires": {
+ "encoding": "^0.1.11",
+ "is-stream": "^1.0.1"
+ }
+ },
"node-forge": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
@@ -10589,6 +10674,19 @@
"whatwg-fetch": "^3.0.0"
}
},
+ "react-art": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-art/-/react-art-16.13.1.tgz",
+ "integrity": "sha512-IDXRZCUlyl3AkQ6Xf3qg0C6MSDxKhOhf7amYzWNMaelH5K2W9KqUOUHL8mGwC0k/1BXFhhusSgsE1Bekz3aHEQ==",
+ "requires": {
+ "art": "^0.10.1",
+ "create-react-class": "^15.6.2",
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.2",
+ "scheduler": "^0.19.1"
+ }
+ },
"react-dev-utils": {
"version": "10.2.1",
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz",
@@ -10811,6 +10909,26 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
+ "react-konva": {
+ "version": "16.13.0-6",
+ "resolved": "https://registry.npmjs.org/react-konva/-/react-konva-16.13.0-6.tgz",
+ "integrity": "sha512-wqIrZSneJWn2D2ExwtSqp9U804OUA3RhkxzzRbp/2s+54mx9iU2lpP2CNGHMAnxNccR03mcLwGirb6wvPOOPLA==",
+ "requires": {
+ "react-reconciler": "^0.25.1",
+ "scheduler": "^0.19.1"
+ }
+ },
+ "react-reconciler": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.25.1.tgz",
+ "integrity": "sha512-R5UwsIvRcSs3w8n9k3tBoTtUHdVhu9u84EG7E5M0Jk9F5i6DA1pQzPfUZd6opYWGy56MJOtV3VADzy6DRwYDjw==",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.2",
+ "scheduler": "^0.19.1"
+ }
+ },
"react-router": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz",
@@ -12915,6 +13033,11 @@
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
+ "ua-parser-js": {
+ "version": "0.7.22",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz",
+ "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q=="
+ },
"unicode-canonical-property-names-ecmascript": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
diff --git a/package.json b/package.json
index d28b26f..5f604aa 100644
--- a/package.json
+++ b/package.json
@@ -6,8 +6,11 @@
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.5.0",
"@testing-library/user-event": "^7.2.1",
+ "konva": "^7.1.3",
"react": "^16.13.1",
+ "react-art": "^16.13.1",
"react-dom": "^16.13.1",
+ "react-konva": "^16.13.0-6",
"react-router-dom": "^5.2.0",
"react-scripts": "3.4.3",
"styled-components": "^5.2.0"
diff --git a/src/components/calculate/index.js b/src/components/calculate/index.js
index 41725a7..fc22ab1 100644
--- a/src/components/calculate/index.js
+++ b/src/components/calculate/index.js
@@ -1,40 +1,40 @@
import React, { useState } from "react";
import styled from "styled-components";
-import CalculateComponent from './calculateComponent';
+import CalculateComponent from "./calculateComponent";
const CalculateContainer = styled.div`
- display: flex;
- flex-direction: row;
- align-items: center;
- justify-content: center;
- background-color: #83D86F;
- min-height: 70vh;
- padding: 10vh 0 10vh 0;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ background-color: #83d86f;
+ min-height: 70vh;
+ padding: 10vh 0 10vh 0;
`;
const ComponentContainer = styled.div`
- width: 80%;
- display: flex;
- flex-direction: column;
- align-items: flex-start;
+ width: 80%;
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
`;
const CalculateTitle = styled.h1`
- color: white;
- font-size: 4rem;
- font-weight: bold;
- margin-bottom: 20px;
+ color: white;
+ font-size: 4rem;
+ font-weight: bold;
+ margin-bottom: 20px;
`;
const CalculateDescription = styled.p`
- color: white;
- font-size: 1.75rem;
- text-align: justify;
- text-justify: auto;
+ color: white;
+ font-size: 1.75rem;
+ text-align: justify;
+ text-justify: auto;
`;
const CalculateA = styled.a`
- color: white;
+ color: white;
`;
const Sub = styled.sub`
@@ -43,19 +43,32 @@ const Sub = styled.sub`
`;
function Calculate() {
- const [step, setStep] = useState(1);
-
- return (
-
-
- Calculate Your Impact
- Find the carbon impact of a machine learning model computation by indicating indicating relevant configuration options.
-
- Data obtained from OpenGenus IQ and MLCO2 Impact.
-
-
-
- )
+ const [step, setStep] = useState(1);
+
+ return (
+
+
+ Calculate Your Impact
+
+ Find the carbon impact of a machine learning model computation by
+ indicating indicating relevant configuration options.
+
+
+
+ Calculated using data from{" "}
+
+ OpenGenus IQ
+ {" "}
+ and{" "}
+
+ MLCO2 Impact
+
+ .
+
+
+
+
+ );
}
-export default Calculate;
\ No newline at end of file
+export default Calculate;
diff --git a/src/components/calculate/visualization.js b/src/components/calculate/visualization.js
index 7d781df..dfaaf5b 100644
--- a/src/components/calculate/visualization.js
+++ b/src/components/calculate/visualization.js
@@ -1,13 +1,81 @@
-import React from 'react';
-// import styled from 'styled-components';
+import React, { useState } from "react";
+import styled from "styled-components";
+import { Stage, Layer, Star, Text } from "react-konva";
+import car from "../../assets/images/car.png";
+
+const VisualizationTitle = styled.h2`
+ font-weight: bold;
+ font-size: 1.5rem;
+`;
+
+const VisualizationButton = styled.button`
+ border: none;
+ padding: 20px;
+ border-radius: 25px;
+ background-color: #45aa29;
+ color: white;
+ font-family: Quicksand, sans-serif;
+ font-weight: medium;
+ font-size: 1.25rem;
+`;
+
+//const VisualizationStage = styled.Stage``;
+
+const generateShapes = () => {
+ return [...Array(10)].map((_, i) => ({
+ id: i.toString(),
+ x: Math.random() * window.innerWidth,
+ y: Math.random() * window.innerHeight,
+ rotation: Math.random() * 180,
+ isDragging: false,
+ }));
+};
+
+const INITIAL_STATE = generateShapes();
function Visualization(props) {
- return (
- <>
- Visualization
-
- >
- )
+ const [stars, setStars] = useState(INITIAL_STATE);
+
+ return (
+ <>
+
+ Putting your data into perspective
+
+
+
+ {stars.map((star) => (
+
+ ))}
+
+
+ {
+ props.setStep(1);
+ }}
+ >
+ Start over
+
+ >
+ );
}
-export default Visualization;
\ No newline at end of file
+export default Visualization;