diff --git a/package-lock.json b/package-lock.json index cc8c1402b118ee8e3080cf596c1806e76418960d..d7738014310adcc25f0f9078b05135a51fb6a13c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,8 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", @@ -6861,6 +6863,419 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/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==" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -7000,6 +7415,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -9571,6 +9994,14 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/ipaddr.js": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", @@ -15480,6 +15911,11 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, "node_modules/rollup": { "version": "2.79.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", @@ -15571,6 +16007,11 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, "node_modules/safe-array-concat": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", diff --git a/package.json b/package.json index 43c4faf5ccb6e47c7eca23ed434f74945db347c9..94cef8b5d1be8eeebd567ba8f9ee1a48cfcbb3f1 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,8 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", diff --git a/src/App.css b/src/App.css index 74b5e053450a48a6bdb4d71aad648e7af821975c..a549fe39ca6c14acef031d13f8ffb46932c64e88 100644 --- a/src/App.css +++ b/src/App.css @@ -14,14 +14,14 @@ } .App-header { - background-color: #282c34; - min-height: 100vh; + background-color: #fff; + /* min-height: 100vh; */ display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: calc(10px + 2vmin); - color: white; + color: orange; } .App-link { diff --git a/src/App.js b/src/App.js index 37845757234ccb68531c10cf7a2ffc589c47e342..a52fa2014e9dc51c6f7844beeb58eb395f49f02e 100644 --- a/src/App.js +++ b/src/App.js @@ -1,22 +1,23 @@ import logo from './logo.svg'; import './App.css'; +import Sankey from './sankey/index' + +import {ReactComponent as Logo} from "./logo.svg" + + function App() { return ( <div className="App"> + <div className='App-header'> + <Logo style={{height: "100px", width: "200px"}} /> + </div> <header className="App-header"> - <img src={logo} className="App-logo" alt="logo" /> - <p> - Edit <code>src/App.js</code> and save to reload. - </p> - <a - className="App-link" - href="https://reactjs.org" - target="_blank" - rel="noopener noreferrer" - > - Learn React - </a> + {/* */} + +{/* <div style={{height: "100%", width: "100%",}}> */} +<Sankey /> +{/* </div> */} </header> </div> ); diff --git a/src/logo.svg b/src/logo.svg index 9dfc1c058cebbef8b891c5062be6f31033d7d186..d825024d264acfb97a5f9c283dc56bcca3649085 100644 --- a/src/logo.svg +++ b/src/logo.svg @@ -1 +1,112 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg> \ No newline at end of file +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 27.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 841.89 425.2" style="enable-background:new 0 0 841.89 425.2;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#EF7D00;} +</style> +<g> + <path d="M375.3,227.61c-2.41-2.41-3.61-5.72-3.61-9.93c0-8.43,4.31-12.64,12.94-12.64h135.12v-34.61H382.52 + c-17.66,0-31.15,4.17-40.48,12.49c-9.33,8.33-13.99,20.21-13.99,35.66c0,15.25,4.61,26.93,13.84,35.06 + c9.23,8.12,22.77,12.19,40.63,12.19h95.4c8.43,0,12.64,4.62,12.64,13.84c0,9.43-4.21,14.14-12.64,14.14H330.46v34.61h155.28 + c15.45,0,27.39-4.36,35.81-13.09c8.43-8.73,12.64-20.92,12.64-36.57c0-15.45-4.17-27.23-12.49-35.36 + c-8.33-8.13-20.31-12.19-35.96-12.19H384.63C380.82,231.22,377.71,230.02,375.3,227.61L375.3,227.61z M308.5,249.28 + c0-25.08-7.52-44.24-22.57-57.48c-15.05-13.24-36.01-19.86-62.9-19.86H111.68v222.7h43.64v-67.71h67.71 + c26.88,0,47.85-6.62,62.9-19.86C300.97,293.82,308.5,274.56,308.5,249.28L308.5,249.28z M263.36,249.28 + c0,14.44-3.46,25.23-10.38,32.35c-6.92,7.12-16.9,10.68-29.94,10.68h-67.71v-85.77h67.71c13.04,0,23.02,3.56,29.94,10.68 + C259.89,224.35,263.36,235.04,263.36,249.28L263.36,249.28z M78.58,171.94H34.94v154.98h43.64V171.94L78.58,171.94z"/> + <path d="M198.53,394.63v-38.57h-4.48v38.57H198.53L198.53,394.63z M232.62,394.63v-18.86c0-3.69-0.88-6.38-2.64-8.06 + c-1.76-1.68-4.38-2.52-7.86-2.52c-1.99,0-3.79,0.39-5.41,1.17c-1.62,0.78-2.88,1.89-3.77,3.31h-0.21l-0.71-3.96h-3.56v28.91h4.38 + v-15.17c0-3.76,0.7-6.46,2.11-8.1c1.41-1.64,3.62-2.45,6.65-2.45c2.29,0,3.96,0.58,5.04,1.74s1.61,2.92,1.61,5.28v18.7H232.62 + L232.62,394.63z M245.99,353.58h-4.38v41.05h4.38V353.58L245.99,353.58z M259.66,365.72h-4.38v28.91h4.38V365.72L259.66,365.72z + M255.65,360.09c0.49,0.48,1.11,0.73,1.85,0.73c0.7,0,1.31-0.24,1.82-0.73c0.51-0.48,0.77-1.22,0.77-2.2 + c0-0.98-0.26-1.71-0.77-2.19c-0.51-0.48-1.12-0.71-1.82-0.71c-0.74,0-1.35,0.23-1.85,0.7c-0.49,0.47-0.74,1.2-0.74,2.2 + C254.91,358.87,255.15,359.6,255.65,360.09L255.65,360.09z M293.11,394.63v-18.86c0-3.69-0.88-6.38-2.64-8.06 + c-1.76-1.68-4.38-2.52-7.86-2.52c-1.99,0-3.79,0.39-5.41,1.17c-1.62,0.78-2.88,1.89-3.77,3.31h-0.21l-0.71-3.96h-3.56v28.91h4.38 + v-15.17c0-3.76,0.7-6.46,2.11-8.1c1.41-1.64,3.62-2.45,6.65-2.45c2.29,0,3.97,0.58,5.04,1.74s1.61,2.92,1.61,5.28v18.7H293.11 + L293.11,394.63z M319.32,394.72c1.38-0.29,2.85-0.77,4.39-1.44v-3.91c-3.04,1.3-6.12,1.95-9.23,1.95c-2.95,0-5.25-0.88-6.87-2.64 + c-1.63-1.76-2.48-4.34-2.57-7.73h19.92v-2.77c0-3.91-1.06-7.05-3.17-9.43c-2.11-2.38-4.98-3.58-8.6-3.58 + c-3.87,0-6.95,1.37-9.25,4.12c-2.3,2.74-3.44,6.45-3.44,11.11c0,4.63,1.24,8.24,3.71,10.84c2.47,2.6,5.84,3.9,10.12,3.9 + C316.27,395.16,317.94,395.01,319.32,394.72L319.32,394.72z M318.41,371.06c1.23,1.47,1.85,3.58,1.85,6.34h-15.12 + c0.25-2.67,1.06-4.77,2.44-6.28c1.38-1.51,3.23-2.27,5.55-2.27C315.42,368.86,317.18,369.59,318.41,371.06L318.41,371.06z + M357.11,356.06h-10v38.57h4.49v-15.17h4.54c4.96,0,8.77-1.05,11.44-3.15c2.67-2.1,4-5.1,4-9.01 + C371.57,359.81,366.75,356.06,357.11,356.06L357.11,356.06L357.11,356.06z M351.6,359.94h5.01c3.53,0,6.14,0.63,7.81,1.87 + c1.67,1.25,2.51,3.15,2.51,5.7c0,2.83-0.89,4.89-2.66,6.17c-1.78,1.28-4.65,1.92-8.63,1.92h-4.04V359.94L351.6,359.94z + M387.18,366.72c-1.51,1.02-2.81,2.47-3.88,4.35h-0.21l-0.5-5.36h-3.61v28.91h4.38v-15.51c0-2.83,0.83-5.2,2.49-7.1 + c1.66-1.9,3.66-2.85,6-2.85c0.92,0,1.97,0.13,3.17,0.4l0.61-4.06c-1.02-0.21-2.17-0.32-3.46-0.32 + C390.36,365.19,388.7,365.7,387.18,366.72L387.18,366.72z M422.42,369.23c-2.38-2.69-5.6-4.04-9.64-4.04 + c-4.19,0-7.46,1.32-9.81,3.94c-2.36,2.63-3.54,6.3-3.54,11.01c0,3.04,0.54,5.7,1.63,7.97c1.09,2.27,2.64,4.01,4.64,5.22 + c2.01,1.21,4.3,1.82,6.89,1.82c4.18,0,7.47-1.32,9.84-3.97s3.56-6.33,3.56-11.04C425.99,375.56,424.8,371.92,422.42,369.23 + L422.42,369.23z M406.15,371.73c1.46-1.88,3.62-2.82,6.49-2.82c2.9,0,5.1,0.95,6.58,2.86c1.49,1.91,2.23,4.7,2.23,8.38 + c0,3.71-0.74,6.53-2.23,8.46c-1.49,1.93-3.66,2.89-6.53,2.89s-5.04-0.97-6.52-2.9c-1.48-1.93-2.22-4.75-2.22-8.44 + C403.96,376.42,404.69,373.62,406.15,371.73L406.15,371.73z M452.53,393.66v-3.88c-2.53,1.04-5,1.56-7.41,1.56 + c-2.81,0-4.94-0.95-6.37-2.85c-1.43-1.9-2.15-4.62-2.15-8.18c0-7.49,2.94-11.24,8.81-11.24c0.88,0,1.89,0.13,3.03,0.38 + c1.14,0.26,2.2,0.58,3.17,0.96l1.35-3.72c-0.79-0.4-1.88-0.76-3.27-1.06c-1.39-0.3-2.78-0.45-4.17-0.45 + c-4.31,0-7.63,1.32-9.96,3.96c-2.33,2.64-3.5,6.38-3.5,11.21c0,4.71,1.15,8.36,3.44,10.93c2.3,2.58,5.54,3.86,9.72,3.86 + C448.16,395.16,450.59,394.66,452.53,393.66L452.53,393.66L452.53,393.66z M476.6,394.72c1.38-0.29,2.84-0.77,4.39-1.44v-3.91 + c-3.04,1.3-6.12,1.95-9.23,1.95c-2.95,0-5.25-0.88-6.87-2.64c-1.63-1.76-2.48-4.34-2.57-7.73h19.92v-2.77 + c0-3.91-1.06-7.05-3.17-9.43c-2.11-2.38-4.98-3.58-8.6-3.58c-3.87,0-6.95,1.37-9.25,4.12c-2.3,2.74-3.44,6.45-3.44,11.11 + c0,4.63,1.24,8.24,3.71,10.84c2.47,2.6,5.84,3.9,10.12,3.9C473.56,395.16,475.22,395.01,476.6,394.72L476.6,394.72z M475.69,371.06 + c1.23,1.47,1.85,3.58,1.85,6.34h-15.12c0.25-2.67,1.06-4.77,2.44-6.28c1.38-1.51,3.23-2.27,5.55-2.27 + C472.7,368.86,474.46,369.59,475.69,371.06L475.69,371.06z M506.54,381.97c-1.21-1.27-3.52-2.52-6.95-3.77 + c-2.5-0.93-4.19-1.64-5.06-2.14c-0.88-0.49-1.52-1.01-1.91-1.56c-0.4-0.54-0.59-1.2-0.59-1.98c0-1.14,0.53-2.04,1.58-2.69 + c1.05-0.65,2.62-0.98,4.7-0.98c2.36,0,4.99,0.6,7.89,1.79l1.56-3.56c-2.97-1.27-6.01-1.9-9.13-1.9c-3.34,0-5.97,0.68-7.89,2.04 + c-1.92,1.36-2.88,3.22-2.88,5.58c0,1.32,0.28,2.45,0.83,3.4c0.55,0.95,1.4,1.8,2.53,2.55c1.13,0.75,3.05,1.62,5.74,2.62 + c2.83,1.09,4.74,2.04,5.71,2.84c0.98,0.8,1.46,1.76,1.46,2.89c0,1.49-0.62,2.61-1.85,3.34c-1.23,0.73-2.99,1.1-5.28,1.1 + c-1.48,0-3.01-0.2-4.6-0.61c-1.59-0.4-3.08-0.96-4.47-1.66v4.06c2.15,1.21,5.13,1.82,8.97,1.82c3.62,0,6.44-0.73,8.44-2.19 + c2-1.46,3.01-3.54,3.01-6.23C508.35,384.83,507.75,383.24,506.54,381.97L506.54,381.97z M532.32,381.97 + c-1.21-1.27-3.52-2.52-6.95-3.77c-2.5-0.93-4.19-1.64-5.07-2.14c-0.88-0.49-1.52-1.01-1.91-1.56c-0.4-0.54-0.59-1.2-0.59-1.98 + c0-1.14,0.53-2.04,1.58-2.69c1.05-0.65,2.62-0.98,4.7-0.98c2.36,0,4.99,0.6,7.89,1.79l1.56-3.56c-2.97-1.27-6.02-1.9-9.13-1.9 + c-3.34,0-5.97,0.68-7.89,2.04c-1.92,1.36-2.88,3.22-2.88,5.58c0,1.32,0.28,2.45,0.83,3.4c0.55,0.95,1.4,1.8,2.53,2.55 + c1.13,0.75,3.05,1.62,5.74,2.62c2.83,1.09,4.74,2.04,5.71,2.84c0.98,0.8,1.47,1.76,1.47,2.89c0,1.49-0.62,2.61-1.85,3.34 + c-1.23,0.73-2.99,1.1-5.28,1.1c-1.48,0-3.01-0.2-4.6-0.61c-1.59-0.4-3.08-0.96-4.47-1.66v4.06c2.15,1.21,5.14,1.82,8.97,1.82 + c3.62,0,6.44-0.73,8.44-2.19c2.01-1.46,3.01-3.54,3.01-6.23C534.13,384.83,533.52,383.24,532.32,381.97L532.32,381.97z + M575.43,377.93c-1.52-1.65-4.3-3.2-8.35-4.64c-2.41-0.86-4.2-1.65-5.37-2.36s-2-1.49-2.49-2.35c-0.49-0.85-0.74-1.95-0.74-3.29 + c0-1.81,0.67-3.23,2.01-4.25c1.34-1.02,3.19-1.53,5.57-1.53c3.01,0,6.1,0.67,9.29,2.01l1.4-3.9c-3.22-1.41-6.74-2.11-10.58-2.11 + c-3.68,0-6.63,0.88-8.86,2.64c-2.23,1.76-3.35,4.12-3.35,7.1c0,2.83,0.77,5.13,2.31,6.88c1.54,1.76,4.1,3.28,7.69,4.56 + c2.57,0.91,4.48,1.73,5.74,2.45c1.26,0.72,2.15,1.51,2.69,2.36c0.54,0.85,0.81,1.95,0.81,3.28c0,2.02-0.76,3.6-2.27,4.73 + c-1.51,1.14-3.76,1.7-6.75,1.7c-1.83,0-3.68-0.19-5.54-0.58c-1.86-0.39-3.59-0.91-5.17-1.58v4.33c2.46,1.18,5.98,1.77,10.55,1.77 + c4.22,0,7.56-0.95,10.03-2.85c2.46-1.9,3.69-4.55,3.69-7.94C577.71,381.73,576.95,379.59,575.43,377.93L575.43,377.93z + M606.32,369.23c-2.38-2.69-5.6-4.04-9.64-4.04c-4.19,0-7.46,1.32-9.81,3.94c-2.36,2.63-3.54,6.3-3.54,11.01 + c0,3.04,0.54,5.7,1.64,7.97c1.09,2.27,2.64,4.01,4.64,5.22c2.01,1.21,4.3,1.82,6.89,1.82c4.18,0,7.47-1.32,9.84-3.97 + c2.37-2.65,3.56-6.33,3.56-11.04C609.89,375.56,608.7,371.92,606.32,369.23L606.32,369.23z M590.05,371.73 + c1.46-1.88,3.62-2.82,6.49-2.82c2.9,0,5.1,0.95,6.58,2.86c1.49,1.91,2.23,4.7,2.23,8.38c0,3.71-0.74,6.53-2.23,8.46 + c-1.49,1.93-3.66,2.89-6.53,2.89s-5.04-0.97-6.52-2.9s-2.22-4.75-2.22-8.44C587.86,376.42,588.59,373.62,590.05,371.73 + L590.05,371.73z M621.95,353.58h-4.38v41.05h4.38V353.58L621.95,353.58z M630.92,365.72v18.92c0,3.68,0.88,6.35,2.62,8.02 + c1.75,1.67,4.38,2.51,7.9,2.51c2.04,0,3.86-0.38,5.45-1.13c1.59-0.75,2.84-1.85,3.73-3.27h0.24l0.63,3.88h3.61v-28.91h-4.38v15.2 + c0,3.75-0.7,6.45-2.1,8.1c-1.4,1.65-3.61,2.48-6.64,2.48c-2.29,0-3.97-0.58-5.04-1.74c-1.07-1.16-1.61-2.92-1.61-5.28v-18.76 + H630.92L630.92,365.72z M670.33,390.15c-0.83-0.93-1.24-2.27-1.24-4.01v-17.02h8.39v-3.4h-8.39v-6.7h-2.53l-1.85,6.17l-4.14,1.82 + v2.11h4.14v17.2c0,5.89,2.8,8.84,8.39,8.84c0.74,0,1.57-0.07,2.49-0.22c0.92-0.15,1.62-0.34,2.1-0.57v-3.35 + c-0.42,0.12-0.99,0.24-1.72,0.36c-0.72,0.11-1.47,0.17-2.24,0.17C672.29,391.55,671.16,391.08,670.33,390.15L670.33,390.15z + M687.85,365.72h-4.38v28.91h4.38V365.72L687.85,365.72z M683.84,360.09c0.49,0.48,1.11,0.73,1.85,0.73c0.7,0,1.31-0.24,1.82-0.73 + c0.51-0.48,0.77-1.22,0.77-2.2c0-0.98-0.26-1.71-0.77-2.19c-0.51-0.48-1.12-0.71-1.82-0.71c-0.74,0-1.35,0.23-1.85,0.7 + c-0.49,0.47-0.74,1.2-0.74,2.2C683.1,358.87,683.35,359.6,683.84,360.09L683.84,360.09z M718.52,369.23 + c-2.38-2.69-5.6-4.04-9.64-4.04c-4.19,0-7.46,1.32-9.81,3.94c-2.36,2.63-3.53,6.3-3.53,11.01c0,3.04,0.54,5.7,1.64,7.97 + c1.09,2.27,2.64,4.01,4.64,5.22c2.01,1.21,4.3,1.82,6.89,1.82c4.19,0,7.47-1.32,9.84-3.97c2.37-2.65,3.56-6.33,3.56-11.04 + C722.09,375.56,720.9,371.92,718.52,369.23L718.52,369.23z M702.25,371.73c1.46-1.88,3.62-2.82,6.49-2.82c2.9,0,5.1,0.95,6.58,2.86 + c1.49,1.91,2.23,4.7,2.23,8.38c0,3.71-0.74,6.53-2.23,8.46c-1.49,1.93-3.66,2.89-6.53,2.89c-2.87,0-5.04-0.97-6.52-2.9 + s-2.22-4.75-2.22-8.44C700.06,376.42,700.79,373.62,702.25,371.73L702.25,371.73z M753.93,394.63v-18.86 + c0-3.69-0.88-6.38-2.64-8.06c-1.76-1.68-4.38-2.52-7.86-2.52c-1.99,0-3.79,0.39-5.41,1.17c-1.62,0.78-2.87,1.89-3.77,3.31h-0.21 + l-0.71-3.96h-3.56v28.91h4.38v-15.17c0-3.76,0.7-6.46,2.11-8.1c1.41-1.64,3.62-2.45,6.65-2.45c2.29,0,3.97,0.58,5.04,1.74 + c1.07,1.16,1.61,2.92,1.61,5.28v18.7H753.93L753.93,394.63z M779.77,381.97c-1.2-1.27-3.52-2.52-6.95-3.77 + c-2.5-0.93-4.19-1.64-5.07-2.14c-0.88-0.49-1.52-1.01-1.91-1.56c-0.4-0.54-0.59-1.2-0.59-1.98c0-1.14,0.53-2.04,1.58-2.69 + c1.06-0.65,2.62-0.98,4.7-0.98c2.36,0,4.99,0.6,7.89,1.79l1.56-3.56c-2.97-1.27-6.02-1.9-9.13-1.9c-3.34,0-5.97,0.68-7.89,2.04 + c-1.92,1.36-2.88,3.22-2.88,5.58c0,1.32,0.28,2.45,0.83,3.4c0.55,0.95,1.4,1.8,2.53,2.55c1.13,0.75,3.05,1.62,5.74,2.62 + c2.83,1.09,4.73,2.04,5.71,2.84c0.98,0.8,1.46,1.76,1.46,2.89c0,1.49-0.61,2.61-1.85,3.34c-1.23,0.73-2.99,1.1-5.28,1.1 + c-1.48,0-3.01-0.2-4.6-0.61c-1.59-0.4-3.08-0.96-4.47-1.66v4.06c2.15,1.21,5.14,1.82,8.97,1.82c3.62,0,6.44-0.73,8.44-2.19 + c2-1.46,3.01-3.54,3.01-6.23C781.58,384.83,780.98,383.24,779.77,381.97L779.77,381.97z"/> + <path class="st0" d="M806.33,245.36c0-5.34-2.08-10.36-5.85-14.13c-3.77-3.77-8.79-5.85-14.13-5.85c0,0,0,0,0,0 + c-5.34,0-10.36,2.08-14.13,5.85c-3.78,3.77-5.86,8.79-5.86,14.13c0,5.34,2.08,10.36,5.86,14.13c3.77,3.77,8.79,5.84,14.13,5.84 + c5.34,0,10.36-2.08,14.13-5.85C804.26,255.72,806.33,250.7,806.33,245.36L806.33,245.36z M794.83,253.85 + c-4.68,4.68-12.29,4.68-16.96,0c-2.27-2.27-3.51-5.28-3.51-8.48c0-3.2,1.25-6.22,3.51-8.48c2.26-2.26,5.27-3.51,8.48-3.51 + c3.21,0,6.22,1.25,8.48,3.51c2.27,2.27,3.51,5.28,3.51,8.48C798.34,248.57,797.09,251.58,794.83,253.85L794.83,253.85z + M666.46,299.74l106.74-106.74l-15.33-57.21l-57.21-15.33l-57.87,57.87l-5.25-9.1h-51.8l-25.9,44.86l25.9,44.86h16.68l6.82,25.47 + L666.46,299.74L666.46,299.74z M632.93,250.95h-24.37l-5.72-21.36l38.25-38.25l13.13,22.75L632.93,250.95L632.93,250.95z + M751.35,142.31l12.94,48.3L664.07,290.82l-48.3-12.94l-5.08-18.94h26.85l25.9-44.86l-16.51-28.6l56.12-56.12L751.35,142.31 + L751.35,142.31z M632.93,177.21l4.02,6.96l-43.03,43.03l6.36,23.75h-9.92l-21.28-36.87l21.28-36.87H632.93L632.93,177.21z + M683.93,129.69c22.18-22.18,22.18-58.27,0-80.45c-22.18-22.18-58.27-22.18-80.45,0c-22.18,22.18-22.18,58.27,0,80.45 + c10.75,10.75,25.03,16.66,40.23,16.66C658.9,146.35,673.18,140.43,683.93,129.69L683.93,129.69z M678.28,54.88 + c19.06,19.07,19.07,50.09,0,69.15c-9.23,9.23-21.51,14.32-34.57,14.32c-13.06,0-25.34-5.09-34.58-14.32 + c-19.06-19.06-19.06-50.08,0-69.15c9.22-9.22,21.5-14.3,34.58-14.3C656.78,40.59,669.06,45.67,678.28,54.88L678.28,54.88z"/> +</g> +</svg> diff --git a/src/milk.csv b/src/milk.csv new file mode 100644 index 0000000000000000000000000000000000000000..75d7948c56a79b692c13c3313360c1aaf2f7f1cb --- /dev/null +++ b/src/milk.csv @@ -0,0 +1,20 @@ +Source,Target,Category,Value, +Milk Skimming,Water Push Out Pasteurizer,Red Wastewater,12000,1 +Cooling Water,Cooling Milk Separator,,5600,E +Cooling Milk Separator,Cooling Water,Green Wastewater,5600,2 +Milk Skimming,Pasteurized Skim-Storage,,309333,wie viel hier +Milk Skimming,Raw Cream Storage,,200000, +F Water Flush Cream Tanks,Raw Cream Storage,,3000, +G Water Flush Milk Past,Pasteurized Skim-Storage,,2667, +Pasteurized Skim-Storage,Water + Milk,Yellow Wastewater,2667,3 +Pasteurized Skim-Storage,Heat Treatment,,309333, +I CIP Evaporator Water Flush,Heat Treatment,,11250, +I CIP Evaporator Acid Flush,Heat Treatment,,4000, +Heat Treatment,CIP Evaporator Flush,Red Wastewater,15250,5 +Cooling Water,Cooling Water Pumps,,24000,H +Cooling Water Pumps,Cooling Water,,24000,4 +Heat Treatment,Water,,288197, +Cooling Water,Heat Treatment,,16800,J +Heat Treatment,Cooling Water,,16800,6 +K Water Flush Past. Milk Concentrate,Pasteurized Milk Concentrate Storage,,2667,K +Pasteurized Milk Concentrate Storage,Water + Milk,,2667,7 \ No newline at end of file diff --git a/src/sankey/SankeyDiagram.jsx b/src/sankey/SankeyDiagram.jsx new file mode 100644 index 0000000000000000000000000000000000000000..402375fc17f335dff3c39f277672100a331cfe6d --- /dev/null +++ b/src/sankey/SankeyDiagram.jsx @@ -0,0 +1,89 @@ +import React from 'react'; +import { scaleOrdinal } from "d3"; +import { sankey, sankeyJustify, sankeyLinkHorizontal } from "d3-sankey"; + +const MARGIN_Y = 25; +const MARGIN_X = 5; +const COLORS = ["#38ACEC", "#82CAFA", "#B4CFEC", "#95B9C7"]; + +const Sankey = ({ width, height, data }) => { + const allGroups = [...new Set(data.nodes.map((d) => d.category))].sort(); + const colorScale = scaleOrdinal().domain(allGroups).range(COLORS); + + // Set the sankey diagram properties + const sankeyGenerator = sankey() + .nodeWidth(26) + .nodePadding(10) + .extent([ + [MARGIN_X, MARGIN_Y], + [width - MARGIN_X * 2, height - MARGIN_Y * 2], + ]) + .nodeId((node) => node.name) + .nodeAlign(sankeyJustify); + + // Compute nodes and links positions + const { nodes, links } = sankeyGenerator(data); + + // Draw the nodes + const allNodes = nodes.map((node) => { + return ( + <g key={node.index}> + <rect + height={node.y1 - node.y0} + width={sankeyGenerator.nodeWidth()} + x={node.x0} + y={node.y0} + stroke={"black"} + fill={colorScale(node.category)} + fillOpacity={1} + rx={0.9} + /> + </g> + ); + }); + + // Draw the links + const allLinks = links.map((link, i) => { + const linkGenerator = sankeyLinkHorizontal(); + const path = linkGenerator(link); + + return ( + <path + key={i} + d={path} + stroke={colorScale(link.source.category)} + fill="none" + strokeOpacity={0.3} + strokeWidth={link.width} + /> + ); + }); + + // Draw the Labels + const allLabels = nodes.map((node, i) => { + return ( + <text + key={i} + x={node.x0 < width / 2 ? node.x1 + 6 : node.x0 - 6} + y={(node.y1 + node.y0) / 2} + dy="0.35rem" + textAnchor={node.x0 < width / 2 ? "start" : "end"} + fontSize={12} + > + {node.name} + </text> + ); + }); + + return ( + <div> + <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`} preserveAspectRatio="xMidYMid meet"> + {allLinks} + {allNodes} + {allLabels} + </svg> + </div> + ); +}; + +export default Sankey; diff --git a/src/sankey/data.js b/src/sankey/data.js new file mode 100644 index 0000000000000000000000000000000000000000..9b7f89a935be90d634e3986ce3db567f94f75560 --- /dev/null +++ b/src/sankey/data.js @@ -0,0 +1,625 @@ +// export const data = { +// nodes: [ + // { + // name: "Milk", + // category: "Milk", + // }, + // { + // name: "Milk Reception", + // category: "Milk-reception", + // }, + // { + // name: "Water Flush", + // category: "Water-flush", + // }, + // { + // name: "Water Flush", + // category: "Water-flush", + // }, + // { + // name: "Raw Milk Storage", + // category: "Raw-milk-storage", + // }, + // { + // name: "Flush milk silos", + // category: "flush-milk-silos", + // }, +// ], +// links: [ +// { +// source: "Milk", +// target: "Milk Reception", +// value: 500000, +// // }, +// { +// source: "Water Flush", +// target: "Milk Reception", +// value: 5333, +// }, +// { +// source: "Milk Reception", +// target: "Raw Milk Storage", +// value: 5053333, +// }, +// // { +// // source: "Bio-conversion", +// // target: "Solid", +// // value: 280.322, +// // }, +// // { +// // source: "Bio-conversion", +// // target: "Gas", +// // value: 81.144, +// // }, +// // { +// // source: "Biofuel imports", +// // target: "Liquid", +// // value: 35, +// // }, +// // { +// // source: "Biomass imports", +// // target: "Solid", +// // value: 35, +// // }, +// // { +// // source: "Coal imports", +// // target: "Coal", +// // value: 11.606, +// // }, +// // { +// // source: "Coal reserves", +// // target: "Coal", +// // value: 63.965, +// // }, +// // { +// // source: "Coal", +// // target: "Solid", +// // value: 75.571, +// // }, +// // { +// // source: "District heating", +// // target: "Industry", +// // value: 10.639, +// // }, +// // { +// // source: "District heating", +// // target: "Heating and cooling - commercial", +// // value: 22.505, +// // }, +// // { +// // source: "District heating", +// // target: "Heating and cooling - homes", +// // value: 46.184, +// // }, +// // { +// // source: "Electricity grid", +// // target: "Over generation / exports", +// // value: 104.453, +// // }, +// // { +// // source: "Electricity grid", +// // target: "Heating and cooling - homes", +// // value: 113.726, +// // }, +// // { +// // source: "Electricity grid", +// // target: "H2 conversion", +// // value: 27.14, +// // }, +// // { +// // source: "Electricity grid", +// // target: "Industry", +// // value: 342.165, +// // }, +// // { +// // source: "Electricity grid", +// // target: "Road transport", +// // value: 37.797, +// // }, +// // { +// // source: "Electricity grid", +// // target: "Agriculture", +// // value: 4.412, +// // }, +// // { +// // source: "Electricity grid", +// // target: "Heating and cooling - commercial", +// // value: 40.858, +// // }, +// // { +// // source: "Electricity grid", +// // target: "Losses", +// // value: 56.691, +// // }, +// // { +// // source: "Electricity grid", +// // target: "Rail transport", +// // value: 7.863, +// // }, +// // { +// // source: "Electricity grid", +// // target: "Lighting & appliances - commercial", +// // value: 90.008, +// // }, +// // { +// // source: "Electricity grid", +// // target: "Lighting & appliances - homes", +// // value: 93.494, +// // }, +// // { +// // source: "Gas imports", +// // target: "Ngas", +// // value: 40.719, +// // }, +// // { +// // source: "Gas reserves", +// // target: "Ngas", +// // value: 82.233, +// // }, +// // { +// // source: "Gas", +// // target: "Heating and cooling - commercial", +// // value: 0.129, +// // }, +// // { +// // source: "Gas", +// // target: "Losses", +// // value: 1.401, +// // }, +// // { +// // source: "Gas", +// // target: "Thermal generation", +// // value: 151.891, +// // }, +// // { +// // source: "Gas", +// // target: "Agriculture", +// // value: 2.096, +// // }, +// // { +// // source: "Gas", +// // target: "Industry", +// // value: 48.58, +// // }, +// // { +// // source: "Geothermal", +// // target: "Electricity grid", +// // value: 7.013, +// // }, +// // { +// // source: "H2 conversion", +// // target: "H2", +// // value: 20.897, +// // }, +// // { +// // source: "H2 conversion", +// // target: "Losses", +// // value: 6.242, +// // }, +// // { +// // source: "H2", +// // target: "Road transport", +// // value: 20.897, +// // }, +// // { +// // source: "Hydro", +// // target: "Electricity grid", +// // value: 6.995, +// // }, +// // { +// // source: "Liquid", +// // target: "Industry", +// // value: 121.066, +// // }, +// // { +// // source: "Liquid", +// // target: "International shipping", +// // value: 128.69, +// // }, +// // { +// // source: "Liquid", +// // target: "Road transport", +// // value: 135.835, +// // }, +// // { +// // source: "Liquid", +// // target: "Domestic aviation", +// // value: 14.458, +// // }, +// // { +// // source: "Liquid", +// // target: "International aviation", +// // value: 206.267, +// // }, +// // { +// // source: "Liquid", +// // target: "Agriculture", +// // value: 3.64, +// // }, +// // { +// // source: "Liquid", +// // target: "National navigation", +// // value: 33.218, +// // }, +// // { +// // source: "Liquid", +// // target: "Rail transport", +// // value: 4.413, +// // }, +// // { +// // source: "Marine algae", +// // target: "Bio-conversion", +// // value: 4.375, +// // }, +// // { +// // source: "Ngas", +// // target: "Gas", +// // value: 122.952, +// // }, +// // { +// // source: "Nuclear", +// // target: "Thermal generation", +// // value: 839.978, +// // }, +// // { +// // source: "Oil imports", +// // target: "Oil", +// // value: 504.287, +// // }, +// // { +// // source: "Oil reserves", +// // target: "Oil", +// // value: 107.703, +// // }, +// // { +// // source: "Oil", +// // target: "Liquid", +// // value: 611.99, +// // }, +// // { +// // source: "Other waste", +// // target: "Solid", +// // value: 56.587, +// // }, +// // { +// // source: "Other waste", +// // target: "Bio-conversion", +// // value: 77.81, +// // }, +// // { +// // source: "Pumped heat", +// // target: "Heating and cooling - homes", +// // value: 193.026, +// // }, +// // { + // source: "Pumped heat", + // target: "Heating and cooling - commercial", + // value: 70.672, + // }, +// // { +// // source: "Solar PV", +// // target: "Electricity grid", +// // value: 59.901, +// // }, +// // { +// // source: "Solar Thermal", +// // target: "Heating and cooling - homes", +// // value: 19.263, +// // }, +// // { +// // source: "Solar", +// // target: "Solar Thermal", +// // value: 19.263, +// // }, +// // { +// // source: "Solar", +// // target: "Solar PV", +// // value: 59.901, +// // }, +// // { +// // source: "Solid", +// // target: "Agriculture", +// // value: 0.882, +// // }, +// // { +// // source: "Solid", +// // target: "Thermal generation", +// // value: 400.12, +// // }, +// // { +// // source: "Solid", +// // target: "Industry", +// // value: 46.477, +// // }, +// // { +// // source: "Thermal generation", +// // target: "Electricity grid", +// // value: 525.531, +// // }, +// // { +// // source: "Thermal generation", +// // target: "Losses", +// // value: 787.129, +// // }, +// // { +// // source: "Thermal generation", +// // target: "District heating", +// // value: 79.329, +// // }, +// // { +// // source: "Tidal", +// // target: "Electricity grid", +// // value: 9.452, +// // }, +// // { +// // source: "UK land based bioenergy", +// // target: "Bio-conversion", +// // value: 182.01, +// // }, +// // { +// // source: "Wave", +// // target: "Electricity grid", +// // value: 19.013, +// // }, +// // { +// // source: "Wind", +// // target: "Electricity grid", +// // value: 289.366, +// // }, +// ], +// }; + + + + +export const data = { + nodes: [ + { + name: "Milk", + category: "Milk", + }, + { + name: "Milk Reception", + category: "Milk-reception", + }, + { + name: "Water Flush", + category: "Water-flush", + }, + { + name: "Water Flush Pasteurizer", + category: "Water-flush-Pasteurizer", + }, + { + name: "Acid Flush Pasteurizer", + category: "Acid-flush-Pasteurizer", + }, + { + name: "Milk Skimming", + category: "Milk-Skimming", + }, + { + name: "Raw Milk Storage", + category: "Raw-milk-storage", + }, + { + name: "Flush Milk Silos", + category: "Flush-Milk-Silos", + }, + { + name: "Flush Milk Silos 2", + category: "Flush-Milk-Silos-2", + }, + { + name: "Milk Skimming", + category: "Milk-Skimming", + }, + { + name: "Water Push Out Pasteurizer", + category: "Water-Push-Out-Pasteurizer", + }, + { + name: "Cooling Milk Separator", + category: "Cooling-Milk-Separator", + }, + { + name: "Cooling Water Waste", + category: "Cooling-Water-Waste", + }, + { + name: "Pasteurized Skim-Storage", + category: "Pasteurized-Skim-Storage", + }, + { + name: "Raw Cream Storage", + category: "Raw-Cream-Storage", + }, + { + name: "F Water Flush Cream Tanks", + category: "F-Water-Flush-Cream-Tanks", + }, + { + name: "G Water Flush Milk Past", + category: "G-Water-Flush-Milk-Past", + }, + { + name: "Water + Milk", + category: "Water-Milk", + }, + { + name: "Heat Treatment", + category: "Heat-Treatment", + }, + { + name: "I CIP Evaporator Water Flush", + category: "I-CIP-Evaporator-Water-Flush", + }, + { + name: "I CIP Evaporator Acid Flush", + category: "I-CIP-Evaporator-Acid-Flush", + }, + { + name: "CIP Evaporator Flush", + category: "CIP-Evaporator-Flush", + }, + { + name: "Cooling Water Pumps", + category: "Cooling-Water-Pumps", + }, + { + name: "Water", + category: "Water", + }, + { + name: "K Water Flush Past. Milk Concentrate", + category: "K-Water-Flush-Past-Milk-Concentrate", + }, + { + name: "Pasteurized Milk Concentrate Storage", + category: "Pasteurized-Milk-Concentrate-Storage", + } + ], + links: [ + { + source: "Milk", + target: "Milk Reception", + value: 500000, + }, + { + source: "Water Flush", + target: "Milk Reception", + value: 5333, + }, + { + source: "Milk Reception", + target: "Raw Milk Storage", + value: 505333, + }, + { + source: "Flush Milk Silos", + target: "Raw Milk Storage", + value: 2000, + }, + { + source: "Flush Milk Silos 2", + target: "Raw Milk Storage", + value: 2000, + }, + { + source: "Raw Milk Storage", + target: "Milk Skimming", + category: "Red Wastewater", + value: 509353, + }, + { + source: "Water Flush Pasteurizer", + target: "Milk Skimming", + category: "Red Wastewater", + value: 10000, + }, + { + source: "Acid Flush Pasteurizer", + target: "Milk Skimming", + category: "Red Wastewater", + value: 2000, + }, + { + source: "Milk Skimming", + target: "Water Push Out Pasteurizer", + category: "Red Wastewater", + value: 12000, + }, + { + source: "Cooling Water Waste", + target: "Cooling Milk Separator", + category: "Green Wastewater", + value: 5600, + }, + { + source: "Milk Skimming", + target: "Pasteurized Skim-Storage", + category: "", + value: 309333, + }, + { + source: "Milk Skimming", + target: "Raw Cream Storage", + category: "", + value: 200000, + }, + + { + source: "K Water Flush Past. Milk Concentrate", + target: "Pasteurized Milk Concentrate Storage", + category: "", + value: 2667, + }, + { + source: "F Water Flush Cream Tanks", + target: "Raw Cream Storage", + category: "", + value: 35721, + }, + { + source: "Pasteurized Milk Concentrate Storage", + target: "Water + Milk", + category: "", + value: 2667, + }, + { + source: "G Water Flush Milk Past", + target: "Pasteurized Skim-Storage", + category: "", + value: 473632, + }, + { + source: "Pasteurized Skim-Storage", + target: "Water + Milk", + category: "Yellow Wastewater", + value: 2667, + }, + { + source: "Pasteurized Skim-Storage", + target: "Heat Treatment", + category: "", + value: 309333, + }, + { + source: "I CIP Evaporator Water Flush", + target: "Heat Treatment", + category: "", + value: 11250, + }, + { + source: "I CIP Evaporator Acid Flush", + target: "Heat Treatment", + category: "", + value: 4000, + }, + { + source: "Heat Treatment", + target: "CIP Evaporator Flush", + category: "Red Wastewater", + value: 15250, + }, + { + source: "Cooling Water Pumps", + target: "Cooling Water Waste", + category: "", + value: 24000, + }, + { + source: "Heat Treatment", + target: "Water", + category: "", + value: 288197, + }, + { + source: "Water", + target: "Cooling Water Waste", + category: "", + value: 16800, + } + + ] +}; diff --git a/src/sankey/index.jsx b/src/sankey/index.jsx new file mode 100644 index 0000000000000000000000000000000000000000..0dc64dfa0c0ccc330df5b1aed5ddea69ca134acb --- /dev/null +++ b/src/sankey/index.jsx @@ -0,0 +1,11 @@ +import Sankey from "./SankeyDiagram"; +import {data} from "./data" + +const Index = () => { + return ( + <Sankey data={data} width={1200} height={700} /> + ) +} + +export default Index +