Merge branch 'master' into fix-to-from-filters

pull/2017/head
Victor Baranov 6 years ago committed by GitHub
commit 276e27068d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 88
      CHANGELOG.md
  2. 1
      apps/block_scout_web/assets/css/app.scss
  3. 137
      apps/block_scout_web/assets/css/components/_errors.scss
  4. 15
      apps/block_scout_web/assets/js/lib/async_listing_load.js
  5. BIN
      apps/block_scout_web/assets/static/images/errors-img/etc-block-not-found.png
  6. BIN
      apps/block_scout_web/assets/static/images/errors-img/etc-block-not-found@2x.png
  7. BIN
      apps/block_scout_web/assets/static/images/errors-img/etc-tx-not-found.png
  8. BIN
      apps/block_scout_web/assets/static/images/errors-img/etc-tx-not-found@2x.png
  9. BIN
      apps/block_scout_web/assets/static/images/errors-img/eth-block-not-found.png
  10. BIN
      apps/block_scout_web/assets/static/images/errors-img/eth-block-not-found@2x.png
  11. BIN
      apps/block_scout_web/assets/static/images/errors-img/eth-tx-not-found.png
  12. BIN
      apps/block_scout_web/assets/static/images/errors-img/eth-tx-not-found@2x.png
  13. BIN
      apps/block_scout_web/assets/static/images/errors-img/goerli-block-not-found.png
  14. BIN
      apps/block_scout_web/assets/static/images/errors-img/goerli-block-not-found@2x.png
  15. BIN
      apps/block_scout_web/assets/static/images/errors-img/goerli-tx-not-found.png
  16. BIN
      apps/block_scout_web/assets/static/images/errors-img/goerli-tx-not-found@2x.png
  17. BIN
      apps/block_scout_web/assets/static/images/errors-img/koan-block-not-found@2x.png
  18. BIN
      apps/block_scout_web/assets/static/images/errors-img/kovan-block-not-found.png
  19. BIN
      apps/block_scout_web/assets/static/images/errors-img/kovan-block-not-found@2x.png
  20. BIN
      apps/block_scout_web/assets/static/images/errors-img/kovan-tx-not-found.png
  21. BIN
      apps/block_scout_web/assets/static/images/errors-img/kovan-tx-not-found@2x.png
  22. BIN
      apps/block_scout_web/assets/static/images/errors-img/poa-block-not-found.png
  23. BIN
      apps/block_scout_web/assets/static/images/errors-img/poa-block-not-found@2x.png
  24. BIN
      apps/block_scout_web/assets/static/images/errors-img/poa-tx-not-found.png
  25. BIN
      apps/block_scout_web/assets/static/images/errors-img/poa-tx-not-found@2x.png
  26. BIN
      apps/block_scout_web/assets/static/images/errors-img/rinkeby-block-not-found.png
  27. BIN
      apps/block_scout_web/assets/static/images/errors-img/rinkeby-block-not-found@2x.png
  28. BIN
      apps/block_scout_web/assets/static/images/errors-img/rinkeby-tx-not-found.png
  29. BIN
      apps/block_scout_web/assets/static/images/errors-img/rinkeby-tx-not-found@2x.png
  30. BIN
      apps/block_scout_web/assets/static/images/errors-img/rinnkeby-block-not-found.png
  31. BIN
      apps/block_scout_web/assets/static/images/errors-img/rinnkeby-block-not-found@2x.png
  32. BIN
      apps/block_scout_web/assets/static/images/errors-img/ropsten-block-not-found.png
  33. BIN
      apps/block_scout_web/assets/static/images/errors-img/ropsten-block-not-found@2x.png
  34. BIN
      apps/block_scout_web/assets/static/images/errors-img/ropsten-tx-not-found.png
  35. BIN
      apps/block_scout_web/assets/static/images/errors-img/ropsten-tx-not-found@2x.png
  36. BIN
      apps/block_scout_web/assets/static/images/errors-img/rsk-block-not-found.png
  37. BIN
      apps/block_scout_web/assets/static/images/errors-img/rsk-block-not-found@2x.png
  38. BIN
      apps/block_scout_web/assets/static/images/errors-img/rsk-tx-not-found.png
  39. BIN
      apps/block_scout_web/assets/static/images/errors-img/rsk-tx-not-found@2x.png
  40. BIN
      apps/block_scout_web/assets/static/images/errors-img/sokol-block-not-found.png
  41. BIN
      apps/block_scout_web/assets/static/images/errors-img/sokol-block-not-found@2x.png
  42. BIN
      apps/block_scout_web/assets/static/images/errors-img/sokol-tx-not-found.png
  43. BIN
      apps/block_scout_web/assets/static/images/errors-img/sokol-tx-not-found@2x.png
  44. BIN
      apps/block_scout_web/assets/static/images/errors-img/xdai-block-not-found.png
  45. BIN
      apps/block_scout_web/assets/static/images/errors-img/xdai-block-not-found@2x.png
  46. BIN
      apps/block_scout_web/assets/static/images/errors-img/xdai-tx-not-found.png
  47. BIN
      apps/block_scout_web/assets/static/images/errors-img/xdai-tx-not-found@2x.png
  48. 2
      apps/block_scout_web/lib/block_scout_web/controllers/address_controller.ex
  49. 4
      apps/block_scout_web/lib/block_scout_web/templates/address/index.html.eex
  50. 20
      apps/block_scout_web/lib/block_scout_web/templates/block_transaction/404.html.eex
  51. 76
      apps/block_scout_web/lib/block_scout_web/templates/transaction/not_found.html.eex
  52. 78
      apps/block_scout_web/priv/gettext/default.pot
  53. 78
      apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po
  54. 2
      apps/block_scout_web/test/block_scout_web/controllers/api/rpc/address_controller_test.exs
  55. 2
      apps/block_scout_web/test/block_scout_web/controllers/block_transaction_controller_test.exs
  56. 1
      apps/ethereum_jsonrpc/lib/ethereum_jsonrpc/parity/fetched_beneficiaries.ex

