From f4ee8d6e385071b3840e5ee72eb0f5c03f9559cc Mon Sep 17 00:00:00 2001 From: Matt Curtis Date: Fri, 3 Nov 2023 12:37:39 +0000 Subject: [PATCH 01/57] light theme and other changes --- go/common/query_types.go | 1 + go/host/db/batches.go | 20 +- tools/obscuroscan_v2/backend/cmd/cli.go | 4 +- .../obscuroscan_v2/frontend/package-lock.json | 376 +++++++++++------- tools/obscuroscan_v2/frontend/package.json | 3 +- tools/obscuroscan_v2/frontend/src/App.vue | 12 + .../frontend/src/assets/base.css | 73 ---- .../frontend/src/assets/imgs/obscuro.svg | 18 - .../src/assets/imgs/obscuro_black.png | Bin 0 -> 8212 bytes .../assets/imgs/obscuro_black_transparent.svg | 1 + .../frontend/src/assets/main.css | 42 +- .../frontend/src/components/BatchDataGrid.vue | 73 ++-- .../src/components/BlocksDataGrid.vue | 72 ++-- .../src/components/MetaMaskConnectButton.vue | 4 +- .../src/components/PersonalTxsGrid.vue | 2 - .../src/components/PublicTxDataGrid.vue | 18 +- .../src/components/RecentRollupsTable.vue | 43 ++ .../src/components/RotatingBatchesItem.vue | 90 +++-- .../src/components/RotatingRollupsItem.vue | 92 ----- .../frontend/src/components/SummaryItem.vue | 137 ++----- .../src/components/SummaryRollupsListItem.vue | 53 --- .../frontend/src/components/SummaryRow.vue | 97 +++++ .../src/components/helper/CopyButton.vue | 28 ++ .../src/components/helper/ShortenedHash.vue | 12 +- .../src/components/helper/Timestamp.vue | 13 +- tools/obscuroscan_v2/frontend/src/main.js | 2 + .../frontend/src/views/HomeView.vue | 29 +- .../frontend/src/views/NavbarView.vue | 112 +++--- 28 files changed, 709 insertions(+), 718 deletions(-) delete mode 100644 tools/obscuroscan_v2/frontend/src/assets/base.css delete mode 100644 tools/obscuroscan_v2/frontend/src/assets/imgs/obscuro.svg create mode 100644 tools/obscuroscan_v2/frontend/src/assets/imgs/obscuro_black.png create mode 100644 tools/obscuroscan_v2/frontend/src/assets/imgs/obscuro_black_transparent.svg create mode 100644 tools/obscuroscan_v2/frontend/src/components/RecentRollupsTable.vue delete mode 100644 tools/obscuroscan_v2/frontend/src/components/RotatingRollupsItem.vue delete mode 100644 tools/obscuroscan_v2/frontend/src/components/SummaryRollupsListItem.vue create mode 100644 tools/obscuroscan_v2/frontend/src/components/SummaryRow.vue create mode 100644 tools/obscuroscan_v2/frontend/src/components/helper/CopyButton.vue diff --git a/go/common/query_types.go b/go/common/query_types.go index 229346d6db..596a4e4341 100644 --- a/go/common/query_types.go +++ b/go/common/query_types.go @@ -38,6 +38,7 @@ type PublicTransaction struct { type PublicBatch struct { BatchHeader + TxHashes []TxHash `json:"txHashes"` } type PublicBlock struct { diff --git a/go/host/db/batches.go b/go/host/db/batches.go index 8562903af3..748ac0e519 100644 --- a/go/host/db/batches.go +++ b/go/host/db/batches.go @@ -132,25 +132,29 @@ func (db *DB) GetBatchBySequenceNumber(sequenceNumber *big.Int) (*common.ExtBatc return db.GetBatch(*batchHash) } -// GetBatchListing returns BatchListingResponse given a pagination +// GetBatchListing returns latest BatchListingResponse given a pagination. For example, page 0, size 10 will return the +// latest 10 batches. // todo change this when the db changes - this is not super performant func (db *DB) GetBatchListing(pagination *common.QueryPagination) (*common.BatchListingResponse, error) { + // fetch the total batches so we can paginate + header, err := db.GetHeadBatchHeader() + if err != nil { + return nil, err + } + + batchesFrom := header.SequencerOrderNo.Uint64() - pagination.Offset + // fetch requested batches var batches []common.PublicBatch - for i := pagination.Offset; i < pagination.Offset+uint64(pagination.Size); i++ { + for i := batchesFrom; i > batchesFrom-pagination.Offset-uint64(pagination.Size); i-- { extBatch, err := db.GetBatchBySequenceNumber(big.NewInt(int64(i))) if err != nil && !errors.Is(err, errutil.ErrNotFound) { return nil, err } if extBatch != nil { - batches = append(batches, common.PublicBatch{BatchHeader: *extBatch.Header}) + batches = append(batches, common.PublicBatch{BatchHeader: *extBatch.Header, TxHashes: extBatch.TxHashes}) } } - // fetch the total batches so we can paginate - header, err := db.GetHeadBatchHeader() - if err != nil { - return nil, err - } return &common.BatchListingResponse{ BatchesData: batches, diff --git a/tools/obscuroscan_v2/backend/cmd/cli.go b/tools/obscuroscan_v2/backend/cmd/cli.go index 863876ff31..cf1c3a8ac9 100644 --- a/tools/obscuroscan_v2/backend/cmd/cli.go +++ b/tools/obscuroscan_v2/backend/cmd/cli.go @@ -8,8 +8,8 @@ import ( func parseCLIArgs() *config.Config { defaultConfig := &config.Config{ - NodeHostAddress: "http://erpc.dev-testnet.obscu.ro:80", - ServerAddress: "0.0.0.0:80", + NodeHostAddress: "http://127.0.0.1:37801", + ServerAddress: "0.0.0.0:43910", LogPath: "obscuroscan_logs.txt", } diff --git a/tools/obscuroscan_v2/frontend/package-lock.json b/tools/obscuroscan_v2/frontend/package-lock.json index b5178d45c3..9666556207 100644 --- a/tools/obscuroscan_v2/frontend/package-lock.json +++ b/tools/obscuroscan_v2/frontend/package-lock.json @@ -15,7 +15,8 @@ "pinia": "^2.1.4", "vue": "^3.3.4", "vue-json-pretty": "^2.2.4", - "vue-router": "^4.2.2" + "vue-router": "^4.2.2", + "vue-timeago3": "^2.3.2" }, "devDependencies": { "@rushstack/eslint-patch": "^1.2.0", @@ -42,9 +43,9 @@ "integrity": "sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg==" }, "node_modules/@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -52,6 +53,17 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/runtime": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@ctrl/tinycolor": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz", @@ -645,49 +657,49 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", - "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.7.tgz", + "integrity": "sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==", "dependencies": { - "@babel/parser": "^7.21.3", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.0", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", - "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz", + "integrity": "sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==", "dependencies": { - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-core": "3.3.7", + "@vue/shared": "3.3.7" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", - "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz", + "integrity": "sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==", "dependencies": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-ssr": "3.3.4", - "@vue/reactivity-transform": "3.3.4", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.7", + "@vue/compiler-dom": "3.3.7", + "@vue/compiler-ssr": "3.3.7", + "@vue/reactivity-transform": "3.3.7", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", - "magic-string": "^0.30.0", - "postcss": "^8.1.10", + "magic-string": "^0.30.5", + "postcss": "^8.4.31", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", - "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz", + "integrity": "sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==", "dependencies": { - "@vue/compiler-dom": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-dom": "3.3.7", + "@vue/shared": "3.3.7" } }, "node_modules/@vue/devtools-api": { @@ -710,60 +722,60 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", - "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.7.tgz", + "integrity": "sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==", "dependencies": { - "@vue/shared": "3.3.4" + "@vue/shared": "3.3.7" } }, "node_modules/@vue/reactivity-transform": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", - "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz", + "integrity": "sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==", "dependencies": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.7", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", - "magic-string": "^0.30.0" + "magic-string": "^0.30.5" } }, "node_modules/@vue/runtime-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", - "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.7.tgz", + "integrity": "sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==", "dependencies": { - "@vue/reactivity": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/reactivity": "3.3.7", + "@vue/shared": "3.3.7" } }, "node_modules/@vue/runtime-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", - "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz", + "integrity": "sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==", "dependencies": { - "@vue/runtime-core": "3.3.4", - "@vue/shared": "3.3.4", - "csstype": "^3.1.1" + "@vue/runtime-core": "3.3.7", + "@vue/shared": "3.3.7", + "csstype": "^3.1.2" } }, "node_modules/@vue/server-renderer": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", - "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.7.tgz", + "integrity": "sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==", "dependencies": { - "@vue/compiler-ssr": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-ssr": "3.3.7", + "@vue/shared": "3.3.7" }, "peerDependencies": { - "vue": "3.3.4" + "vue": "3.3.7" } }, "node_modules/@vue/shared": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", - "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.7.tgz", + "integrity": "sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==" }, "node_modules/@vueuse/core": { "version": "9.13.0", @@ -1053,6 +1065,21 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, "node_modules/dayjs": { "version": "1.11.9", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", @@ -1778,9 +1805,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", - "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -2021,9 +2048,9 @@ } }, "node_modules/postcss": { - "version": "8.4.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", - "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "funding": [ { "type": "opencollective", @@ -2130,6 +2157,11 @@ } ] }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2389,15 +2421,23 @@ } }, "node_modules/vue": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", - "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.7.tgz", + "integrity": "sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==", "dependencies": { - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-sfc": "3.3.4", - "@vue/runtime-dom": "3.3.4", - "@vue/server-renderer": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-dom": "3.3.7", + "@vue/compiler-sfc": "3.3.7", + "@vue/runtime-dom": "3.3.7", + "@vue/server-renderer": "3.3.7", + "@vue/shared": "3.3.7" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/vue-eslint-parser": { @@ -2450,6 +2490,17 @@ "vue": "^3.2.0" } }, + "node_modules/vue-timeago3": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/vue-timeago3/-/vue-timeago3-2.3.2.tgz", + "integrity": "sha512-yxb++H9ekLS8bSt3in7fMwIfW1ex9ceMYVCcfLiOppBYpp8hatlOTLqQyCmLXeDYB098uwgfnCewEPKVh/gi6A==", + "dependencies": { + "date-fns": "^2.28.0" + }, + "peerDependencies": { + "vue": "^3.3.6" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2532,9 +2583,17 @@ "integrity": "sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg==" }, "@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==" + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==" + }, + "@babel/runtime": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "requires": { + "regenerator-runtime": "^0.14.0" + } }, "@ctrl/tinycolor": { "version": "3.6.0", @@ -2863,49 +2922,49 @@ "requires": {} }, "@vue/compiler-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", - "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.7.tgz", + "integrity": "sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==", "requires": { - "@babel/parser": "^7.21.3", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.0", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", "source-map-js": "^1.0.2" } }, "@vue/compiler-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", - "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz", + "integrity": "sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==", "requires": { - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-core": "3.3.7", + "@vue/shared": "3.3.7" } }, "@vue/compiler-sfc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", - "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz", + "integrity": "sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==", "requires": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-ssr": "3.3.4", - "@vue/reactivity-transform": "3.3.4", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.7", + "@vue/compiler-dom": "3.3.7", + "@vue/compiler-ssr": "3.3.7", + "@vue/reactivity-transform": "3.3.7", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", - "magic-string": "^0.30.0", - "postcss": "^8.1.10", + "magic-string": "^0.30.5", + "postcss": "^8.4.31", "source-map-js": "^1.0.2" } }, "@vue/compiler-ssr": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", - "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz", + "integrity": "sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==", "requires": { - "@vue/compiler-dom": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-dom": "3.3.7", + "@vue/shared": "3.3.7" } }, "@vue/devtools-api": { @@ -2924,57 +2983,57 @@ } }, "@vue/reactivity": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", - "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.7.tgz", + "integrity": "sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==", "requires": { - "@vue/shared": "3.3.4" + "@vue/shared": "3.3.7" } }, "@vue/reactivity-transform": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", - "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz", + "integrity": "sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==", "requires": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.7", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", - "magic-string": "^0.30.0" + "magic-string": "^0.30.5" } }, "@vue/runtime-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", - "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.7.tgz", + "integrity": "sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==", "requires": { - "@vue/reactivity": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/reactivity": "3.3.7", + "@vue/shared": "3.3.7" } }, "@vue/runtime-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", - "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz", + "integrity": "sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==", "requires": { - "@vue/runtime-core": "3.3.4", - "@vue/shared": "3.3.4", - "csstype": "^3.1.1" + "@vue/runtime-core": "3.3.7", + "@vue/shared": "3.3.7", + "csstype": "^3.1.2" } }, "@vue/server-renderer": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", - "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.7.tgz", + "integrity": "sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==", "requires": { - "@vue/compiler-ssr": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-ssr": "3.3.7", + "@vue/shared": "3.3.7" } }, "@vue/shared": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", - "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.7.tgz", + "integrity": "sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==" }, "@vueuse/core": { "version": "9.13.0", @@ -3176,6 +3235,14 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "requires": { + "@babel/runtime": "^7.21.0" + } + }, "dayjs": { "version": "1.11.9", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", @@ -3702,9 +3769,9 @@ } }, "magic-string": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", - "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "requires": { "@jridgewell/sourcemap-codec": "^1.4.15" } @@ -3858,9 +3925,9 @@ } }, "postcss": { - "version": "8.4.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", - "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "requires": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", @@ -3915,6 +3982,11 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -4061,15 +4133,15 @@ } }, "vue": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", - "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.7.tgz", + "integrity": "sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==", "requires": { - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-sfc": "3.3.4", - "@vue/runtime-dom": "3.3.4", - "@vue/server-renderer": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-dom": "3.3.7", + "@vue/compiler-sfc": "3.3.7", + "@vue/runtime-dom": "3.3.7", + "@vue/server-renderer": "3.3.7", + "@vue/shared": "3.3.7" } }, "vue-eslint-parser": { @@ -4101,6 +4173,14 @@ "@vue/devtools-api": "^6.5.0" } }, + "vue-timeago3": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/vue-timeago3/-/vue-timeago3-2.3.2.tgz", + "integrity": "sha512-yxb++H9ekLS8bSt3in7fMwIfW1ex9ceMYVCcfLiOppBYpp8hatlOTLqQyCmLXeDYB098uwgfnCewEPKVh/gi6A==", + "requires": { + "date-fns": "^2.28.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/tools/obscuroscan_v2/frontend/package.json b/tools/obscuroscan_v2/frontend/package.json index 0e99f9267b..3b9b41c0c2 100644 --- a/tools/obscuroscan_v2/frontend/package.json +++ b/tools/obscuroscan_v2/frontend/package.json @@ -19,7 +19,8 @@ "pinia": "^2.1.4", "vue": "^3.3.4", "vue-json-pretty": "^2.2.4", - "vue-router": "^4.2.2" + "vue-router": "^4.2.2", + "vue-timeago3": "^2.3.2" }, "devDependencies": { "@rushstack/eslint-patch": "^1.2.0", diff --git a/tools/obscuroscan_v2/frontend/src/App.vue b/tools/obscuroscan_v2/frontend/src/App.vue index 2466145094..6cf70e1449 100644 --- a/tools/obscuroscan_v2/frontend/src/App.vue +++ b/tools/obscuroscan_v2/frontend/src/App.vue @@ -40,4 +40,16 @@ export default { .bot-bar { background:black; } + +.nav-bar-header { + margin: 0; + padding: 0; + filter:drop-shadow(0px 1vh 1vh #E1E1E1); +} + +.main-content { + display: flex; + flex-direction: column; + gap: 12px; +} diff --git a/tools/obscuroscan_v2/frontend/src/assets/base.css b/tools/obscuroscan_v2/frontend/src/assets/base.css deleted file mode 100644 index d3de42ec96..0000000000 --- a/tools/obscuroscan_v2/frontend/src/assets/base.css +++ /dev/null @@ -1,73 +0,0 @@ -/* color palette from */ -:root { - --vt-c-white: #ffffff; - --vt-c-white-soft: #f8f8f8; - --vt-c-white-mute: #f2f2f2; - - --vt-c-black: #181818; - --vt-c-black-soft: #222222; - --vt-c-black-mute: #282828; - - --vt-c-indigo: #2c3e50; - - --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); - --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); - --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); - --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); - - --vt-c-text-light-1: var(--vt-c-indigo); - --vt-c-text-light-2: rgba(60, 60, 60, 0.66); - --vt-c-text-dark-1: var(--vt-c-white); - --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); -} - -/* semantic color variables for this project */ -:root { - --color-background: var(--vt-c-white); - --color-background-soft: var(--vt-c-white-soft); - --color-background-mute: var(--vt-c-white-mute); - - --color-border: var(--vt-c-divider-light-2); - --color-border-hover: var(--vt-c-divider-light-1); - - --color-heading: var(--vt-c-text-light-1); - --color-text: var(--vt-c-text-light-1); - - --section-gap: 160px; -} - -@media (prefers-color-scheme: dark) { - :root { - --color-background: var(--vt-c-black); - --color-background-soft: var(--vt-c-black-soft); - --color-background-mute: var(--vt-c-black-mute); - - --color-border: var(--vt-c-divider-dark-2); - --color-border-hover: var(--vt-c-divider-dark-1); - - --color-heading: var(--vt-c-text-dark-1); - --color-text: var(--vt-c-text-dark-2); - } -} - -*, -*::before, -*::after { - box-sizing: border-box; - margin: 0; - font-weight: normal; -} - -body { - min-height: 100vh; - color: var(--color-text); - background: var(--color-background); - transition: color 0.5s, background-color 0.5s; - line-height: 1.6; - font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, - Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; - font-size: 15px; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} diff --git a/tools/obscuroscan_v2/frontend/src/assets/imgs/obscuro.svg b/tools/obscuroscan_v2/frontend/src/assets/imgs/obscuro.svg deleted file mode 100644 index 52e7a3e01e..0000000000 --- a/tools/obscuroscan_v2/frontend/src/assets/imgs/obscuro.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/tools/obscuroscan_v2/frontend/src/assets/imgs/obscuro_black.png b/tools/obscuroscan_v2/frontend/src/assets/imgs/obscuro_black.png new file mode 100644 index 0000000000000000000000000000000000000000..b9a7143b3048c4e10a29c21c2615c6a5d906b494 GIT binary patch literal 8212 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 \ No newline at end of file diff --git a/tools/obscuroscan_v2/frontend/src/assets/main.css b/tools/obscuroscan_v2/frontend/src/assets/main.css index a2ff76f1c9..194ab74543 100644 --- a/tools/obscuroscan_v2/frontend/src/assets/main.css +++ b/tools/obscuroscan_v2/frontend/src/assets/main.css @@ -1,7 +1,47 @@ -@import './base.css'; +:root { + /* Neutral gray colors */ + --obs-bg-color: #f5f5f5; + --obs-text-color: #333333; + + /* Colors from the Obscuro palette */ + --obs-primary: #96DECD; + --obs-secondary: #969DDE; + --obs-color-3: #C896DE; + --obs-color-4: #96C8DE; + --obs-tertiary: #5973B8; + --el-menu-hover-text-color: #5973B8 !important; + --el-menu-hover-bg-color: #f5f5f5 !important; +} + +body { + margin: 0; + padding: 0; + font-size: 16px; + line-height: 1.5; + font-family: Inter,BlinkMacSystemFont,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif; + font-weight: 400; + color: #333333; /* a dark grey that complements obscuro color pallette */ + background-color: var(--obs-bg-color); +} #app { font-weight: normal; + background-color: var(--obs-bg-color); + color: var(--obs-text-color); + font-family: Inter,BlinkMacSystemFont,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif; } +.obs-link-button { + color: var(--obs-text-color); + background-color: transparent; +} + +.obs-link-button:hover { + color: var(--obs-tertiary) !important; + background-color: transparent !important; + border-color: var(--obs-tertiary) !important; +} +.obs-container-card { + border-radius: 12px; +} \ No newline at end of file diff --git a/tools/obscuroscan_v2/frontend/src/components/BatchDataGrid.vue b/tools/obscuroscan_v2/frontend/src/components/BatchDataGrid.vue index 8685406799..edb9c61337 100644 --- a/tools/obscuroscan_v2/frontend/src/components/BatchDataGrid.vue +++ b/tools/obscuroscan_v2/frontend/src/components/BatchDataGrid.vue @@ -1,36 +1,34 @@ + + \ No newline at end of file diff --git a/tools/obscuroscan_v2/frontend/src/components/RotatingBatchesItem.vue b/tools/obscuroscan_v2/frontend/src/components/RotatingBatchesItem.vue index 294cd3355a..a6d2a2bd5e 100644 --- a/tools/obscuroscan_v2/frontend/src/components/RotatingBatchesItem.vue +++ b/tools/obscuroscan_v2/frontend/src/components/RotatingBatchesItem.vue @@ -1,16 +1,20 @@ \ No newline at end of file diff --git a/tools/obscuroscan_v2/frontend/src/components/RotatingRollupsItem.vue b/tools/obscuroscan_v2/frontend/src/components/RotatingRollupsItem.vue deleted file mode 100644 index d3a822d6d0..0000000000 --- a/tools/obscuroscan_v2/frontend/src/components/RotatingRollupsItem.vue +++ /dev/null @@ -1,92 +0,0 @@ - - - - - \ No newline at end of file diff --git a/tools/obscuroscan_v2/frontend/src/components/SummaryItem.vue b/tools/obscuroscan_v2/frontend/src/components/SummaryItem.vue index 3ef5d95734..e19e1a76c5 100644 --- a/tools/obscuroscan_v2/frontend/src/components/SummaryItem.vue +++ b/tools/obscuroscan_v2/frontend/src/components/SummaryItem.vue @@ -1,140 +1,49 @@ diff --git a/tools/obscuroscan_v2/frontend/src/components/SummaryRollupsListItem.vue b/tools/obscuroscan_v2/frontend/src/components/SummaryRollupsListItem.vue deleted file mode 100644 index 9f6f4c007b..0000000000 --- a/tools/obscuroscan_v2/frontend/src/components/SummaryRollupsListItem.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - - - \ No newline at end of file diff --git a/tools/obscuroscan_v2/frontend/src/components/SummaryRow.vue b/tools/obscuroscan_v2/frontend/src/components/SummaryRow.vue new file mode 100644 index 0000000000..6b107c5cf1 --- /dev/null +++ b/tools/obscuroscan_v2/frontend/src/components/SummaryRow.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/tools/obscuroscan_v2/frontend/src/components/helper/CopyButton.vue b/tools/obscuroscan_v2/frontend/src/components/helper/CopyButton.vue new file mode 100644 index 0000000000..f2a0dd6bb2 --- /dev/null +++ b/tools/obscuroscan_v2/frontend/src/components/helper/CopyButton.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/tools/obscuroscan_v2/frontend/src/components/helper/ShortenedHash.vue b/tools/obscuroscan_v2/frontend/src/components/helper/ShortenedHash.vue index 87d5092bac..a2eb89805d 100644 --- a/tools/obscuroscan_v2/frontend/src/components/helper/ShortenedHash.vue +++ b/tools/obscuroscan_v2/frontend/src/components/helper/ShortenedHash.vue @@ -1,5 +1,5 @@