diff --git a/package-lock.json b/package-lock.json index 5559ad6..f016bfc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,8 +14,6 @@ "@sentry/tracing": "^6.16.1", "@speedy-tuner/types": "^0.2.1", "antd": "^4.17.3", - "d3": "^7.0.4", - "d3fc": "^15.2.4", "mlg-converter": "^0.5.1", "pako": "^2.0.4", "react": "^17.0.1", @@ -25,7 +23,8 @@ "react-router-dom": "^5.2.1", "react-scripts": "^4.0.3", "react-table-drag-select": "^0.3.1", - "recharts": "^2.1.6" + "recharts": "^2.1.8", + "timechart": "^1.0.0-beta.4" }, "devDependencies": { "@craco/craco": "^6.4.3", @@ -1936,228 +1935,6 @@ "node": ">=10" } }, - "node_modules/@d3fc/d3fc-annotation": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-annotation/-/d3fc-annotation-3.0.11.tgz", - "integrity": "sha512-oqcXG3OnpFyA4m6tTQ61wuDKA2Pdj76YpGO85MosdMwHkWiup/Lm7bnerJhsBTpHbucrumfyf1+DH3c47ZxqIA==", - "dependencies": { - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-rebind": "^6.0.1", - "@d3fc/d3fc-series": "^6.0.4", - "@d3fc/d3fc-shape": "^6.0.1" - }, - "peerDependencies": { - "d3-scale": "*", - "d3-selection": "*" - } - }, - "node_modules/@d3fc/d3fc-axis": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-axis/-/d3fc-axis-3.0.6.tgz", - "integrity": "sha512-6D5HpTiSmht8x9TU7war5iVNW5QFlvzNDk92yJ6hUOKeD/otr2D3wrpvSgJrS7GehceC7Ik86etpoiCjR4wyrg==", - "dependencies": { - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-rebind": "^6.0.1" - }, - "peerDependencies": { - "d3-scale": "*", - "d3-selection": "*", - "d3-shape": "*" - } - }, - "node_modules/@d3fc/d3fc-brush": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-brush/-/d3fc-brush-3.0.3.tgz", - "integrity": "sha512-fc1XBuNWl6DQVFSnBdauI/WNRvtNaeUWwDiLEIMY+v0VlrmGOgWEGCB5otVepGZiL56cjgRtHdwYBdKCvgGBSg==", - "dependencies": { - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-rebind": "^6.0.1" - }, - "peerDependencies": { - "d3-brush": "*", - "d3-dispatch": "*", - "d3-scale": "*", - "d3-selection": "*" - } - }, - "node_modules/@d3fc/d3fc-chart": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-chart/-/d3fc-chart-5.1.4.tgz", - "integrity": "sha512-hfmmfwww5xsEirWcCge17lp2Z1em7wtC2HHJ2w5bsHnLr0Zjko7qwrtkU/MN5oT3qwckRy4QHExJXf6PibwC/g==", - "dependencies": { - "@d3fc/d3fc-axis": "^3.0.6", - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-element": "^6.2.0", - "@d3fc/d3fc-rebind": "^6.0.1", - "@d3fc/d3fc-series": "^6.0.4" - }, - "peerDependencies": { - "d3-scale": "*", - "d3-selection": "*" - } - }, - "node_modules/@d3fc/d3fc-data-join": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-data-join/-/d3fc-data-join-6.0.3.tgz", - "integrity": "sha512-fd1D2Cl4YGjzl3gBhcrvTl/VxaSncY0ZcokWsN8ahtmk9DZK4DnAgHGrdecnXVLkOx+ANDcqxqscYz6MWXLbcA==", - "peerDependencies": { - "d3-selection": "*" - } - }, - "node_modules/@d3fc/d3fc-discontinuous-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-discontinuous-scale/-/d3fc-discontinuous-scale-4.0.2.tgz", - "integrity": "sha512-m1H/fL3BQmkytTjUNd0GVGE6KC0CEervrgRNnM5FluouycsbUCQPhiiN1CY1bRh8xcFDQx9vpOUU7DNCjiEbAQ==", - "dependencies": { - "@d3fc/d3fc-rebind": "^6.0.1" - }, - "peerDependencies": { - "d3-scale": "*", - "d3-time": "*" - } - }, - "node_modules/@d3fc/d3fc-element": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-element/-/d3fc-element-6.2.0.tgz", - "integrity": "sha512-AvdZ3V4mVxF9dGYLiDCoqr3GhrFOUQEc1FcP20QEhQ3fJ3qYRwx7/uhL7G/L2xbe6k4delPgnLOvtoaDenhpZw==" - }, - "node_modules/@d3fc/d3fc-extent": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-extent/-/d3fc-extent-4.0.2.tgz", - "integrity": "sha512-m7w7Dof6KAIDtgzIsTcprWTEoiqExJGsGoQbb97bF+EwIkuEZWRUl1jkoeNL00efpX1o6zSdqSr6lojoR0aI/g==", - "peerDependencies": { - "d3-array": "*" - } - }, - "node_modules/@d3fc/d3fc-financial-feed": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-financial-feed/-/d3fc-financial-feed-7.1.0.tgz", - "integrity": "sha512-K8jktdRJQAiJepglErsuY2ZMKsm0YFWTeuhYnTFb8rWmyhwoPeem9QW+e6xBTiAvbElJm4yTrkal09KmO2cLlQ==", - "peerDependencies": { - "d3-fetch": "*" - } - }, - "node_modules/@d3fc/d3fc-group": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-group/-/d3fc-group-3.0.1.tgz", - "integrity": "sha512-GBUR6a4hkqfSo77iaFS4qPMS5tupH8hmJ8eniiD45GFmWQs69+Dlf8Uhx+GCCvQkE+px6rQyZWVCJKBq6gkz2Q==" - }, - "node_modules/@d3fc/d3fc-label-layout": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-label-layout/-/d3fc-label-layout-7.0.3.tgz", - "integrity": "sha512-EqeUXO5o0yLYfRPXT9zChx4HLZjsd7DTzRhfiIIJAjqEQeFW9ALYrt85ggqxKWaM5BGjtaOFcHFBrOkd9b2AMQ==", - "dependencies": { - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-rebind": "^6.0.1" - }, - "peerDependencies": { - "d3-array": "*", - "d3-scale": "*", - "d3-selection": "*" - } - }, - "node_modules/@d3fc/d3fc-pointer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-pointer/-/d3fc-pointer-3.0.2.tgz", - "integrity": "sha512-GAODK7t+fwH2y/tQaQD0kUZMbrpY+Mu1duFixtthm7yvk1sKWQR9bic3Eh3YBp39lir0VzmHWQhjYNAFnRJERg==", - "dependencies": { - "@d3fc/d3fc-rebind": "^6.0.1" - }, - "peerDependencies": { - "d3-dispatch": "*", - "d3-selection": "*" - } - }, - "node_modules/@d3fc/d3fc-random-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-random-data/-/d3fc-random-data-4.0.1.tgz", - "integrity": "sha512-tKSoImB8V+EKnuwh4K+RBfYWmczgKF+rvH9b3SeGEocw3DlK1SvAr2ZVhYkyFVaqJU5YciWqQfaW5MjVT/33FA==", - "dependencies": { - "@d3fc/d3fc-rebind": "^6.0.1" - }, - "peerDependencies": { - "d3-random": "*", - "d3-time": "*" - } - }, - "node_modules/@d3fc/d3fc-rebind": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-rebind/-/d3fc-rebind-6.0.1.tgz", - "integrity": "sha512-+ryBZ53ALMffbADwnFAtTYQJcT7PE5BwpducGYS0X6Jux6ESnp+fP+cDQvBGbDBOVqaziGnfeLeJXjtMnZujmQ==" - }, - "node_modules/@d3fc/d3fc-sample": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-sample/-/d3fc-sample-5.0.1.tgz", - "integrity": "sha512-VJ4stSJDxcAhYhifiGE63MBVDPstx+yB3+JHuJt/qc8MjHSOC4NjrPpABNUS6qwfmOcQKbaRPN8urzJ+f5FCmg==", - "dependencies": { - "@d3fc/d3fc-rebind": "^6.0.1" - }, - "peerDependencies": { - "d3-array": "*" - } - }, - "node_modules/@d3fc/d3fc-series": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-series/-/d3fc-series-6.0.4.tgz", - "integrity": "sha512-DilhaYvWcPuEuIHZfTJgkcHtY+uRsLUbTcF4GhUlk4sb88V4G7YFiVym1aZwHLDozfOXftmlVqwYvPMb/69Vyw==", - "dependencies": { - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-rebind": "^6.0.1", - "@d3fc/d3fc-shape": "^6.0.1", - "@d3fc/d3fc-webgl": "^3.1.0" - }, - "peerDependencies": { - "d3-array": "*", - "d3-scale": "*", - "d3-scale-chromatic": "*", - "d3-selection": "*", - "d3-shape": "*" - } - }, - "node_modules/@d3fc/d3fc-shape": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-shape/-/d3fc-shape-6.0.1.tgz", - "integrity": "sha512-/dD3S8BWrOjO2mSptUmwe38V7KG4Kw6liIE5NXZJjX/XidfZhuDu7WWuya3i90HeNYDZNcs6Z+4qM3FnvlZf8g==", - "peerDependencies": { - "d3-path": "*" - } - }, - "node_modules/@d3fc/d3fc-technical-indicator": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-technical-indicator/-/d3fc-technical-indicator-8.1.0.tgz", - "integrity": "sha512-ma5l4nLC0kReDjxeMuodwrQWzDzJHoBoYIJKfzAJhfcMhS/XqJBKXYfT5BO7ggjzAsW/oD9xh64tmozXx/pHoQ==", - "dependencies": { - "@d3fc/d3fc-rebind": "^6.0.1" - }, - "peerDependencies": { - "d3-array": "*" - } - }, - "node_modules/@d3fc/d3fc-webgl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-webgl/-/d3fc-webgl-3.1.0.tgz", - "integrity": "sha512-WHVqV7QYaxgExMU6nGGzHBLUDAva/SOogfzQv1A/qGGivGElFsPxeBAfZcnpnz2wsWDdnFLYqV16s16bIorTjg==", - "dependencies": { - "@d3fc/d3fc-rebind": "^6.0.1" - }, - "peerDependencies": { - "d3-scale": "*", - "d3-shape": "*" - } - }, - "node_modules/@d3fc/d3fc-zoom": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-zoom/-/d3fc-zoom-1.1.1.tgz", - "integrity": "sha512-JLYcrdq9W0ZA0vwXcwOhsEkjzfpS+/3Ec3gt1sTJ6KZmILyL+3HCem9y5MeGrns1rBi+9IyMMY2SwOOSJpMGcg==", - "dependencies": { - "@d3fc/d3fc-rebind": "^6.0.1" - }, - "peerDependencies": { - "d3-dispatch": "*", - "d3-selection": "*", - "d3-zoom": "*" - } - }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", @@ -6492,14 +6269,6 @@ "node": ">= 0.8" } }, - "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/common-tags": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", @@ -7297,46 +7066,6 @@ "type": "^1.0.1" } }, - "node_modules/d3": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.2.1.tgz", - "integrity": "sha512-E/5sP0aeK6YPXI/+4QlefvBFgmcyR2jYftId0PrYWv4Y/gW3c3thp1XG4rQzF0eUwV9tR1x05X5eWuJ6rQXvew==", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "3", - "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.1.1", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", @@ -7356,32 +7085,6 @@ "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.0.1", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.0.1.tgz", @@ -7390,104 +7093,6 @@ "node": ">=12" } }, - "node_modules/d3-contour": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz", - "integrity": "sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", - "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-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", @@ -7496,25 +7101,6 @@ "node": ">=12" } }, - "node_modules/d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-hierarchy": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz", - "integrity": "sha512-LtAIu54UctRmhGKllleflmHalttH3zkfSi4NlKrTAoFKjC+AFBJohsCAdgCBYQwH0F8hIOGY89X1pPqAchlMkA==", - "engines": { - "node": ">=12" - } - }, "node_modules/d3-interpolate": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", @@ -7526,38 +7112,6 @@ "node": ">=12" } }, - "node_modules/d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", - "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-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", @@ -7573,18 +7127,6 @@ "node": ">=12" } }, - "node_modules/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "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", @@ -7593,17 +7135,6 @@ "node": ">=12" } }, - "node_modules/d3-shape": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.0.1.tgz", - "integrity": "sha512-HNZNEQoDhuCrDWEc/BMbF/hKtzMZVoe64TvisFLDp2Iyj0UShB/E6/lBsLlJTfBMbYgftHj90cXJ0SEitlE6Xw==", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/d3-time": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", @@ -7626,74 +7157,6 @@ "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/d3fc": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/d3fc/-/d3fc-15.2.4.tgz", - "integrity": "sha512-0AVkhh65O1EYKSo30LGdCJUfnt02pCFdrcS6RSzDScOAZdSEEDo+2aA+ILex3capvHxYUj4I12g6N1LUtVPm9g==", - "dependencies": { - "@d3fc/d3fc-annotation": "^3.0.11", - "@d3fc/d3fc-axis": "^3.0.6", - "@d3fc/d3fc-brush": "^3.0.3", - "@d3fc/d3fc-chart": "^5.1.4", - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-discontinuous-scale": "^4.0.1", - "@d3fc/d3fc-element": "^6.2.0", - "@d3fc/d3fc-extent": "^4.0.2", - "@d3fc/d3fc-financial-feed": "^7.1.0", - "@d3fc/d3fc-group": "^3.0.1", - "@d3fc/d3fc-label-layout": "^7.0.3", - "@d3fc/d3fc-pointer": "^3.0.2", - "@d3fc/d3fc-random-data": "^4.0.1", - "@d3fc/d3fc-rebind": "^6.0.1", - "@d3fc/d3fc-sample": "^5.0.1", - "@d3fc/d3fc-series": "^6.0.4", - "@d3fc/d3fc-shape": "^6.0.1", - "@d3fc/d3fc-technical-indicator": "^8.1.0", - "@d3fc/d3fc-webgl": "^3.1.0", - "@d3fc/d3fc-zoom": "^1.1.1" - } - }, "node_modules/damerau-levenshtein": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", @@ -8018,14 +7481,6 @@ "rimraf": "bin.js" } }, - "node_modules/delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "dependencies": { - "robust-predicates": "^3.0.0" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -10551,6 +10006,11 @@ "node": ">=0.10.0" } }, + "node_modules/gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -18637,9 +18097,9 @@ } }, "node_modules/recharts": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.1.6.tgz", - "integrity": "sha512-KnRNnCum1hL27DYhUfcdcKUEQkYnda6G+KDN4n/nCiTKp7UzJSgHfFHQvCkBujPi/U98dGd430DA2/8RJpkPlg==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.1.8.tgz", + "integrity": "sha512-Wi7ufdDGyvy/BPf1za1Ok7VeWB2KtEejaewO9ulmlUhvn5l5RPS4AOkrUfhtMRTTjgJ4K6AbWMDpwtDjczUHJA==", "dependencies": { "@types/d3-interpolate": "^2.0.0", "@types/d3-scale": "^3.0.0", @@ -18656,6 +18116,9 @@ "recharts-scale": "^0.4.4", "reduce-css-calc": "^2.1.8" }, + "engines": { + "node": ">=12" + }, "peerDependencies": { "react": "^16.0.0 || ^17.0.0", "react-dom": "^16.0.0 || ^17.0.0" @@ -19269,11 +18732,6 @@ "inherits": "^2.0.1" } }, - "node_modules/robust-predicates": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" - }, "node_modules/rollup": { "version": "1.32.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", @@ -19398,11 +18856,6 @@ "aproba": "^1.1.1" } }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -21465,6 +20918,24 @@ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, + "node_modules/timechart": { + "version": "1.0.0-beta.4", + "resolved": "https://registry.npmjs.org/timechart/-/timechart-1.0.0-beta.4.tgz", + "integrity": "sha512-mWziioRsw9ClrqGV4UhqbXTCYTSHkQLWNn77P4LSLI1jKw/UN/RR/jwE8TerjcWOWz/rHVgZsKbu01UKTCmWQQ==", + "dependencies": { + "d3-axis": "^3.0.0", + "d3-color": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-selection": "^3.0.0", + "gl-matrix": "^3.3.0", + "tslib": "^2.2.0" + } + }, + "node_modules/timechart/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, "node_modules/timers-browserify": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", @@ -25497,162 +24968,6 @@ "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz", "integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==" }, - "@d3fc/d3fc-annotation": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-annotation/-/d3fc-annotation-3.0.11.tgz", - "integrity": "sha512-oqcXG3OnpFyA4m6tTQ61wuDKA2Pdj76YpGO85MosdMwHkWiup/Lm7bnerJhsBTpHbucrumfyf1+DH3c47ZxqIA==", - "requires": { - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-rebind": "^6.0.1", - "@d3fc/d3fc-series": "^6.0.4", - "@d3fc/d3fc-shape": "^6.0.1" - } - }, - "@d3fc/d3fc-axis": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-axis/-/d3fc-axis-3.0.6.tgz", - "integrity": "sha512-6D5HpTiSmht8x9TU7war5iVNW5QFlvzNDk92yJ6hUOKeD/otr2D3wrpvSgJrS7GehceC7Ik86etpoiCjR4wyrg==", - "requires": { - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-rebind": "^6.0.1" - } - }, - "@d3fc/d3fc-brush": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-brush/-/d3fc-brush-3.0.3.tgz", - "integrity": "sha512-fc1XBuNWl6DQVFSnBdauI/WNRvtNaeUWwDiLEIMY+v0VlrmGOgWEGCB5otVepGZiL56cjgRtHdwYBdKCvgGBSg==", - "requires": { - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-rebind": "^6.0.1" - } - }, - "@d3fc/d3fc-chart": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-chart/-/d3fc-chart-5.1.4.tgz", - "integrity": "sha512-hfmmfwww5xsEirWcCge17lp2Z1em7wtC2HHJ2w5bsHnLr0Zjko7qwrtkU/MN5oT3qwckRy4QHExJXf6PibwC/g==", - "requires": { - "@d3fc/d3fc-axis": "^3.0.6", - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-element": "^6.2.0", - "@d3fc/d3fc-rebind": "^6.0.1", - "@d3fc/d3fc-series": "^6.0.4" - } - }, - "@d3fc/d3fc-data-join": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-data-join/-/d3fc-data-join-6.0.3.tgz", - "integrity": "sha512-fd1D2Cl4YGjzl3gBhcrvTl/VxaSncY0ZcokWsN8ahtmk9DZK4DnAgHGrdecnXVLkOx+ANDcqxqscYz6MWXLbcA==", - "requires": {} - }, - "@d3fc/d3fc-discontinuous-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-discontinuous-scale/-/d3fc-discontinuous-scale-4.0.2.tgz", - "integrity": "sha512-m1H/fL3BQmkytTjUNd0GVGE6KC0CEervrgRNnM5FluouycsbUCQPhiiN1CY1bRh8xcFDQx9vpOUU7DNCjiEbAQ==", - "requires": { - "@d3fc/d3fc-rebind": "^6.0.1" - } - }, - "@d3fc/d3fc-element": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-element/-/d3fc-element-6.2.0.tgz", - "integrity": "sha512-AvdZ3V4mVxF9dGYLiDCoqr3GhrFOUQEc1FcP20QEhQ3fJ3qYRwx7/uhL7G/L2xbe6k4delPgnLOvtoaDenhpZw==" - }, - "@d3fc/d3fc-extent": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-extent/-/d3fc-extent-4.0.2.tgz", - "integrity": "sha512-m7w7Dof6KAIDtgzIsTcprWTEoiqExJGsGoQbb97bF+EwIkuEZWRUl1jkoeNL00efpX1o6zSdqSr6lojoR0aI/g==", - "requires": {} - }, - "@d3fc/d3fc-financial-feed": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-financial-feed/-/d3fc-financial-feed-7.1.0.tgz", - "integrity": "sha512-K8jktdRJQAiJepglErsuY2ZMKsm0YFWTeuhYnTFb8rWmyhwoPeem9QW+e6xBTiAvbElJm4yTrkal09KmO2cLlQ==", - "requires": {} - }, - "@d3fc/d3fc-group": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-group/-/d3fc-group-3.0.1.tgz", - "integrity": "sha512-GBUR6a4hkqfSo77iaFS4qPMS5tupH8hmJ8eniiD45GFmWQs69+Dlf8Uhx+GCCvQkE+px6rQyZWVCJKBq6gkz2Q==" - }, - "@d3fc/d3fc-label-layout": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-label-layout/-/d3fc-label-layout-7.0.3.tgz", - "integrity": "sha512-EqeUXO5o0yLYfRPXT9zChx4HLZjsd7DTzRhfiIIJAjqEQeFW9ALYrt85ggqxKWaM5BGjtaOFcHFBrOkd9b2AMQ==", - "requires": { - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-rebind": "^6.0.1" - } - }, - "@d3fc/d3fc-pointer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-pointer/-/d3fc-pointer-3.0.2.tgz", - "integrity": "sha512-GAODK7t+fwH2y/tQaQD0kUZMbrpY+Mu1duFixtthm7yvk1sKWQR9bic3Eh3YBp39lir0VzmHWQhjYNAFnRJERg==", - "requires": { - "@d3fc/d3fc-rebind": "^6.0.1" - } - }, - "@d3fc/d3fc-random-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-random-data/-/d3fc-random-data-4.0.1.tgz", - "integrity": "sha512-tKSoImB8V+EKnuwh4K+RBfYWmczgKF+rvH9b3SeGEocw3DlK1SvAr2ZVhYkyFVaqJU5YciWqQfaW5MjVT/33FA==", - "requires": { - "@d3fc/d3fc-rebind": "^6.0.1" - } - }, - "@d3fc/d3fc-rebind": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-rebind/-/d3fc-rebind-6.0.1.tgz", - "integrity": "sha512-+ryBZ53ALMffbADwnFAtTYQJcT7PE5BwpducGYS0X6Jux6ESnp+fP+cDQvBGbDBOVqaziGnfeLeJXjtMnZujmQ==" - }, - "@d3fc/d3fc-sample": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-sample/-/d3fc-sample-5.0.1.tgz", - "integrity": "sha512-VJ4stSJDxcAhYhifiGE63MBVDPstx+yB3+JHuJt/qc8MjHSOC4NjrPpABNUS6qwfmOcQKbaRPN8urzJ+f5FCmg==", - "requires": { - "@d3fc/d3fc-rebind": "^6.0.1" - } - }, - "@d3fc/d3fc-series": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-series/-/d3fc-series-6.0.4.tgz", - "integrity": "sha512-DilhaYvWcPuEuIHZfTJgkcHtY+uRsLUbTcF4GhUlk4sb88V4G7YFiVym1aZwHLDozfOXftmlVqwYvPMb/69Vyw==", - "requires": { - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-rebind": "^6.0.1", - "@d3fc/d3fc-shape": "^6.0.1", - "@d3fc/d3fc-webgl": "^3.1.0" - } - }, - "@d3fc/d3fc-shape": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-shape/-/d3fc-shape-6.0.1.tgz", - "integrity": "sha512-/dD3S8BWrOjO2mSptUmwe38V7KG4Kw6liIE5NXZJjX/XidfZhuDu7WWuya3i90HeNYDZNcs6Z+4qM3FnvlZf8g==", - "requires": {} - }, - "@d3fc/d3fc-technical-indicator": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-technical-indicator/-/d3fc-technical-indicator-8.1.0.tgz", - "integrity": "sha512-ma5l4nLC0kReDjxeMuodwrQWzDzJHoBoYIJKfzAJhfcMhS/XqJBKXYfT5BO7ggjzAsW/oD9xh64tmozXx/pHoQ==", - "requires": { - "@d3fc/d3fc-rebind": "^6.0.1" - } - }, - "@d3fc/d3fc-webgl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-webgl/-/d3fc-webgl-3.1.0.tgz", - "integrity": "sha512-WHVqV7QYaxgExMU6nGGzHBLUDAva/SOogfzQv1A/qGGivGElFsPxeBAfZcnpnz2wsWDdnFLYqV16s16bIorTjg==", - "requires": { - "@d3fc/d3fc-rebind": "^6.0.1" - } - }, - "@d3fc/d3fc-zoom": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@d3fc/d3fc-zoom/-/d3fc-zoom-1.1.1.tgz", - "integrity": "sha512-JLYcrdq9W0ZA0vwXcwOhsEkjzfpS+/3Ec3gt1sTJ6KZmILyL+3HCem9y5MeGrns1rBi+9IyMMY2SwOOSJpMGcg==", - "requires": { - "@d3fc/d3fc-rebind": "^6.0.1" - } - }, "@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", @@ -29097,11 +28412,6 @@ "delayed-stream": "~1.0.0" } }, - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, "common-tags": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", @@ -29742,43 +29052,6 @@ "type": "^1.0.1" } }, - "d3": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.2.1.tgz", - "integrity": "sha512-E/5sP0aeK6YPXI/+4QlefvBFgmcyR2jYftId0PrYWv4Y/gW3c3thp1XG4rQzF0eUwV9tR1x05X5eWuJ6rQXvew==", - "requires": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "3", - "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" - } - }, "d3-array": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", @@ -29792,112 +29065,16 @@ "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" }, - "d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - } - }, - "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==", - "requires": { - "d3-path": "1 - 3" - } - }, "d3-color": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.0.1.tgz", "integrity": "sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw==" }, - "d3-contour": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz", - "integrity": "sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==", - "requires": { - "d3-array": "2 - 3" - } - }, - "d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", - "requires": { - "delaunator": "5" - } - }, - "d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" - }, - "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==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - } - }, - "d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "requires": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - } - }, - "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==" - }, - "d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "requires": { - "d3-dsv": "1 - 3" - } - }, - "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==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - } - }, "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==" }, - "d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "requires": { - "d3-array": "2.5.0 - 3" - } - }, - "d3-hierarchy": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz", - "integrity": "sha512-LtAIu54UctRmhGKllleflmHalttH3zkfSi4NlKrTAoFKjC+AFBJohsCAdgCBYQwH0F8hIOGY89X1pPqAchlMkA==" - }, "d3-interpolate": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", @@ -29906,26 +29083,6 @@ "d3-color": "1 - 3" } }, - "d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" - }, - "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==" - }, - "d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" - }, - "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==" - }, "d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", @@ -29938,28 +29095,11 @@ "d3-time-format": "2 - 4" } }, - "d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "requires": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - } - }, "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==" }, - "d3-shape": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.0.1.tgz", - "integrity": "sha512-HNZNEQoDhuCrDWEc/BMbF/hKtzMZVoe64TvisFLDp2Iyj0UShB/E6/lBsLlJTfBMbYgftHj90cXJ0SEitlE6Xw==", - "requires": { - "d3-path": "1 - 3" - } - }, "d3-time": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", @@ -29976,62 +29116,6 @@ "d3-time": "1 - 3" } }, - "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==" - }, - "d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "requires": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - } - }, - "d3fc": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/d3fc/-/d3fc-15.2.4.tgz", - "integrity": "sha512-0AVkhh65O1EYKSo30LGdCJUfnt02pCFdrcS6RSzDScOAZdSEEDo+2aA+ILex3capvHxYUj4I12g6N1LUtVPm9g==", - "requires": { - "@d3fc/d3fc-annotation": "^3.0.11", - "@d3fc/d3fc-axis": "^3.0.6", - "@d3fc/d3fc-brush": "^3.0.3", - "@d3fc/d3fc-chart": "^5.1.4", - "@d3fc/d3fc-data-join": "^6.0.3", - "@d3fc/d3fc-discontinuous-scale": "^4.0.1", - "@d3fc/d3fc-element": "^6.2.0", - "@d3fc/d3fc-extent": "^4.0.2", - "@d3fc/d3fc-financial-feed": "^7.1.0", - "@d3fc/d3fc-group": "^3.0.1", - "@d3fc/d3fc-label-layout": "^7.0.3", - "@d3fc/d3fc-pointer": "^3.0.2", - "@d3fc/d3fc-random-data": "^4.0.1", - "@d3fc/d3fc-rebind": "^6.0.1", - "@d3fc/d3fc-sample": "^5.0.1", - "@d3fc/d3fc-series": "^6.0.4", - "@d3fc/d3fc-shape": "^6.0.1", - "@d3fc/d3fc-technical-indicator": "^8.1.0", - "@d3fc/d3fc-webgl": "^3.1.0", - "@d3fc/d3fc-zoom": "^1.1.1" - } - }, "damerau-levenshtein": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", @@ -30275,14 +29359,6 @@ } } }, - "delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "requires": { - "robust-predicates": "^3.0.0" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -32197,6 +31273,11 @@ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, + "gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -38374,9 +37455,9 @@ } }, "recharts": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.1.6.tgz", - "integrity": "sha512-KnRNnCum1hL27DYhUfcdcKUEQkYnda6G+KDN4n/nCiTKp7UzJSgHfFHQvCkBujPi/U98dGd430DA2/8RJpkPlg==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.1.8.tgz", + "integrity": "sha512-Wi7ufdDGyvy/BPf1za1Ok7VeWB2KtEejaewO9ulmlUhvn5l5RPS4AOkrUfhtMRTTjgJ4K6AbWMDpwtDjczUHJA==", "requires": { "@types/d3-interpolate": "^2.0.0", "@types/d3-scale": "^3.0.0", @@ -38903,11 +37984,6 @@ "inherits": "^2.0.1" } }, - "robust-predicates": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" - }, "rollup": { "version": "1.32.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", @@ -39002,11 +38078,6 @@ "aproba": "^1.1.1" } }, - "rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -40637,6 +39708,26 @@ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, + "timechart": { + "version": "1.0.0-beta.4", + "resolved": "https://registry.npmjs.org/timechart/-/timechart-1.0.0-beta.4.tgz", + "integrity": "sha512-mWziioRsw9ClrqGV4UhqbXTCYTSHkQLWNn77P4LSLI1jKw/UN/RR/jwE8TerjcWOWz/rHVgZsKbu01UKTCmWQQ==", + "requires": { + "d3-axis": "^3.0.0", + "d3-color": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-selection": "^3.0.0", + "gl-matrix": "^3.3.0", + "tslib": "^2.2.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, "timers-browserify": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", diff --git a/package.json b/package.json index ca8be26..8935aa7 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,6 @@ "@sentry/tracing": "^6.16.1", "@speedy-tuner/types": "^0.2.1", "antd": "^4.17.3", - "d3": "^7.0.4", - "d3fc": "^15.2.4", "mlg-converter": "^0.5.1", "pako": "^2.0.4", "react": "^17.0.1", @@ -45,7 +43,8 @@ "react-router-dom": "^5.2.1", "react-scripts": "^4.0.3", "react-table-drag-select": "^0.3.1", - "recharts": "^2.1.6" + "recharts": "^2.1.8", + "timechart": "^1.0.0-beta.4" }, "devDependencies": { "@craco/craco": "^6.4.3", diff --git a/src/App.less b/src/App.less index 8020281..41d8133 100644 --- a/src/App.less +++ b/src/App.less @@ -102,8 +102,7 @@ html, body { } } -.plot { - &:active { - cursor: grab; - } +.log-canvas { + color: @text; + --background-overlay: transparent; } diff --git a/src/components/Log.tsx b/src/components/Log.tsx index 8b186b3..035d674 100644 --- a/src/components/Log.tsx +++ b/src/components/Log.tsx @@ -88,7 +88,7 @@ const Log = ({ ui, config, loadedLogs }: { ui: UIState, config: Config, loadedLo const [logs, setLogs] = useState(); const [fields, setFields] = useState([]); const [selectedFields, setSelectedFields] = useState([ - 'rpm', + // 'rpm', 'tps', 'afrTarget', 'afr', @@ -229,7 +229,7 @@ const Log = ({ ui, config, loadedLogs }: { ui: UIState, config: Config, loadedLo : diff --git a/src/components/Log/LogCanvas.tsx b/src/components/Log/LogCanvas.tsx index c072cac..891d401 100644 --- a/src/components/Log/LogCanvas.tsx +++ b/src/components/Log/LogCanvas.tsx @@ -3,21 +3,12 @@ import { useEffect, useMemo, useRef, - useState, } from 'react'; import { Logs, LogEntry, } from '@speedy-tuner/types'; -import { - scaleLinear, - max, - zoom, - zoomTransform, - select, - ZoomTransform, -} from 'd3'; -import { seriesCanvasLine } from 'd3fc'; +import TimeChart from 'timechart'; import { colorHsl } from '../../utils/number'; // enum Colors { @@ -58,8 +49,7 @@ export interface PlottableField { }; const LogCanvas = ({ data, width, height, selectedFields }: Props) => { - const canvasRef = useRef(null); - const [zoomState, setZoomState] = useState(null); + const canvasRef = useRef(null); const hsl = useCallback((fieldIndex: number, allFields: number) => { const [hue] = colorHsl(0, allFields - 1, fieldIndex); @@ -71,6 +61,7 @@ const LogCanvas = ({ data, width, height, selectedFields }: Props) => { const filtered = useMemo(() => data.filter(fieldsOnly), [data]); // find max values for each selected field so we can calculate scale + // TODO: unused const fieldsToPlot = useMemo(() => { const temp: { [index: string]: PlottableField } = {}; @@ -102,76 +93,43 @@ const LogCanvas = ({ data, width, height, selectedFields }: Props) => { return temp; }, [filtered, selectedFields]); - const xValue = useCallback((entry: LogEntry): number => (entry.Time || 0) as number, []); - const yValue = useCallback((entry: LogEntry, field: SelectedField): number => { - if (!(field.label in entry)) { - console.error(`Field [${field.label}] doesn't exist in this log file.`); - return 0; - } - - return entry[field.label] as number; - }, []); - - const xScale = useMemo(() => { - const tempXScale = scaleLinear() - .domain([0, max(filtered, xValue) as number]) - .range([0, width]); - let newXScale = tempXScale; - - if (zoomState) { - newXScale = zoomState.rescaleX(tempXScale); - tempXScale.domain(newXScale.domain()); - } - - return newXScale; - }, [filtered, width, xValue, zoomState]); - useEffect(() => { - const canvas = select(canvasRef.current); - const context = (canvas.node() as HTMLCanvasElement).getContext('2d') as CanvasRenderingContext2D; + let chart: TimeChart; - context.clearRect(0, 0, width, height); - context.lineWidth = 2; + if (canvasRef.current) { + const series = selectedFields.map((field) => ({ + name: field.label, + color: hsl(selectedFields.indexOf(field), selectedFields.length), + data: data.map((entry) => ({ + x: entry.Time as number, + y: entry[field.label] as number, + })).filter((entry) => entry.x !== undefined || entry.y !== undefined), + })); - const linesRaw = () => selectedFields.forEach((field, index) => { - const yScale = (() => { - const yField = (fieldsToPlot || {})[field.label] || { min: 0, max: 0 }; + chart = new TimeChart(canvasRef.current as HTMLDivElement, { + series, + lineWidth: 2, + tooltip: true, + legend: false, + zoom: { + x: { autoRange: true }, + y: { autoRange: true }, + }, + }); + } - return scaleLinear() - .domain([yField.min, yField.max]) - .range([height, 0]); - })(); - - seriesCanvasLine() - .xScale(xScale) - .yScale(yScale) - .crossValue((entry: LogEntry) => xValue(entry)) - .mainValue((entry: LogEntry) => yValue(entry, field)) - .context(context) - // eslint-disable-next-line no-return-assign - .decorate((ctx: CanvasRenderingContext2D) => { - ctx.strokeStyle = hsl(index, selectedFields.length); - })(filtered); - }); - - const zoomed = () => setZoomState(zoomTransform(canvas.node() as any)); - - const zoomBehavior = zoom() - .scaleExtent([1, 1000]) // zoom boundaries - .translateExtent([[0, 0], [width, height]]) // pan boundaries - .extent([[0, 0], [width, height]]) - .on('zoom', zoomed); - - canvas.call(zoomBehavior as any); - - linesRaw(); - }, [data, fieldsToPlot, filtered, height, hsl, selectedFields, width, xScale, xValue, yValue]); + return () => { + if (chart) { + chart.dispose(); + } + }; + }, [data, fieldsToPlot, filtered, hsl, selectedFields, width, height]); return ( - ); };