@ -1,81 +1,111 @@
## Current ## Current
- [#2000](https://github.com/poanetwork/blockscout/pull/2000) - docker/Makefile: always set a container name
### Features ### Features
- [#1963](https://github.com/poanetwork/blockscout/pull/1963) - added rinkeby theme and rinkeby logo - [#1963](https://github.com/poanetwork/blockscout/pull/1963), [#1959](https://github.com/poanetwork/blockscout/pull/1959), [#1948](https://github.com/poanetwork/blockscout/pull/1948), [#1936](https://github.com/poanetwork/blockscout/pull/1936), [#1925](https://github.com/poanetwork/blockscout/pull/1925), [#1922](https://github.com/poanetwork/blockscout/pull/1922), [#1903](https://github.com/poanetwork/blockscout/pull/1903), [#1874](https://github.com/poanetwork/blockscout/pull/1874), [#1895](https://github.com/poanetwork/blockscout/pull/1895) - added new themes and logos for poa, eth, rinkeby, goerli, ropsten, kovan, sokol, xdai, etc, rsk
- [#1959](https://github.com/poanetwork/blockscout/pull/1959) - added goerli theme and goerli logo - [#2010](https://github.com/poanetwork/blockscout/pull/2010) - added "block not found" and "tx not found pages"
- [#1928](https://github.com/poanetwork/blockscout/pull/1928) - pagination styles were updated - [#1928](https://github.com/poanetwork/blockscout/pull/1928) - pagination styles were updated
- [#1948](https://github.com/poanetwork/blockscout/pull/1948) - added ropsten theme and ropsten logo
- [#1940](https://github.com/poanetwork/blockscout/pull/1940) - qr modal button and background issue - [#1940](https://github.com/poanetwork/blockscout/pull/1940) - qr modal button and background issue
- [#1936](https://github.com/poanetwork/blockscout/pull/1936) - added kovan, sokol themes and logos
- [#1925](https://github.com/poanetwork/blockscout/pull/1925) - added dai theme and logo
- [#1922](https://github.com/poanetwork/blockscout/pull/1922) - added ethereum classic theme and logo
- [#1907](https://github.com/poanetwork/blockscout/pull/1907) - dropdown color bug fix (lukso theme) and tooltip color bug fix - [#1907](https://github.com/poanetwork/blockscout/pull/1907) - dropdown color bug fix (lukso theme) and tooltip color bug fix
- [#1903](https://github.com/poanetwork/blockscout/pull/1903) - added rsk theme and rsk logo
- [#1895](https://github.com/poanetwork/blockscout/pull/1895) - add changes to poa theme and poa logo
- [#1812](https://github.com/poanetwork/blockscout/pull/1812) - add pagination to addresses page
- [#1874](https://github.com/poanetwork/blockscout/pull/1874) - add changes to ethereum theme and ethereum logo
- [#1815](https://github.com/poanetwork/blockscout/pull/1815) - able to search without prefix "0x"
- [#1813](https://github.com/poanetwork/blockscout/pull/1813) - add total blocks counter to the main page
- [#1806](https://github.com/poanetwork/blockscout/pull/1806) - verify contracts with a post request
- [#1857](https://github.com/poanetwork/blockscout/pull/1857) - Re-implement Geth JS internal transaction tracer in Elixir - [#1857](https://github.com/poanetwork/blockscout/pull/1857) - Re-implement Geth JS internal transaction tracer in Elixir
- [#1859](https://github.com/poanetwork/blockscout/pull/1859) - feat: show raw transaction traces - [#1859](https://github.com/poanetwork/blockscout/pull/1859) - feat: show raw transaction traces
- [#1920](https://github.com/poanetwork/blockscout/pull/1920) - fix: remove source code fields from list endpoint
- [#1876](https://github.com/poanetwork/blockscout/pull/1876) - async calculate a count of blocks
- [#1941](https://github.com/poanetwork/blockscout/pull/1941) - feat: add on demand fetching and stale attr to rpc - [#1941](https://github.com/poanetwork/blockscout/pull/1941) - feat: add on demand fetching and stale attr to rpc
- [#1957](https://github.com/poanetwork/blockscout/pull/1957) - Calculate stakes ratio before insert pools - [#1957](https://github.com/poanetwork/blockscout/pull/1957) - Calculate stakes ratio before insert pools
- [#1956](https://github.com/poanetwork/blockscout/pull/1956) - add logs tab to address - [#1956](https://github.com/poanetwork/blockscout/pull/1956) - add logs tab to address
- [#1933](https://github.com/poanetwork/blockscout/pull/1933) - add eth_BlockNumber json rpc method
- [#1952](https://github.com/poanetwork/blockscout/pull/1952) - feat: exclude empty contracts by default - [#1952](https://github.com/poanetwork/blockscout/pull/1952) - feat: exclude empty contracts by default
- [#1989](https://github.com/poanetwork/blockscout/pull/1989) - fix: consolidate address w/ balance one at a time - [#1989](https://github.com/poanetwork/blockscout/pull/1989) - fix: consolidate address w/ balance one at a time
- [#1954](https://github.com/poanetwork/blockscout/pull/1954) - feat: use creation init on self destruct - [#1954](https://github.com/poanetwork/blockscout/pull/1954) - feat: use creation init on self destruct
- [#1974](https://github.com/poanetwork/blockscout/pull/1974) - feat: previous page button logic - [#1974](https://github.com/poanetwork/blockscout/pull/1974) - feat: previous page button logic
- [#1999](https://github.com/poanetwork/blockscout/pull/1999) - load data async on addresses page - [#1999](https://github.com/poanetwork/blockscout/pull/1999) - load data async on addresses page
- [#2002](https://github.com/poanetwork/blockscout/pull/2002) - Get estimated count of blocks when cache is empty - [#2002](https://github.com/poanetwork/blockscout/pull/2002) - Get estimated count of blocks when cache is empty
- [#1807](https://github.com/poanetwork/blockscout/pull/1807) - New theming capabilites.
### Fixes ### Fixes
- [#1944](https://github.com/poanetwork/blockscout/pull/1944) - fixed styles for token's dropdown. - [#1944](https://github.com/poanetwork/blockscout/pull/1944) - fixed styles for token's dropdown.
- [#1926](https://github.com/poanetwork/blockscout/pull/1926) - status label alignment - [#1926](https://github.com/poanetwork/blockscout/pull/1926) - status label alignment
- [#1829](https://github.com/poanetwork/blockscout/pull/1829) - Handle nil quantities in block decoding routine
- [#1830](https://github.com/poanetwork/blockscout/pull/1830) - Make block size field nullable
- [#1840](https://github.com/poanetwork/blockscout/pull/1840) - Handle case when total supply is nil
- [#1838](https://github.com/poanetwork/blockscout/pull/1838) - Block counter calculates only consensus blocks
- [#1849](https://github.com/poanetwork/blockscout/pull/1849) - Improve chains menu - [#1849](https://github.com/poanetwork/blockscout/pull/1849) - Improve chains menu
- [#1869](https://github.com/poanetwork/blockscout/pull/1869) - Fix output and gas extraction in JS tracer for Geth - [#1869](https://github.com/poanetwork/blockscout/pull/1869) - Fix output and gas extraction in JS tracer for Geth
- [#1868](https://github.com/poanetwork/blockscout/pull/1868) - fix: logs list endpoint performance - [#1868](https://github.com/poanetwork/blockscout/pull/1868) - fix: logs list endpoint performance
- [#1822](https://github.com/poanetwork/blockscout/pull/1822) - Fix style breaks in decompiled contract code view - [#1822](https://github.com/poanetwork/blockscout/pull/1822) - Fix style breaks in decompiled contract code view
- [#1885](https://github.com/poanetwork/blockscout/pull/1885) - highlight reserved words in decompiled code - [#1885](https://github.com/poanetwork/blockscout/pull/1885) - highlight reserved words in decompiled code
- [#1896](https://github.com/poanetwork/blockscout/pull/1896) - re-query tokens in top nav automplete - [#1896](https://github.com/poanetwork/blockscout/pull/1896) - re-query tokens in top nav automplete
- [#1881](https://github.com/poanetwork/blockscout/pull/1881) - fix: store solc versions locally for performance
- [#1905](https://github.com/poanetwork/blockscout/pull/1905) - fix reorgs, uncles pagination - [#1905](https://github.com/poanetwork/blockscout/pull/1905) - fix reorgs, uncles pagination
- [#1875](https://github.com/poanetwork/blockscout/pull/1875) - fix: resolve false positive constructor arguments
- [#1904](https://github.com/poanetwork/blockscout/pull/1904) - fix `BLOCK_COUNT_CACHE_TTL` env var type - [#1904](https://github.com/poanetwork/blockscout/pull/1904) - fix `BLOCK_COUNT_CACHE_TTL` env var type
- [#1898](https://github.com/poanetwork/blockscout/pull/1898) - check if the constructor has arguments before verifying constructor arguments
- [#1915](https://github.com/poanetwork/blockscout/pull/1915) - fallback to 2 latest evm versions - [#1915](https://github.com/poanetwork/blockscout/pull/1915) - fallback to 2 latest evm versions
- [#1937](https://github.com/poanetwork/blockscout/pull/1937) - Check the presence of overlap[i] object before retrieving properties from it - [#1937](https://github.com/poanetwork/blockscout/pull/1937) - Check the presence of overlap[i] object before retrieving properties from it
- [#1960](https://github.com/poanetwork/blockscout/pull/1960) - do not remove bold text in decompiled contacts - [#1960](https://github.com/poanetwork/blockscout/pull/1960) - do not remove bold text in decompiled contacts
- [#1917](https://github.com/poanetwork/blockscout/pull/1917) - Force block refetch if transaction is re-collated in a different block
- [#1992](https://github.com/poanetwork/blockscout/pull/1992) - fix: support https for wobserver polling - [#1992](https://github.com/poanetwork/blockscout/pull/1992) - fix: support https for wobserver polling
- [#1966](https://github.com/poanetwork/blockscout/pull/1966) - fix: add fields for contract filter performance - [#1966](https://github.com/poanetwork/blockscout/pull/1966) - fix: add fields for contract filter performance
- [#2017](https://github.com/poanetwork/blockscout/pull/2017) - fix: fix to/from filters on tx list pages - [#2017](https://github.com/poanetwork/blockscout/pull/2017) - fix: fix to/from filters on tx list pages
- [#2008](https://github.com/poanetwork/blockscout/pull/2008) - add new function clause for xDai network beneficiaries
- [#2009](https://github.com/poanetwork/blockscout/pull/2009) - addresses page improvements
### Chore ### Chore
- [#1814](https://github.com/poanetwork/blockscout/pull/1814) - Clear build artefacts script
- [#1837](https://github.com/poanetwork/blockscout/pull/1837) - Add -f flag to clear_build.sh script delete static folder
- [#1900](https://github.com/poanetwork/blockscout/pull/1900) - SUPPORTED_CHAINS ENV var - [#1900](https://github.com/poanetwork/blockscout/pull/1900) - SUPPORTED_CHAINS ENV var
- [#1892](https://github.com/poanetwork/blockscout/pull/1892) - Remove temporary worker modules
- [#1958](https://github.com/poanetwork/blockscout/pull/1958) - Default value for release link env var - [#1958](https://github.com/poanetwork/blockscout/pull/1958) - Default value for release link env var
- [#1964](https://github.com/poanetwork/blockscout/pull/1964) - ALLOWED_EVM_VERSIONS env var - [#1964](https://github.com/poanetwork/blockscout/pull/1964) - ALLOWED_EVM_VERSIONS env var
- [#1975](https://github.com/poanetwork/blockscout/pull/1975) - add log index to transaction view - [#1975](https://github.com/poanetwork/blockscout/pull/1975) - add log index to transaction view
- [#1988](https://github.com/poanetwork/blockscout/pull/1988) - Fix wrong parity tasks names in Circle CI - [#1988](https://github.com/poanetwork/blockscout/pull/1988) - Fix wrong parity tasks names in Circle CI
- [#2000](https://github.com/poanetwork/blockscout/pull/2000) - docker/Makefile: always set a container name
## 1.3.14-beta
### Features
- [#1812](https://github.com/poanetwork/blockscout/pull/1812) - add pagination to addresses page
- [#1920](https://github.com/poanetwork/blockscout/pull/1920) - fix: remove source code fields from list endpoint
- [#1876](https://github.com/poanetwork/blockscout/pull/1876) - async calculate a count of blocks
### Fixes
- [#1917](https://github.com/poanetwork/blockscout/pull/1917) - Force block refetch if transaction is re-collated in a different block
### Chore
- [#1892](https://github.com/poanetwork/blockscout/pull/1892) - Remove temporary worker modules
## 1.3.13-beta
### Features
- [#1933](https://github.com/poanetwork/blockscout/pull/1933) - add eth_BlockNumber json rpc method
### Fixes
- [#1875](https://github.com/poanetwork/blockscout/pull/1875) - fix: resolve false positive constructor arguments
- [#1881](https://github.com/poanetwork/blockscout/pull/1881) - fix: store solc versions locally for performance
- [#1898](https://github.com/poanetwork/blockscout/pull/1898) - check if the constructor has arguments before verifying constructor arguments
## 1.3.12-beta
Reverting of synchronous block counter, implemented in #1848
## 1.3.11-beta
### Features
- [#1815](https://github.com/poanetwork/blockscout/pull/1815) - Be able to search without prefix "0x"
- [#1813](https://github.com/poanetwork/blockscout/pull/1813) - Add total blocks counter to the main page
- [#1806](https://github.com/poanetwork/blockscout/pull/1806) - Verify contracts with a post request
- [#1848](https://github.com/poanetwork/blockscout/pull/1848) - Add cache for block counter
### Fixes
- [#1829](https://github.com/poanetwork/blockscout/pull/1829) - Handle nil quantities in block decoding routine
- [#1830](https://github.com/poanetwork/blockscout/pull/1830) - Make block size field nullable
- [#1840](https://github.com/poanetwork/blockscout/pull/1840) - Handle case when total supply is nil
- [#1838](https://github.com/poanetwork/blockscout/pull/1838) - Block counter calculates only consensus blocks
### Chore
- [#1814](https://github.com/poanetwork/blockscout/pull/1814) - Clear build artefacts script
- [#1837](https://github.com/poanetwork/blockscout/pull/1837) - Add -f flag to clear_build.sh script delete static folder
## 1.3.10-beta ## 1.3.10-beta
### Features ### Features
- [#1807](https://github.com/poanetwork/blockscout/pull/1807) - New theming capabilites.
- [#1739](https://github.com/poanetwork/blockscout/pull/1739) - highlight decompiled source code - [#1739](https://github.com/poanetwork/blockscout/pull/1739) - highlight decompiled source code
- [#1696](https://github.com/poanetwork/blockscout/pull/1696) - full-text search by tokens - [#1696](https://github.com/poanetwork/blockscout/pull/1696) - full-text search by tokens
- [#1742](https://github.com/poanetwork/blockscout/pull/1742) - Support RSK - [#1742](https://github.com/poanetwork/blockscout/pull/1742) - Support RSK

@ -120,6 +120,7 @@ $fa-font-path: "~@fortawesome/fontawesome-free/webfonts";
@import "components/transaction"; @import "components/transaction";
@import "components/api"; @import "components/api";
@import "components/alerts"; @import "components/alerts";
@import "components/errors";
:export { :export {
primary: $primary; primary: $primary;

@ -0,0 +1,137 @@
$error-tablet-breakpoint: 768px;
// Block Not Found
.block-not-found {
display: flex;
flex-direction: column;
padding-bottom: 50px;
@media (min-width: $error-tablet-breakpoint) {
flex-direction: row;
align-items: center;
justify-content: center;
padding-top: 52px;
}
}
.block-not-found-img {
margin-bottom: 40px;
text-align: center;
@media (min-width: $error-tablet-breakpoint) {
margin-bottom: 0;
text-align: left;
}
img {
max-width: 100%;
height: auto;
}
}
.block-not-found-content {
text-align: center;
@media (min-width: $error-tablet-breakpoint) {
text-align: left;
padding-left: 52px;
max-width: 396px;
}
}
.error-title {
margin-bottom: 20px !important;
}
.error-descr {
display: block;
font-size: 14px;
color: #a3a9b5;
line-height: 1.714;
margin-bottom: 22px;
word-wrap: break-word;
}
.error-btn {
background: transparent;
display: inline-flex !important;
}
// TX Not Found
.tx-nf {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
padding-bottom: 50px;
@media (min-width: $error-tablet-breakpoint) {
flex-direction: row;
padding-top: 52px;
}
}
.tx-nf-content {
margin-top: 52px;
max-width: 700px;
@media (min-width: $error-tablet-breakpoint) {
margin-left: 90px;
margin-top: 0;
}
}
.tx-nf-blocks {
margin-bottom: 40px;
margin-top: 40px;
}
.tx-nf-block {
background-color: #fff;
box-shadow: 0px 0px 30px 0px rgba(202, 199, 226, 0.5);
padding: 17px 40px 17px 20px;
position: relative;
border-radius: 6px;
@media (min-width: $error-tablet-breakpoint) {
width: calc(50% - 20px);
}
}
.tx-nf-block {
.error-descr {
margin-bottom: 0;
}
& + .tx-nf-block {
margin-top: 30px;
@media (min-width: $error-tablet-breakpoint) {
margin-top: 0;
}
}
}
.tx-nf-blocks-row {
display: flex;
justify-content: space-between;
flex-direction: column;
@media (min-width: $error-tablet-breakpoint) {
flex-direction: row;
}
& + .tx-nf-blocks-row {
margin-top: 30px;
@media (min-width: $error-tablet-breakpoint) {
margin-top: 40px;
}
}
}
.tx-nf-number {
display: inline-block;
position: absolute;
top: -15px;
left: -15px;
width: 30px;
height: 30px;
border-radius: 15px;
background-color: $secondary;
box-shadow: 0px 3px 5px 0px rgba($secondary, 0.25);
color: #fff;
font-weight: 700;
font-size: 14px;
text-align: center;
line-height: 32px;
}

@ -48,6 +48,8 @@ export const asyncInitialState = {
loading: false, loading: false,
/* if there was an error fetching items */ /* if there was an error fetching items */
requestError: false, requestError: false,
/* if response has no items */
emptyResponse: false,
/* if it is loading the first page */ /* if it is loading the first page */
loadingFirstPage: true, loadingFirstPage: true,
/* link to the next page */ /* link to the next page */
@ -90,6 +92,7 @@ export function asyncReducer (state = asyncInitialState, action) {
return Object.assign({}, state, { return Object.assign({}, state, {
requestError: false, requestError: false,
emptyResponse: action.items.length === 0,
items: action.items, items: action.items,
nextPagePath: action.nextPagePath, nextPagePath: action.nextPagePath,
prevPagePath: prevPagePath prevPagePath: prevPagePath
@ -169,6 +172,10 @@ export const elements = {
}, },
'[data-async-listing] [data-next-page-button]': { '[data-async-listing] [data-next-page-button]': {
render ($el, state) { render ($el, state) {
if (state.emptyResponse) {
return $el.hide()
}
if (state.requestError || !state.nextPagePath || state.loading) { if (state.requestError || !state.nextPagePath || state.loading) {
return $el.attr('disabled', 'disabled') return $el.attr('disabled', 'disabled')
} }
@ -179,6 +186,10 @@ export const elements = {
}, },
'[data-async-listing] [data-prev-page-button]': { '[data-async-listing] [data-prev-page-button]': {
render ($el, state) { render ($el, state) {
if (state.emptyResponse) {
return $el.hide()
}
if (state.requestError || !state.prevPagePath || state.loading) { if (state.requestError || !state.prevPagePath || state.loading) {
return $el.attr('disabled', 'disabled') return $el.attr('disabled', 'disabled')
} }
@ -189,6 +200,10 @@ export const elements = {
}, },
'[data-async-listing] [data-page-number]': { '[data-async-listing] [data-page-number]': {
render ($el, state) { render ($el, state) {
if (state.emptyResponse) {
return $el.hide()
}
if (state.pagesStack.length === 0) { if (state.pagesStack.length === 0) {
return $el.text('Page 1') return $el.text('Page 1')
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

@ -26,7 +26,7 @@ defmodule BlockScoutWeb.AddressController do
address_path( address_path(
conn, conn,
:index, :index,
next_page_params Map.delete(next_page_params, "type")
) )
end end

@ -3,11 +3,11 @@
<div class="card-body" data-async-load data-async-listing="<%= @current_path %>"> <div class="card-body" data-async-load data-async-listing="<%= @current_path %>">
<h1 class="card-title"><%= gettext "Addresses" %></h1> <h1 class="card-title"><%= gettext "Addresses" %></h1>
<%= render BlockScoutWeb.CommonComponentsView, "_pagination_container.html", position: "top", cur_page_number: "1", show_pagination_limit: true, data_next_page_button: true %> <%= render BlockScoutWeb.CommonComponentsView, "_pagination_container.html", position: "top", cur_page_number: "1", show_pagination_limit: true, data_next_page_button: true, data_prev_page_button: true %>
<div data-items data-selector="top-addresses-list"></div> <div data-items data-selector="top-addresses-list"></div>
<%= render BlockScoutWeb.CommonComponentsView, "_pagination_container.html", position: "bottom", cur_page_number: "1", show_pagination_limit: true, data_next_page_button: true %> <%= render BlockScoutWeb.CommonComponentsView, "_pagination_container.html", position: "bottom", cur_page_number: "1", show_pagination_limit: true, data_next_page_button: true, data_prev_page_button: true %>
</div> </div>
</div> </div>
</section> </section>

@ -1,16 +1,12 @@
<section class="container"> <section class="container">
<div class="row"> <div class="block-not-found">
<div class="col-12"> <div class="block-not-found-img">
<div class="card"> <img alt="Block Not Found" src="/images/errors-img/eth-block-not-found.png" srcset="/images/eth-block-not-found@2x.png 2x">
<div class="card-body"> </div>
<h1 class="card-title" data-test="detail_type"> <div class="block-not-found-content">
<%= gettext("Block Details") %> <h1 class="card-title error-title"><%= gettext("Block Details") %></h1>
</h1> <p class="error-descr"><%= block_not_found_message(@block_above_tip) %></p>
<div class="tile tile-muted text-center" data-selector="block-not-found-message"> <a class="error-btn btn-line" href="/">Back Home</a>
<%= block_not_found_message(@block_above_tip) %>
</div>
</div>
</div>
</div> </div>
</div> </div>
</section> </section>

@ -1,47 +1,33 @@
<section class="container"> <section class="container">
<section data-page="transaction-details" data-page-transaction-hash="<%= @transaction_hash %>"> <div class="tx-nf">
<div class="row"> <div class="tx-nf-illustr">
<div class="col-12"> <img alt="Block Not Found" src="/images/errors-img/eth-tx-not-found.png" srcset="/images/errors-img/eth-tx-not-found@2x.png 2x">
<div class="card"> </div>
<div class="card-body"> <div class="tx-nf-content">
<div class="icon-links float-right"> <h1 class="card-title error-title"><%= gettext("Sorry, We are unable to locate this transaction Hash") %></h1>
<span data-clipboard-text="<%= @transaction_hash %>"> <div class="tx-nf-blocks">
<span <div class="tx-nf-blocks-row">
aria-label='<%= gettext("Copy Transaction Hash") %>' <div class="tx-nf-block">
class="btn-copy-ico" <span class="tx-nf-number">1</span>
data-placement="top" <p class="error-descr"><%= gettext("If you have just submitted this transaction please wait for at least 30 seconds before refreshing this page.") %></p>
data-toggle="tooltip" </div>
title='<%= gettext("Copy Txn Hash") %>' <div class="tx-nf-block">
> <span class="tx-nf-number">2</span>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32.5 32.5" width="32" height="32"> <p class="error-descr"><%= gettext("It could still be in the TX Pool of a different node, waiting to be broadcasted.") %></p>
<path fill-rule="evenodd" d="M23.5 20.5a1 1 0 0 1-1-1v-9h-9a1 1 0 0 1 0-2h10a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1zm-3-7v10a1 1 0 0 1-1 1h-10a1 1 0 0 1-1-1v-10a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1zm-2 1h-8v8h8v-8z"/> </div>
</svg> </div>
</span> <div class="tx-nf-blocks-row">
</span> <div class="tx-nf-block">
</div> <span class="tx-nf-number">3</span>
<h1 class="card-title"><%= gettext "Transaction Details" %> </h1> <p class="error-descr"><%= gettext("During times when the network is busy (i.e during ICOs) it can take a while for your transaction to propagate through the network and for us to index it.") %></p>
<div class="tile tile-muted text-center"> </div>
<div class="loading-spinner mx-auto"> <div class="tx-nf-block">
<span class="loading-spinner-block-1"></span> <span class="tx-nf-number">4</span>
<span class="loading-spinner-block-2"></span> <p class="error-descr"><%= gettext("If it still does not show up after 1 hour, please check with your sender/exchange/wallet/transaction provider for additional information.") %></p>
</div> </div>
<br> </div>
<span><%= gettext("The transaction %{bold_hash} was not processed yet", bold_hash: "<span class=\"font-weight-bold\">#{@transaction_hash}</span>") |> raw() %> <span> </div>
</div> <a class="error-btn btn-line" href="/"><%= gettext("Back Home") %></a>
<hr> </div>
<div class="text-center"> </div>
<h2><%= gettext "Once we have the transaction's data this page will refresh automatically" %></h2>
<h3><%= gettext "The possible reasons for this transaction not being processed include the following:" %></h3>
<ul class="d-inline-block text-left">
<li><%= gettext "The transaction was made a few seconds ago" %></li>
<li><%= gettext "The transaction may be in the pool of a node that didn't broadcast it yet" %></li>
<li><%= gettext "Some transactions may take a while longer to be indexed depending on the load on the network" %></li>
<li><%= gettext "The transaction still does not exist" %></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
</section> </section>

@ -307,13 +307,11 @@ msgid "Copy Address"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:10
#: lib/block_scout_web/templates/transaction/overview.html.eex:16 #: lib/block_scout_web/templates/transaction/overview.html.eex:16
msgid "Copy Transaction Hash" msgid "Copy Transaction Hash"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:14
#: lib/block_scout_web/templates/transaction/overview.html.eex:20 #: lib/block_scout_web/templates/transaction/overview.html.eex:20
msgid "Copy Txn Hash" msgid "Copy Txn Hash"
msgstr "" msgstr ""
@ -894,7 +892,6 @@ msgid "Transaction %{transaction}, %{subnetwork} %{transaction}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:22
#: lib/block_scout_web/templates/transaction/overview.html.eex:11 #: lib/block_scout_web/templates/transaction/overview.html.eex:11
msgid "Transaction Details" msgid "Transaction Details"
msgstr "" msgstr ""
@ -1130,11 +1127,6 @@ msgstr ""
msgid "Raw Input" msgid "Raw Input"
msgstr "" msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/block_transaction/404.html.eex:7
msgid "Block Details"
msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/views/block_transaction_view.ex:15 #: lib/block_scout_web/views/block_transaction_view.ex:15
msgid "Block not found, please try again later." msgid "Block not found, please try again later."
@ -1155,41 +1147,6 @@ msgstr ""
msgid "Invalid Transaction Hash" msgid "Invalid Transaction Hash"
msgstr "" msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:33
msgid "Once we have the transaction's data this page will refresh automatically"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:38
msgid "Some transactions may take a while longer to be indexed depending on the load on the network"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:34
msgid "The possible reasons for this transaction not being processed include the following:"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:29
msgid "The transaction %{bold_hash} was not processed yet"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:37
msgid "The transaction may be in the pool of a node that didn't broadcast it yet"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:39
msgid "The transaction still does not exist"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:36
msgid "The transaction was made a few seconds ago"
msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/transaction/invalid.html.eex:8 #: lib/block_scout_web/templates/transaction/invalid.html.eex:8
msgid "is not a valid transaction hash" msgid "is not a valid transaction hash"
@ -1709,6 +1666,11 @@ msgstr ""
msgid "of" msgid "of"
msgstr "" msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/block_transaction/404.html.eex:7
msgid "Block Details"
msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:83 #: lib/block_scout_web/templates/address_contract/index.html.eex:83
msgid "Contract Byte Code" msgid "Contract Byte Code"
@ -1738,3 +1700,33 @@ msgstr ""
#: lib/block_scout_web/templates/address_logs/index.html.eex:77 #: lib/block_scout_web/templates/address_logs/index.html.eex:77
msgid "There are no logs for this address." msgid "There are no logs for this address."
msgstr "" msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:7
msgid "Sorry, We are unable to locate this transaction Hash"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:12
msgid "If you have just submitted this transaction please wait for at least 30 seconds before refreshing this page."
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:30
msgid "Back Home"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:22
msgid "During times when the network is busy (i.e during ICOs) it can take a while for your transaction to propagate through the network and for us to index it."
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:26
msgid "If it still does not show up after 1 hour, please check with your sender/exchange/wallet/transaction provider for additional information."
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:16
msgid "It could still be in the TX Pool of a different node, waiting to be broadcasted."
msgstr ""

@ -307,13 +307,11 @@ msgid "Copy Address"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:10
#: lib/block_scout_web/templates/transaction/overview.html.eex:16 #: lib/block_scout_web/templates/transaction/overview.html.eex:16
msgid "Copy Transaction Hash" msgid "Copy Transaction Hash"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:14
#: lib/block_scout_web/templates/transaction/overview.html.eex:20 #: lib/block_scout_web/templates/transaction/overview.html.eex:20
msgid "Copy Txn Hash" msgid "Copy Txn Hash"
msgstr "" msgstr ""
@ -894,7 +892,6 @@ msgid "Transaction %{transaction}, %{subnetwork} %{transaction}"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:22
#: lib/block_scout_web/templates/transaction/overview.html.eex:11 #: lib/block_scout_web/templates/transaction/overview.html.eex:11
msgid "Transaction Details" msgid "Transaction Details"
msgstr "" msgstr ""
@ -1129,11 +1126,6 @@ msgstr ""
msgid "Raw Input" msgid "Raw Input"
msgstr "" msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/block_transaction/404.html.eex:7
msgid "Block Details"
msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/views/block_transaction_view.ex:15 #: lib/block_scout_web/views/block_transaction_view.ex:15
msgid "Block not found, please try again later." msgid "Block not found, please try again later."
@ -1154,41 +1146,6 @@ msgstr ""
msgid "Invalid Transaction Hash" msgid "Invalid Transaction Hash"
msgstr "" msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:33
msgid "Once we have the transaction's data this page will refresh automatically"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:38
msgid "Some transactions may take a while longer to be indexed depending on the load on the network"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:34
msgid "The possible reasons for this transaction not being processed include the following:"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:29
msgid "The transaction %{bold_hash} was not processed yet"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:37
msgid "The transaction may be in the pool of a node that didn't broadcast it yet"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:39
msgid "The transaction still does not exist"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:36
msgid "The transaction was made a few seconds ago"
msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/transaction/invalid.html.eex:8 #: lib/block_scout_web/templates/transaction/invalid.html.eex:8
msgid "is not a valid transaction hash" msgid "is not a valid transaction hash"
@ -1708,6 +1665,11 @@ msgstr ""
msgid "of" msgid "of"
msgstr "" msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/block_transaction/404.html.eex:7
msgid "Block Details"
msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:83 #: lib/block_scout_web/templates/address_contract/index.html.eex:83
msgid "Contract Byte Code" msgid "Contract Byte Code"
@ -1737,3 +1699,33 @@ msgstr ""
#: lib/block_scout_web/templates/address_logs/index.html.eex:77 #: lib/block_scout_web/templates/address_logs/index.html.eex:77
msgid "There are no logs for this address." msgid "There are no logs for this address."
msgstr "" msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:7
msgid "Sorry, We are unable to locate this transaction Hash"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:12
msgid "If you have just submitted this transaction please wait for at least 30 seconds before refreshing this page."
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:30
msgid "Back Home"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:22
msgid "During times when the network is busy (i.e during ICOs) it can take a while for your transaction to propagate through the network and for us to index it."
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:26
msgid "If it still does not show up after 1 hour, please check with your sender/exchange/wallet/transaction provider for additional information."
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/not_found.html.eex:16
msgid "It could still be in the TX Pool of a different node, waiting to be broadcasted."
msgstr ""

@ -5,7 +5,7 @@ defmodule BlockScoutWeb.API.RPC.AddressControllerTest do
alias BlockScoutWeb.API.RPC.AddressController alias BlockScoutWeb.API.RPC.AddressController
alias Explorer.Chain alias Explorer.Chain
alias Explorer.Chain.{BlockNumberCache, Events.Subscriber, Transaction, Wei} alias Explorer.Chain.{Events.Subscriber, Transaction, Wei}
alias Explorer.Counters.{AddressesWithBalanceCounter, AverageBlockTime} alias Explorer.Counters.{AddressesWithBalanceCounter, AverageBlockTime}
alias Indexer.Fetcher.CoinBalanceOnDemand alias Indexer.Fetcher.CoinBalanceOnDemand
alias Explorer.Repo alias Explorer.Repo

@ -165,7 +165,7 @@ defmodule BlockScoutWeb.BlockTransactionControllerTest do
defp assert_block_above_tip(conn) do defp assert_block_above_tip(conn) do
assert conn assert conn
|> html_response(404) |> html_response(404)
|> Floki.find(~S|[data-selector="block-not-found-message"|) |> Floki.find(~S|.error-descr|)
|> Floki.text() |> Floki.text()
|> String.trim() == "Easy Cowboy! This block does not exist yet!" |> String.trim() == "Easy Cowboy! This block does not exist yet!"
end end

@ -173,6 +173,7 @@ defmodule EthereumJSONRPC.Parity.FetchedBeneficiaries do
defp get_address_type(reward_type, index) when reward_type == "external" and index == 1, do: :emission_funds defp get_address_type(reward_type, index) when reward_type == "external" and index == 1, do: :emission_funds
defp get_address_type(reward_type, index) when reward_type == "external" and index == 2, do: :validator defp get_address_type(reward_type, index) when reward_type == "external" and index == 2, do: :validator
defp get_address_type(reward_type, index) when reward_type == "external" and index == 3, do: :validator defp get_address_type(reward_type, index) when reward_type == "external" and index == 3, do: :validator
defp get_address_type(reward_type, index) when reward_type == "external" and index == 4, do: :validator
defp get_address_type(reward_type, _index) when reward_type == "block", do: :validator defp get_address_type(reward_type, _index) when reward_type == "block", do: :validator
defp get_address_type(reward_type, _index) when reward_type == "uncle", do: :uncle defp get_address_type(reward_type, _index) when reward_type == "uncle", do: :uncle
end end

Loading…
Cancel
Save