diff --git a/CHANGELOG.md b/CHANGELOG.md index 36afa7949..837bd0037 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,46 @@ All notable changes to this project will be documented in this file. The changelog format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [v0.6.0][v0.6.0] - 26-Sep-2020 + +### Milestone: [catapult-server@v0.10.0.3](https://github.com/nemtech/catapult-server/releases/tag/v0.10.0.3) + +Package | Version | Link +---|---|--- +REST Core| v2.1.0 | [catapult-rest](https://github.com/nemtech/catapult-rest/releases/tag/v2.1.0) +SDK Core| v0.21.0 | [symbol-sdk](https://www.npmjs.com/package/symbol-sdk) + +### Added +- Added compatibility for 0.10.0.3 server. +- Added Secret Hash information in Account Detail page. +- Added Hash Lock information in Account Detail page. +- Added Hash Lock information in transaction details. +- Added Mosaic Address Restrictions information in Account Detail page. +- Added Transaction Graphic widget to visualize transaction info + - HashLockTransaction + - SecretLockTransaction + - SecretProofTransaction + - AccountKeyLinkTransaction + - NodeKeyLinkTransaction + - VotingKeyLinkTransaction + - VrfKeyLinkTransaction + - MosaicDefinitionTransaction + - MosaicSupplyChangeTransaction +- Added Finality block height in Base Info widget. +- Added Finality Status compoment beside the block height showing block Pending or Finalized. +- Added more japanese translations (Thanks @44uk). + +### Update +- Refactor Transaction graphic widget and schema +- Refactor Pagination related to SDK change +- Refactor ChainService related to SDK change. +- Refactor RestrictionService related to SDK change + +### Fixed +- TransactionDetail. Loading never ends [#615](https://github.com/nemgrouplimited/symbol-explorer/issues/615) +- Aggregate inner transaction are not formatted [#618](https://github.com/nemgrouplimited/symbol-explorer/issues/618) + + ## [v0.5.0][v0.5.0] - 15-Aug-2020 ### Milestone: [catapult-server@v0.9.6.4](https://github.com/nemtech/catapult-server/releases/tag/v0.9.6.4) @@ -79,4 +119,5 @@ SDK Core| v0.20.7 | [symbol-sdk](https://www.npmjs.com/package/symbol-sdk) [v0.3.0]: https://github.com/nemfoundation/symbol-explorer/releases/tag/v0.3.0 [v0.4.0]: https://github.com/nemfoundation/symbol-explorer/releases/tag/v0.4.0 -[v0.5.0]: https://github.com/nemfoundation/symbol-explorer/releases/tag/v0.5.0 \ No newline at end of file +[v0.5.0]: https://github.com/nemfoundation/symbol-explorer/releases/tag/v0.5.0 +[v0.6.0]: https://github.com/nemfoundation/symbol-explorer/releases/tag/v0.6.0 \ No newline at end of file diff --git a/e2e/components/SearchBox.spec.js b/e2e/components/SearchBox.spec.js index 818a8e898..739b94410 100644 --- a/e2e/components/SearchBox.spec.js +++ b/e2e/components/SearchBox.spec.js @@ -22,7 +22,7 @@ describe('Search Box component should', () => { .type('{enter}') cy.url() - .should('contain', 'block/1') + .should('contain', 'blocks/1') }) it('redirect to transaction detail page given correct transaction hash', () => { @@ -32,7 +32,7 @@ describe('Search Box component should', () => { .type('{enter}') cy.url() - .should('contain', `transaction/${config.testTransactions.transferTransaction}`) + .should('contain', `transactions/${config.testTransactions.transferTransaction}`) }) it('redirect to account detail page given correct account address in plain format', () => { @@ -42,7 +42,7 @@ describe('Search Box component should', () => { .type('{enter}') cy.url() - .should('contain', `account/${config.testAccount.address}`) + .should('contain', `accounts/${config.testAccount.address}`) }) it('redirect to account detail page given correct account address in pretty format', () => { @@ -54,6 +54,6 @@ describe('Search Box component should', () => { .type('{enter}') cy.url() - .should('contain', `account/${config.testAccount.address}`) + .should('contain', `accounts/${config.testAccount.address}`) }) }) \ No newline at end of file diff --git a/e2e/config/datafiled.json b/e2e/config/datafiled.json index 7003e82d2..0d6826835 100644 --- a/e2e/config/datafiled.json +++ b/e2e/config/datafiled.json @@ -1,3 +1,3 @@ { - "transactionInfoFields": ["Block Height", "Transaction Hash", "Date", "Deadline", "Fee", "Signature", "Signer", "Status", "Confirmation"] + "transactionInfoFields": ["Block Height", "Size (bytes)", "Transaction Hash", "Date", "Deadline", "Fee", "Signature", "Signer", "Status", "Confirmation"] } \ No newline at end of file diff --git a/e2e/config/network.conf.json b/e2e/config/network.conf.json index 299887822..4910d1966 100644 --- a/e2e/config/network.conf.json +++ b/e2e/config/network.conf.json @@ -1,9 +1,9 @@ { "testAccount": { - "address": "TDS44G6KUHO7MODUB6E6WVJOK277QY65XCBJX5Y" + "address": "TAB4OVF7V4HXLKF6TQB67XACDUFMWPRI24M6KVI" }, "testMosaic": { - "mosaicId": "5E62990DCAC5BE8A" + "mosaicId": "2054DA418770623F" }, "testNamespace": { "rootNamespace": "symbol", @@ -13,20 +13,21 @@ "height": "1" }, "testTransactions":{ - "transferTransaction": "38E7FF47113FAD41C019EF928168CCBF2707D5B894F8F588AAAE0C5A7AC369F5", - "mosaicAlias": "8DDBF0C14509E3445DBBB4B44C5173CB351B6436E959DB004FD22296CC3E2707", - "addressAlias": "D38F5EC98EE6CACA8EF24372D7345FA80456E470D06570779B4BEC95F7DEDDB8", - "mosaicSupplyChange": "4C1DFA4383EDFE690BA76C3272D0E3ACFC2ED2D6E187C2CB6FB227D1B44BDB40", - "mosaicDefinition": "421AE4A15F6B84573CEC17DDFE0C0C66C775179799D701E9CEFCFA85EE9B1ECB", - "namespaceRegistration": "891D435A6CD0CC030678A1FCDCF69AEC89B1E25BCBF0F7F06BADCA90F3EB97D1", - "secretLock": "82E767CD8F04F09C8A659AC184927329FBC0F40667D383AA3B5794E61D8A8A95", - "secretProof": "A06B03122745770491E786390F6123BD10D642DBD103425A06062D821FFA38C9", - "aggregateComplete": "8C05D7CFB28F69AE2576F62935D1982E06530A791EFD19E3AAE3B136C4ECD28A", - "aggregateBonded": "A4E21A49A0BFEF5AC64F2CA8B615E234A376086B9AEEE3C0DA06459AA58932B3", - "hashLock":"3C397199A8E05CEBF695B926B9E67015D2C5630A8926A803B66023AA49C404C3", - "accountOperationRestriction": "788D6532D7FFE76E2F3EE5E4D1FF8B97A5E953A3A02EBA0AE4AD6BF29E5091B3", - "accountAddressRestriction": "21C22D63EC115AA03104ABC893B3C77C991CA582BD7487E5B25B76FD1AEE95AB", - "accountMosaicRestriction":"A24FA914C7DB11994C0480BAC4A7C30ED2FA830319C7003A3E707CF6A4CE6270", - "vrfKeyLink":"27C9990A6D67A9C2695E9787DAB480B5C075CD24F2A56044166914AC2E1B8DBC" + "transferTransaction": "79F07B7726DAC43645CD682127383970FA40BFCCE74EBD5DB89FE7CDB5B1036D", + "mosaicAlias": "3793B719514AC9E529293A7E3B5744A584B29DCF13ACCEEA8408480F0B936EA7", + "addressAlias": "DFAF072EE15FA64C22B9A8802FA87BE94D0280B28B6218F44BA3A1D78B0D3545", + "mosaicSupplyChange": "D26F327A6852B03403AEA1433B75CA83E3C9C2C7ADC0C154638928A5E9B44D8A", + "mosaicDefinition": "0969C9EA465D503C600BD2F09603C213EBFA92B93B2B9D8CA7ED29691652129A", + "namespaceRegistration": "9ECFF1C776286228EC88927B14BBF22FB0DAB1EA0C3356A4326DAD50E09268B9", + "secretLock": "BF5B997C894C960F4632B51E152FE28CA41FD5D534B685C004221CAFAB5CD744", + "secretProof": "516C77975E5F80D03AF336EF8A5DC23F95673DD1B481806FE2894366AC31D757", + "aggregateComplete": "51A5E6663E08449020AFC6CF2BE846001067205CB3E4B48B07E6D3AD45AAD862", + "aggregateBonded": "04DED0D9498AE97DC88AF80E8CBE4519F8F855DB2BB4F44AB1697777634EAC3E", + "hashLock":"041A4675B56B0A8AA3FE1DC10A98D856C234EB5EBA230F09BE478C2C4B81E22C", + "accountOperationRestriction": "55CAE5FE1E72B4A6139630D633871ADE3C30857CC32A0EC818D7F5A3B966AD49", + "accountAddressRestriction": "8D151C7C4C71E1D43A0F85CC0A6EB6DE5F4779B00A681F6BE36D0E8A13BAF33A", + "accountMosaicRestriction":"7172DFE1ECD06EA739B8FA6A0B0B724197D2E5BC96092D582927F6E254BB163B", + "vrfKeyLink":"7D2A9EEBC8C300C84753E2CA7434790EEC8B533F1C97BE61438396830A28B806", + "votingKeyLink":"A8F8861460F51E243ABBD167A7402C9FA8EFDA80914F41A7AB610A2994047A74" } } \ No newline at end of file diff --git a/e2e/pageDetail/accountDetail.spec.js b/e2e/pageDetail/accountDetail.spec.js index 581ae12da..5c29b5808 100644 --- a/e2e/pageDetail/accountDetail.spec.js +++ b/e2e/pageDetail/accountDetail.spec.js @@ -2,7 +2,7 @@ import config from '../config/network.conf.json' describe('Symbol Explorer Account Detail page', () => { beforeEach(() => { - cy.visit(`/account/${config.testAccount.address}`) + cy.visit(`/accounts/${config.testAccount.address}`) }) describe('Account Detail Card should', () => { @@ -15,25 +15,26 @@ describe('Symbol Explorer Account Detail page', () => { }) it('render correct table fields.', () => { - const items = ['Address', 'Alias Namespace', 'Address height', 'Public key', 'Importance', 'Account type', 'Harvested blocks (all)'] + const items = ['Address', 'Alias Namespace', 'Address height', 'Public key', 'Importance', 'Account type'] cy.renderFieldInTable("accountDetailTitle", items) }) }) - describe('Multisig Cosignatories Card should', () => { - it('load title', () => { - cy.get('[data-cy="multisigCosignatoriesTitle"]').should('contain', 'Multisig Cosignatories') - }) + // Todo: Multisig Cosignatories + // describe('Multisig Cosignatories Card should', () => { + // it('load title', () => { + // cy.get('[data-cy="multisigCosignatoriesTitle"]').should('contain', 'Multisig Cosignatories') + // }) - it('render table in card', ()=> { - cy.renderTableInCard("multisigCosignatoriesTitle") - }) + // it('render table in card', ()=> { + // cy.renderTableInCard("multisigCosignatoriesTitle") + // }) - it('render correct table fields.', () => { - const items = ['Minimum Approval', 'Minimum Removal', 'Cosignatories'] - cy.renderFieldInTable("multisigCosignatoriesTitle", items) - }) - }) + // it('render correct table fields.', () => { + // const items = ['Minimum Approval', 'Minimum Removal', 'Cosignatories'] + // cy.renderFieldInTable("multisigCosignatoriesTitle", items) + // }) + // }) describe('Owned Mosaics Card should', () => { it('load title', () => { @@ -110,20 +111,21 @@ describe('Symbol Explorer Account Detail page', () => { }) }) - describe('Harvested Blocks Card should', () => { - it('load title', () => { - cy.get('[data-cy="harvestedBlockTitle"]').should('contain', 'Harvested Blocks') - }) - - it('render table in card', () => { - cy.renderTableInCard("harvestedBlockTitle") - }) - - it('render correct table header.', () => { - const items = ['Height', 'Age', 'Transactions', 'Total Fee', 'Date', 'Harvester'] - cy.renderHeaderInTable("harvestedBlockTitle", items) - }) - }) + // Todo: Harvested Blocks Card + // describe('Harvested Blocks Card should', () => { + // it('load title', () => { + // cy.get('[data-cy="harvestedBlockTitle"]').should('contain', 'Harvested Blocks') + // }) + + // it('render table in card', () => { + // cy.renderTableInCard("harvestedBlockTitle") + // }) + + // it('render correct table header.', () => { + // const items = ['Height', 'Age', 'Transactions', 'Total Fee', 'Date', 'Harvester'] + // cy.renderHeaderInTable("harvestedBlockTitle", items) + // }) + // }) // Todo: Metadata Entries // Todo: Account Restriction diff --git a/e2e/pageDetail/blockDetail.spec.js b/e2e/pageDetail/blockDetail.spec.js index ccdd4eb4b..31bfaa735 100644 --- a/e2e/pageDetail/blockDetail.spec.js +++ b/e2e/pageDetail/blockDetail.spec.js @@ -2,7 +2,7 @@ import config from '../config/network.conf.json' describe('Symbol Explorer Blocks detail page', () => { beforeEach(() => { - cy.visit(`/block/${config.testBlock.height}`) + cy.visit(`/blocks/${config.testBlock.height}`) }) describe('Block Detail Card should', () => { @@ -20,11 +20,26 @@ describe('Symbol Explorer Blocks detail page', () => { }) it('render correct table fields.', () => { - const items = ['Height', 'Date', 'Total Fee', 'Difficulty', 'Fee Multiplier', 'Transactions', 'Harvester', 'Block Hash', 'Proof Gamma', 'Proof Scalar', 'Beneficiary Address', 'Proof Varification Hash'] + const items = ['Height', 'Size (bytes)', 'Date', 'Total Fee', 'Difficulty', 'Fee Multiplier', 'Transactions', 'Harvester', 'Block Hash', 'Proof Gamma', 'Proof Scalar', 'Beneficiary Address', 'Proof Varification Hash'] cy.renderFieldInTable("blockDetailTitle", items) }) }) + describe('Merkle Info Card should', () => { + it('load title', () => { + cy.get('[data-cy="merkleInfoTitle"]').should('contain', 'Merkle Info') + }) + + it('render table in card', ()=> { + cy.renderTableInCard("merkleInfoTitle") + }) + + it('render correct table fields.', () => { + const items = ['State Hash', 'State Hash Sub Cache Merkle Roots', 'Receipts Hash', 'Transactions Hash'] + cy.renderFieldInTable("merkleInfoTitle", items) + }) + }) + describe('Block Transactions Card should', () => { it('load title', () => { cy.get('[data-cy="blockTransactionsTitle"]') @@ -55,5 +70,19 @@ describe('Symbol Explorer Blocks detail page', () => { cy.renderHeaderInTable("balanceChangeReceiptTitle", items) }) }) - // Todo: Test the rest of Reicept + + describe('Resolution Statement Card should', () => { + it('load title', () => { + cy.get('[data-cy="resolutionStatementTitle"]').should('contain', 'Resolution Statement') + }) + + it('render table in card', ()=> { + cy.renderTableInCard("resolutionStatementTitle") + }) + + it('render correct table header.', () => { + const items = ['Type', 'Unresolved', 'Resolved Value'] + cy.renderHeaderInTable("resolutionStatementTitle", items) + }) + }) }) \ No newline at end of file diff --git a/e2e/pageDetail/mosaicDetail.spec.js b/e2e/pageDetail/mosaicDetail.spec.js index 1d9c63ae2..c9d653a2d 100644 --- a/e2e/pageDetail/mosaicDetail.spec.js +++ b/e2e/pageDetail/mosaicDetail.spec.js @@ -2,7 +2,7 @@ import config from '../config/network.conf.json' describe('Symbol Explorer Mosaic Detail page', () => { beforeEach(() => { - cy.visit(`/mosaic/${config.testMosaic.mosaicId}`) + cy.visit(`/mosaics/${config.testMosaic.mosaicId}`) }) describe('Mosaic Detail Card should', () => { diff --git a/e2e/pageDetail/namespaceDetail.spec.js b/e2e/pageDetail/namespaceDetail.spec.js index 231b631c3..d903a40c0 100644 --- a/e2e/pageDetail/namespaceDetail.spec.js +++ b/e2e/pageDetail/namespaceDetail.spec.js @@ -2,7 +2,7 @@ import config from '../config/network.conf.json' describe('Symbol Explorer Namespace detail page', () => { beforeEach(() => { - cy.visit(`/namespace/${config.testNamespace.subNamespace}`) + cy.visit(`/namespaces/${config.testNamespace.subNamespace}`) }) describe('Namespace Detail Card should', () => { diff --git a/e2e/pageDetail/transactions/accountAddressRestriction.spec.js b/e2e/pageDetail/transactions/accountAddressRestriction.spec.js index cda32b9d7..e74d2261f 100644 --- a/e2e/pageDetail/transactions/accountAddressRestriction.spec.js +++ b/e2e/pageDetail/transactions/accountAddressRestriction.spec.js @@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json' describe('Symbol Explorer Transaction detail page for Account Address Restriction.', () => { beforeEach(() => { - cy.visit(`/transaction/${config.testTransactions.accountAddressRestriction}`) + cy.visit(`/transactions/${config.testTransactions.accountAddressRestriction}`) }) describe('Transaction info card should', () => { @@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Account Address Restrictio }) it('render correct transaction detail titles', () => { - const items = ['Type', 'Restriction Type', 'Additions'] + const items = ['Transaction Type', 'Restriction Type', 'Additions'] cy.renderFieldInTable("transactionDetailTitle", items) }) diff --git a/e2e/pageDetail/transactions/accountMosaicRestriction.spec.js b/e2e/pageDetail/transactions/accountMosaicRestriction.spec.js index ba1e3f6f5..0d5f71781 100644 --- a/e2e/pageDetail/transactions/accountMosaicRestriction.spec.js +++ b/e2e/pageDetail/transactions/accountMosaicRestriction.spec.js @@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json' describe('Symbol Explorer Transaction detail page for Account Mosaic Restriction.', () => { beforeEach(() => { - cy.visit(`/transaction/${config.testTransactions.accountMosaicRestriction}`) + cy.visit(`/transactions/${config.testTransactions.accountMosaicRestriction}`) }) describe('Transaction info card should', () => { @@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Account Mosaic Restriction }) it('render correct transaction detail titles', () => { - const items = ['Type', 'Restriction Type', 'Additions'] + const items = ['Transaction Type', 'Restriction Type', 'Additions'] cy.renderFieldInTable("transactionDetailTitle", items) }) diff --git a/e2e/pageDetail/transactions/accountOperationRestriction.spec.js b/e2e/pageDetail/transactions/accountOperationRestriction.spec.js index ffc9ec9bc..35f3c530b 100644 --- a/e2e/pageDetail/transactions/accountOperationRestriction.spec.js +++ b/e2e/pageDetail/transactions/accountOperationRestriction.spec.js @@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json' describe('Symbol Explorer Transaction detail page for Account Operation Restriction.', () => { beforeEach(() => { - cy.visit(`/transaction/${config.testTransactions.accountOperationRestriction}`) + cy.visit(`/transactions/${config.testTransactions.accountOperationRestriction}`) }) describe('Transaction info card should', () => { @@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Account Operation Restrict }) it('render correct transaction detail titles', () => { - const items = ['Type', 'Restriction Type', 'Additions'] + const items = ['Transaction Type', 'Restriction Type', 'Additions'] cy.renderFieldInTable("transactionDetailTitle", items) }) diff --git a/e2e/pageDetail/transactions/addressAlias.spec.js b/e2e/pageDetail/transactions/addressAlias.spec.js index 76b8d449c..927c2615b 100644 --- a/e2e/pageDetail/transactions/addressAlias.spec.js +++ b/e2e/pageDetail/transactions/addressAlias.spec.js @@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json' describe('Symbol Explorer Transaction detail page for Address Alias', () => { beforeEach(() => { - cy.visit(`/transaction/${config.testTransactions.addressAlias}`) + cy.visit(`/transactions/${config.testTransactions.addressAlias}`) }) describe('Transaction info card should', () => { @@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Address Alias', () => { }) it('render correct transaction detail titles', () => { - const items = ['Type', 'Alias Action', 'Namespace ID', 'Name', 'Address'] + const items = ['Transaction Type', 'Alias Action', 'Namespace ID', 'Name', 'Address'] cy.renderFieldInTable("transactionDetailTitle", items) }) diff --git a/e2e/pageDetail/transactions/aggregateComplete.spec.js b/e2e/pageDetail/transactions/aggregateComplete.spec.js index 27bc0686c..1c3e698cf 100644 --- a/e2e/pageDetail/transactions/aggregateComplete.spec.js +++ b/e2e/pageDetail/transactions/aggregateComplete.spec.js @@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json' describe('Symbol Explorer Transaction detail page for Aggregate Complete', () => { beforeEach(() => { - cy.visit(`/transaction/${config.testTransactions.aggregateComplete}`) + cy.visit(`/transactions/${config.testTransactions.aggregateComplete}`) }) describe('Transaction info card should', () => { diff --git a/e2e/pageDetail/transactions/hashLock.spec.js b/e2e/pageDetail/transactions/hashLock.spec.js index 2914ae2f5..7d3130f4f 100644 --- a/e2e/pageDetail/transactions/hashLock.spec.js +++ b/e2e/pageDetail/transactions/hashLock.spec.js @@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json' describe('Symbol Explorer Transaction detail page for Hash Lock.', () => { beforeEach(() => { - cy.visit(`/transaction/${config.testTransactions.hashLock}`) + cy.visit(`/transactions/${config.testTransactions.hashLock}`) }) describe('Transaction info card should', () => { @@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Hash Lock.', () => { }) it('render correct transaction detail titles', () => { - const items = ['Type', 'Duration', 'Mosaic ID', 'Amount'] + const items = ['Transaction Type', 'Duration', 'Mosaic ID', 'Amount', 'Hash', 'Alias Namespace'] cy.renderFieldInTable("transactionDetailTitle", items) }) diff --git a/e2e/pageDetail/transactions/mosaicAlias.spec.js b/e2e/pageDetail/transactions/mosaicAlias.spec.js index 788b92aed..1e1759f28 100644 --- a/e2e/pageDetail/transactions/mosaicAlias.spec.js +++ b/e2e/pageDetail/transactions/mosaicAlias.spec.js @@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json' describe('Symbol Explorer Transaction detail page for Mosaic Alias', () => { beforeEach(() => { - cy.visit(`/transaction/${config.testTransactions.mosaicAlias}`) + cy.visit(`/transactions/${config.testTransactions.mosaicAlias}`) }) describe('Transaction info card should', () => { @@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Mosaic Alias', () => { }) it('render correct transaction detail titles', () => { - const items = ['Type', 'Alias Action', 'Namespace ID', 'Mosaic ID', 'Name'] + const items = ['Transaction Type', 'Alias Action', 'Namespace ID', 'Mosaic ID', 'Name'] cy.renderFieldInTable("transactionDetailTitle", items) }) diff --git a/e2e/pageDetail/transactions/mosaicSupplyChange.spec.js b/e2e/pageDetail/transactions/mosaicSupplyChange.spec.js index 3db42b4d6..dad26c8a7 100644 --- a/e2e/pageDetail/transactions/mosaicSupplyChange.spec.js +++ b/e2e/pageDetail/transactions/mosaicSupplyChange.spec.js @@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json' describe('Symbol Explorer Transaction detail page for Mosaic Supply Change', () => { beforeEach(() => { - cy.visit(`/transaction/${config.testTransactions.mosaicSupplyChange}`) + cy.visit(`/transactions/${config.testTransactions.mosaicSupplyChange}`) }) describe('Transaction info card should', () => { @@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Mosaic Supply Change', () }) it('render correct transaction detail titles', () => { - const items = ['Type', 'Mosaic ID', 'Action', 'Delta'] + const items = ['Transaction Type', 'Mosaic ID', 'Action', 'Delta'] cy.renderFieldInTable("transactionDetailTitle", items) }) diff --git a/e2e/pageDetail/transactions/namespaceRegistration.spec.js b/e2e/pageDetail/transactions/namespaceRegistration.spec.js index 97f7561d4..445382b27 100644 --- a/e2e/pageDetail/transactions/namespaceRegistration.spec.js +++ b/e2e/pageDetail/transactions/namespaceRegistration.spec.js @@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json' describe('Symbol Explorer Transaction detail page for Namespace Registration', () => { beforeEach(() => { - cy.visit(`/transaction/${config.testTransactions.namespaceRegistration}`) + cy.visit(`/transactions/${config.testTransactions.namespaceRegistration}`) }) describe('Transaction info card should', () => { @@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Namespace Registration', ( }) it('render correct transaction detail titles', () => { - const items = ['Type', 'Recipient', 'Registration Type', 'Name', 'Namespace ID', 'Parent ID', 'Duration'] + const items = ['Transaction Type', 'Recipient', 'Registration Type', 'Name', 'Namespace ID', 'Parent ID', 'Duration'] cy.renderFieldInTable("transactionDetailTitle", items) }) diff --git a/e2e/pageDetail/transactions/secretLock.spec.js b/e2e/pageDetail/transactions/secretLock.spec.js index 93fa72159..73ccfb5d0 100644 --- a/e2e/pageDetail/transactions/secretLock.spec.js +++ b/e2e/pageDetail/transactions/secretLock.spec.js @@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json' describe('Symbol Explorer Transaction detail page for Secret Lock.', () => { beforeEach(() => { - cy.visit(`/transaction/${config.testTransactions.secretLock}`) + cy.visit(`/transactions/${config.testTransactions.secretLock}`) }) describe('Transaction info card should', () => { @@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Secret Lock.', () => { }) it('render correct transaction detail titles', () => { - const items = ['Type', 'Duration', 'Mosaic ID', 'Secret', 'Recipient', 'Hash Algorithm'] + const items = ['Transaction Type', 'Duration', 'Mosaic ID', 'Secret', 'Recipient', 'Hash Algorithm'] cy.renderFieldInTable("transactionDetailTitle", items) }) }) diff --git a/e2e/pageDetail/transactions/secretProof.spec.js b/e2e/pageDetail/transactions/secretProof.spec.js index 85eab2131..65ebc9448 100644 --- a/e2e/pageDetail/transactions/secretProof.spec.js +++ b/e2e/pageDetail/transactions/secretProof.spec.js @@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json' describe('Symbol Explorer Transaction detail page for Secret Proof.', () => { beforeEach(() => { - cy.visit(`/transaction/${config.testTransactions.secretProof}`) + cy.visit(`/transactions/${config.testTransactions.secretProof}`) }) describe('Transaction info card should', () => { @@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Secret Proof.', () => { }) it('render correct transaction detail titles', () => { - const items = ['Type', 'Hash Algorithm', 'Recipient', 'Secret', 'Proof'] + const items = ['Transaction Type', 'Hash Algorithm', 'Recipient', 'Secret', 'Proof'] cy.renderFieldInTable("transactionDetailTitle", items) }) }) diff --git a/e2e/pageDetail/transactions/transferTransaction.spec.js b/e2e/pageDetail/transactions/transferTransaction.spec.js index cb79e5897..d07772181 100644 --- a/e2e/pageDetail/transactions/transferTransaction.spec.js +++ b/e2e/pageDetail/transactions/transferTransaction.spec.js @@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json' describe('Symbol Explorer Transaction detail page for Transfer Transaction', () => { beforeEach(() => { - cy.visit(`/transaction/${config.testTransactions.transferTransaction}`) + cy.visit(`/transactions/${config.testTransactions.transferTransaction}`) }) describe('Transaction info card should', () => { diff --git a/e2e/pageDetail/transactions/votingKeyLink.spec.js b/e2e/pageDetail/transactions/votingKeyLink.spec.js new file mode 100644 index 000000000..b5cebb577 --- /dev/null +++ b/e2e/pageDetail/transactions/votingKeyLink.spec.js @@ -0,0 +1,39 @@ +import config from '../../config/network.conf.json' +import datafiled from '../../config/datafiled.json' + +describe('Symbol Explorer Transaction detail page for Voting Key Link.', () => { + beforeEach(() => { + cy.visit(`/transactions/${config.testTransactions.votingKeyLink}`) + }) + + describe('Transaction info card should', () => { + it('load title', () => { + cy.get('[data-cy="transactionInfoTitle"]').should('contain', 'Transaction Info') + }) + + it('render data info in table', ()=> { + cy.renderTableInCard("transactionInfoTitle") + }) + + it('render correct transaction info titles', ()=> { + const items = datafiled.transactionInfoFields + cy.renderFieldInTable("transactionInfoTitle", items) + }) + }) + + describe('Transaction Detail card should', () => { + it('load title', () => { + cy.get('[data-cy="transactionDetailTitle"]').should('contain', 'Transaction Detail') + }) + + it('render data info in table', ()=> { + cy.renderTableInCard("transactionDetailTitle") + }) + + it('render correct transaction detail titles', () => { + const items = ['Transaction Type', 'Link Action', 'linked Public Key', 'linked Account Address', 'Start Finalization Epoch', 'End Finalization Epoch'] + cy.renderFieldInTable("transactionDetailTitle", items) + }) + + }) +}) \ No newline at end of file diff --git a/e2e/pageDetail/transactions/vrfKeyLink.spec.js b/e2e/pageDetail/transactions/vrfKeyLink.spec.js index 522c5ef24..028dbaa80 100644 --- a/e2e/pageDetail/transactions/vrfKeyLink.spec.js +++ b/e2e/pageDetail/transactions/vrfKeyLink.spec.js @@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json' describe('Symbol Explorer Transaction detail page for VRF Key Link.', () => { beforeEach(() => { - cy.visit(`/transaction/${config.testTransactions.vrfKeyLink}`) + cy.visit(`/transactions/${config.testTransactions.vrfKeyLink}`) }) describe('Transaction info card should', () => { @@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for VRF Key Link.', () => { }) it('render correct transaction detail titles', () => { - const items = ['Type', 'Link Action', 'linked Public Key'] + const items = ['Transaction Type', 'Link Action', 'linked Public Key', 'linked Account Address'] cy.renderFieldInTable("transactionDetailTitle", items) }) diff --git a/e2e/pages/accounts.spec.js b/e2e/pages/accounts.spec.js index aa36498b6..a8b0e08f1 100644 --- a/e2e/pages/accounts.spec.js +++ b/e2e/pages/accounts.spec.js @@ -28,12 +28,13 @@ describe('Symbol Explorer Accounts list page should', () => { cy.url().should('contain', '/account') }) - it('redirect to block detail page given click on Last Activity', () => { - cy.get('tbody tr .lastActivity a') - .then($data => { - return $data[0] - }).click({ force:true }) - - cy.url().should('contain', '/block') - }) + // Todo + // it('redirect to block detail page given click on Last Activity', () => { + // cy.get('tbody tr .lastActivity a') + // .then($data => { + // return $data[0] + // }).click({ force:true }) + + // cy.url().should('contain', '/block') + // }) }) \ No newline at end of file diff --git a/e2e/pages/home.spec.js b/e2e/pages/home.spec.js index 3e5f1c5ec..d6fec703a 100644 --- a/e2e/pages/home.spec.js +++ b/e2e/pages/home.spec.js @@ -1,18 +1,18 @@ // cypress/integration/spec.js -describe.skip('Symbol Explorer Home Page should', () => { +describe('Symbol Explorer Home Page should', () => { beforeEach(() => { cy.visit('/') }) - it('load XYM Price graph', () => { + it('load XEM Price graph', () => { - cy.contains('XYM Price') + cy.contains('XEM Price') // view all statistic button is clickable // cy.contains('View all statistics').click() // cy.url().should('contain', '/statistics') - // XYM price chart is visible + // XEM price chart is visible cy.get('.apexcharts-svg').should('be.visible') }) @@ -25,13 +25,13 @@ describe.skip('Symbol Explorer Home Page should', () => { .should('be.visible') cy.get('.ex-item-title') - .should('have.length', 4) + .should('have.length', 5) cy.get('.ex-item-value') .should('be.visible') cy.get('.ex-item-value') - .should('have.length', 4) + .should('have.length', 5) }) it('load Recent Transactions', () => { diff --git a/e2e/pages/nodes.spec.js b/e2e/pages/nodes.spec.js index ebf249fba..10216e6ca 100644 --- a/e2e/pages/nodes.spec.js +++ b/e2e/pages/nodes.spec.js @@ -1,4 +1,4 @@ -describe('Symbol Explorer Namespaces list page should', () => { +describe('Symbol Explorer Nodes list page should', () => { beforeEach(() => { cy.visit('/nodes') }) diff --git a/e2e/router/router.spec.js b/e2e/router/router.spec.js index 0ddc65a50..c46643ce6 100644 --- a/e2e/router/router.spec.js +++ b/e2e/router/router.spec.js @@ -5,7 +5,7 @@ describe('Symbol Explorer Menu Route should', () => { }) it('redirect to home given click on home tab', () => { - cy.contains('XYM Price') + cy.contains('XEM Price') cy.contains('Base Info') cy.contains('Recent Transactions') cy.contains('Recent Blocks') @@ -41,4 +41,9 @@ describe('Symbol Explorer Menu Route should', () => { cy.get('.ex-menu').contains('Nodes').click() cy.url().should('contain', '/nodes') }) + + it('redirect to statistics page given click on statistics tab', () => { + cy.get('.ex-menu').contains('Statistics').click() + cy.url().should('contain', '/statistics') + }) }) diff --git a/package-lock.json b/package-lock.json index 7c1899cbb..3508a1585 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "symbol-explorer", - "version": "0.5.0", + "version": "0.6.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -6634,9 +6634,9 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "catbuffer-typescript": { - "version": "0.0.21", - "resolved": "https://registry.npmjs.org/catbuffer-typescript/-/catbuffer-typescript-0.0.21.tgz", - "integrity": "sha512-fKz6NoojjWOf7eJRZeh3pH6wMkxTXSfH/55yfzaImnhTQeaL6j1xiYElgWDDkKDJe2N4UWUJywRjbfT96I/GJw==" + "version": "0.0.22", + "resolved": "https://registry.npmjs.org/catbuffer-typescript/-/catbuffer-typescript-0.0.22.tgz", + "integrity": "sha512-Wip3kJFnXrsMRF+4yJSE/F+aEqrTYLPPXdNuVftHNl9oFaKwQ9si8oI2ruSu53QIR+/ohOlY4QYtOagRpHnrFg==" }, "ccount": { "version": "1.0.4", @@ -16199,9 +16199,9 @@ } }, "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, "node-forge": { "version": "0.9.0", @@ -18986,9 +18986,9 @@ } }, "rxjs-compat": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.6.2.tgz", - "integrity": "sha512-C3V7axnAkPd91sbW1XreL8ydLM+phUcKViM76GBuT3hCzHMSQbszE/h6ajkgcrDn9j4JZ/OdzklvfAJ9MmXRcg==" + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.6.3.tgz", + "integrity": "sha512-y+wUqq7bS2dG+7rH2fNMoxsDiJ32RQzFxZQE/JdtpnmEZmwLQrb1tCiItyHxdXJHXjmHnnzFscn3b6PEmORGKw==" }, "safe-buffer": { "version": "5.1.2", @@ -20793,17 +20793,17 @@ "dev": true }, "symbol-openapi-typescript-fetch-client": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/symbol-openapi-typescript-fetch-client/-/symbol-openapi-typescript-fetch-client-0.9.6.tgz", - "integrity": "sha512-ZZtR031IBkYfiG0bR26vGckKmUrJzY9sggXMusrqloxweNovtzf7Aqpx7nNEpCJdMNzwv+E0V8mYBwxgFuiMfg==" + "version": "0.10.0-3", + "resolved": "https://registry.npmjs.org/symbol-openapi-typescript-fetch-client/-/symbol-openapi-typescript-fetch-client-0.10.0-3.tgz", + "integrity": "sha512-cdRz7Nc/m2i7CC8wHtj//z5RxOKEKhS4l+fFQvh7YUlYcUPaHbgcq4RMXSZPmMJ4PnzocnqWpVKjMj5cTYgrPA==" }, "symbol-sdk": { - "version": "0.20.7", - "resolved": "https://registry.npmjs.org/symbol-sdk/-/symbol-sdk-0.20.7.tgz", - "integrity": "sha512-313Uo/cev3ygvVLwTyDtnD1Qh56u4HeuUt5Q05R+WB3zjZl5xffXs5VKPRA4Th45/0Leyxk7oMPAS9hfFim5vw==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/symbol-sdk/-/symbol-sdk-0.21.0.tgz", + "integrity": "sha512-YFJ1PcVlFSivZe8RUOOGJJvXN2uleNTZB8ma6VONdz+obyI8QMAzdt4c6niyGTr76Md6dRQVJ/uaq+MpbJtDQg==", "requires": { "bluebird": "^3.7.2", - "catbuffer-typescript": "0.0.21", + "catbuffer-typescript": "0.0.22", "crypto-js": "^4.0.0", "diff": "^4.0.2", "futoin-hkdf": "^1.3.1", @@ -20820,7 +20820,7 @@ "ripemd160": "^2.0.2", "rxjs": "^6.5.3", "rxjs-compat": "^6.5.3", - "symbol-openapi-typescript-fetch-client": "0.9.6", + "symbol-openapi-typescript-fetch-client": "0.10.0-3", "tweetnacl": "^1.0.3", "utf8": "^3.0.0", "ws": "^7.2.3" @@ -20856,9 +20856,9 @@ } }, "rxjs": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", - "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", "requires": { "tslib": "^1.9.0" } diff --git a/package.json b/package.json index a079eba17..554828d12 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "symbol-explorer", "description": "Symbol Block and Network Explorer", "homepage": "https://github.com/nemgrouplimited/symbol-explorer", - "version": "0.5.0", + "version": "0.6.0", "scripts": { "dev": "vue-cli-service serve", "build": "vue-cli-service build", @@ -26,7 +26,7 @@ "js-sha3": "^0.8.0", "merkletreejs": "^0.2.9", "moment-timezone": "^0.5.28", - "symbol-sdk": "^0.20.7", + "symbol-sdk": "^0.21.0", "url-parse": "^1.4.7", "vue": "^2.6.11", "vue-apexcharts": "^1.5.2", diff --git a/src/components/TransactionSchema.vue b/src/components/TransactionSchema.vue index ada1fb878..ea0561506 100644 --- a/src/components/TransactionSchema.vue +++ b/src/components/TransactionSchema.vue @@ -325,7 +325,7 @@ export default { accountClick(address) { this.$store.dispatch(`ui/openPage`, { - pageName: 'address', + pageName: 'account', param: address }); } diff --git a/src/components/fields/BlockHeightWithFinalizedStatusField.vue b/src/components/fields/BlockHeightWithFinalizedStatusField.vue new file mode 100644 index 000000000..06de043b3 --- /dev/null +++ b/src/components/fields/BlockHeightWithFinalizedStatusField.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/components/fields/RestrictionField.vue b/src/components/fields/RestrictionField.vue new file mode 100644 index 000000000..5d5e9b968 --- /dev/null +++ b/src/components/fields/RestrictionField.vue @@ -0,0 +1,76 @@ +/* + * + * Copyright (c) 2019-present for NEM + * + * Licensed under the Apache License, Version 2.0 (the "License "); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + + + + + + diff --git a/src/components/graphics/EditCircle.vue b/src/components/graphics/EditCircle.vue new file mode 100644 index 000000000..b749c0818 --- /dev/null +++ b/src/components/graphics/EditCircle.vue @@ -0,0 +1,80 @@ + + + diff --git a/src/components/graphics/GraphicComponent.vue b/src/components/graphics/GraphicComponent.vue index 25f9748c8..eb9a92bf4 100644 --- a/src/components/graphics/GraphicComponent.vue +++ b/src/components/graphics/GraphicComponent.vue @@ -5,6 +5,9 @@ import Constants from '../../config/constants'; export default { props: { + type: { + default: 0 + }, x: { type: Number, default: 0 @@ -115,11 +118,11 @@ export default { }, nativeMosaicId() { - return http.networkCurrecy.mosaicId; + return http.networkCurrency.mosaicId; }, nativeMosaicAliasName() { - return http.networkCurrecy.mosaicId.namespace; + return http.networkCurrency.namespace.namespaceName; }, _x() { @@ -228,7 +231,7 @@ export default { onAccountClick(address) { this.$store.dispatch(`ui/openPage`, { - pageName: 'address', + pageName: 'account', param: address }); this.$emit('click', address); diff --git a/src/components/graphics/KeyCircle.vue b/src/components/graphics/KeyCircle.vue new file mode 100644 index 000000000..2a7cb7789 --- /dev/null +++ b/src/components/graphics/KeyCircle.vue @@ -0,0 +1,80 @@ + + + diff --git a/src/components/graphics/KeyUnlinkCircle.vue b/src/components/graphics/KeyUnlinkCircle.vue new file mode 100644 index 000000000..8a0c594bc --- /dev/null +++ b/src/components/graphics/KeyUnlinkCircle.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/graphics/LockCircle.vue b/src/components/graphics/LockCircle.vue new file mode 100644 index 000000000..069bc0f80 --- /dev/null +++ b/src/components/graphics/LockCircle.vue @@ -0,0 +1,77 @@ + + + diff --git a/src/components/graphics/LockIcon.vue b/src/components/graphics/LockIcon.vue new file mode 100644 index 000000000..35ccb921d --- /dev/null +++ b/src/components/graphics/LockIcon.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/src/components/graphics/MosaicIcon.vue b/src/components/graphics/MosaicIcon.vue index fa5e757c0..d78a9db20 100644 --- a/src/components/graphics/MosaicIcon.vue +++ b/src/components/graphics/MosaicIcon.vue @@ -7,7 +7,7 @@ :y="_y" :width="_width" :height="_height" - viewBox="0 0 116 105" + :viewBox="viewBox" xml:space="preserve" class="connector" @click="onMosaicClick(mosaicId || mosaic.mosaicId)" @@ -25,37 +25,44 @@ clip-rule="evenodd" class="connector-body" fill="url(#connector-gradient)" - d="M11.904,34.983c-4.227-0.093-4.647-3.084-3.658-5.896 - c1.968-5.593,4.479-10.894,8.546-15.516c3.351-3.808,6.236-3.907,10.271-1.502c9.666,5.76,19.471,11.289,29.236,16.88 - c0.837,0.479,1.802,0.731,2.708,1.089c4.115,4.153,11.126,4.823,17.737,1.344c8.075-4.25,12.982-11.063,15.193-19.869 - c2.245-2.927,4.929-2.037,6.688,0.043c3.749,4.43,7.098,9.225,9.141,14.753c2.05,5.549,1.401,7.036-3.843,10.04 - c-10.657,6.104-21.28,12.268-31.917,18.407c-2.476-0.013-3.744,1.917-5.115,3.435c-7.864,8.708-5.21,25.899,5.134,33.797 - c1.434,4.358-1.177,6.186-4.74,6.636c-5.604,0.709-11.279,0.534-16.912,0.038c-4.731-0.415-6.382-3.324-6.32-7.834 - c0.141-10.301,0.112-20.605,0.117-30.907c0-1.989-0.163-3.979-0.25-5.968c2.176-5.214-0.826-9.114-3.744-12.631 - C34.355,34.307,21.589,31.658,11.904,34.983z" + d="M85.069,37.684c-4.227-0.093-4.648-3.084-3.658-5.896 + c1.967-5.593,4.479-10.894,8.545-15.516c3.352-3.808,6.236-3.907,10.271-1.502c9.666,5.76,19.471,11.289,29.236,16.88 + c0.838,0.479,1.803,0.731,2.709,1.089c4.115,4.153,11.125,4.823,17.736,1.344c8.076-4.25,12.982-11.063,15.193-19.869 + c2.246-2.927,4.93-2.037,6.688,0.043c3.75,4.43,7.098,9.225,9.141,14.753c2.051,5.549,1.402,7.036-3.842,10.04 + c-10.658,6.104-21.281,12.268-31.918,18.407c-2.475-0.013-3.744,1.917-5.115,3.435c-7.863,8.708-5.209,25.899,5.135,33.797 + c1.434,4.357-1.178,6.186-4.74,6.635c-5.604,0.709-11.279,0.535-16.912,0.039c-4.732-0.416-6.383-3.324-6.32-7.834 + c0.141-10.301,0.111-20.605,0.117-30.908c0-1.989-0.164-3.979-0.25-5.968c2.176-5.214-0.826-9.114-3.744-12.631 + C107.52,37.008,94.752,34.359,85.069,37.684z" /> + {{ truncatedMosaicName }} @@ -90,6 +97,11 @@ export default { aliasName: { type: String + }, + + hideCaption: { + type: Boolean, + default: false } }, @@ -97,12 +109,29 @@ export default { title() { return this.getTranslation('mosaic') + ': ' + ((this.aliasName || this.mosaic.aliasName) || (this.mosaicId || this.mosaic.mosaicId)); }, + iconColor() { return this.getIconColorFromHex(this.mosaicId || this.mosaic.mosaicId); }, truncatedMosaicId() { return this.truncString(this.mosaicId || this.mosaic.mosaicId); + }, + + truncatedMosaicName() { + const aliasName = this.aliasName || this.mosaic.aliasName; + const mosaicId = this.mosaicId || this.mosaic.mosaicId; + + if (aliasName) + return this.truncString(aliasName, 5); + return this.truncString(mosaicId); + }, + + viewBox() { + return this.hideCaption + ? '115 0 16 105' + : '0 0 261.333 131.313'; + // 0 0 116 105 } } }; @@ -117,4 +146,10 @@ export default { font-size: 18px; font-weight: bold; } + +.mosaic-text { + font-size: 18px; + font-weight: bold; + fill: var(--secondary); +} diff --git a/src/components/graphics/MosaicListPopover.vue b/src/components/graphics/MosaicListPopover.vue index 2c094a710..965cae11e 100644 --- a/src/components/graphics/MosaicListPopover.vue +++ b/src/components/graphics/MosaicListPopover.vue @@ -10,6 +10,7 @@ > + + {{ item }} +
{{ item }}
@@ -33,6 +36,7 @@ import TableView from './TableView.vue'; import MosaicsField from '@/components/fields/MosaicsField.vue'; import ArrayField from '@/components/fields/ArrayField.vue'; import TransactionType from '@/components/fields/TransactionType.vue'; +import BlockHeightWithFinalizedStatusField from '@/components/fields/BlockHeightWithFinalizedStatusField.vue'; export default { extends: TableView, @@ -40,7 +44,8 @@ export default { components: { MosaicsField, ArrayField, - TransactionType + TransactionType, + BlockHeightWithFinalizedStatusField }, props: { diff --git a/src/components/tables/TableListView.vue b/src/components/tables/TableListView.vue index 334e6457f..b16c1ab6b 100644 --- a/src/components/tables/TableListView.vue +++ b/src/components/tables/TableListView.vue @@ -31,6 +31,8 @@ + +
Show Detail @@ -60,7 +62,7 @@
{{ pageIndex + 1 }}/{{ getPageNumber(lastPage) }}
-
{{ getPageNumber(timeline.index, timeline.pageNumber) }}/ {{ getPageNumber(timeline.lastPage) }}
+
{{ getPageNumber(timeline.index, timeline.pageNumber) }}/ {{ getPageNumber() }}
+
+ + + + + + + + {{ transactionType + subTitle }} + {{ transactionType }} + + +
+ + + diff --git a/src/components/transaction-graphic/HashLockGraphic.vue b/src/components/transaction-graphic/HashLockGraphic.vue new file mode 100644 index 000000000..3bc57de2f --- /dev/null +++ b/src/components/transaction-graphic/HashLockGraphic.vue @@ -0,0 +1,120 @@ + + + diff --git a/src/components/transaction-graphic/MosaicDefinitionGraphic.vue b/src/components/transaction-graphic/MosaicDefinitionGraphic.vue new file mode 100644 index 000000000..5a68ad99b --- /dev/null +++ b/src/components/transaction-graphic/MosaicDefinitionGraphic.vue @@ -0,0 +1,127 @@ + + + diff --git a/src/components/transaction-graphic/MosaicSupplyChangeGraphic.vue b/src/components/transaction-graphic/MosaicSupplyChangeGraphic.vue new file mode 100644 index 000000000..132d9ca10 --- /dev/null +++ b/src/components/transaction-graphic/MosaicSupplyChangeGraphic.vue @@ -0,0 +1,113 @@ + + + diff --git a/src/components/transaction-graphic/NodeKeyLinkGraphic.vue b/src/components/transaction-graphic/NodeKeyLinkGraphic.vue new file mode 100644 index 000000000..e499370e8 --- /dev/null +++ b/src/components/transaction-graphic/NodeKeyLinkGraphic.vue @@ -0,0 +1,127 @@ + + + diff --git a/src/components/transaction-graphic/SecretLockGraphic.vue b/src/components/transaction-graphic/SecretLockGraphic.vue new file mode 100644 index 000000000..40086ed6c --- /dev/null +++ b/src/components/transaction-graphic/SecretLockGraphic.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/src/components/transaction-graphic/SecretProofGraphic.vue b/src/components/transaction-graphic/SecretProofGraphic.vue new file mode 100644 index 000000000..8f3fb62cc --- /dev/null +++ b/src/components/transaction-graphic/SecretProofGraphic.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/src/components/transaction-graphic/TransactionGraphic.vue b/src/components/transaction-graphic/TransactionGraphic.vue new file mode 100644 index 000000000..311d92cd2 --- /dev/null +++ b/src/components/transaction-graphic/TransactionGraphic.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/components/transaction-graphic/VotingKeyLinkGraphic.vue b/src/components/transaction-graphic/VotingKeyLinkGraphic.vue new file mode 100644 index 000000000..5b5fb5716 --- /dev/null +++ b/src/components/transaction-graphic/VotingKeyLinkGraphic.vue @@ -0,0 +1,135 @@ + + + diff --git a/src/components/transaction-graphic/VrfKeyGraphic.vue b/src/components/transaction-graphic/VrfKeyGraphic.vue new file mode 100644 index 000000000..3477fd304 --- /dev/null +++ b/src/components/transaction-graphic/VrfKeyGraphic.vue @@ -0,0 +1,127 @@ + + + diff --git a/src/components/widgets/BaseInfoWidget.vue b/src/components/widgets/BaseInfoWidget.vue index 7472620c9..83a88c432 100644 --- a/src/components/widgets/BaseInfoWidget.vue +++ b/src/components/widgets/BaseInfoWidget.vue @@ -36,7 +36,15 @@ {{getNameByKey('blockHeight')}}
- {{blockHeight}} + {{currentHeight}} +
+ + +
+ {{getNameByKey('finalizedHeight')}} +
+
+ {{finalizedHeight}}
@@ -56,13 +64,21 @@ export default { computed: { ...mapGetters({ - blockHeight: 'chain/getBlockHeight', + chainInfo: 'chain/getChainInfo', storageInfo: 'chain/getStorageInfo', marketData: 'chain/getMarketData' }), loading() { - return !this.blockHeight; + return !this.chainInfo; + }, + + currentHeight() { + return this.chainInfo.currentHeight; + }, + + finalizedHeight() { + return this.chainInfo.finalizedBlockHeight; } }, diff --git a/src/components/widgets/PriceChartWidget.vue b/src/components/widgets/PriceChartWidget.vue index 79a7a194a..e29c5d239 100644 --- a/src/components/widgets/PriceChartWidget.vue +++ b/src/components/widgets/PriceChartWidget.vue @@ -13,7 +13,7 @@ diff --git a/src/components/widgets/RecentBlocksWidget.vue b/src/components/widgets/RecentBlocksWidget.vue index 6ebfbe51e..9dbec770f 100644 --- a/src/components/widgets/RecentBlocksWidget.vue +++ b/src/components/widgets/RecentBlocksWidget.vue @@ -27,7 +27,7 @@ >