diff options
author | August Skare <post@augustskare.no> | 2018-10-18 21:25:08 +0800 |
---|---|---|
committer | August Skare <post@augustskare.no> | 2018-10-18 21:25:08 +0800 |
commit | 30f7f83573c9254de336c3c2fc7297188d47af15 (patch) | |
tree | 8390963c9c346d9567a9f3a100841a57a2435896 /packages/dev-tools-pages/ts/components | |
parent | 97646571a1bf4514edb52a7bc14bb157dfa3025c (diff) | |
download | dexon-sol-tools-30f7f83573c9254de336c3c2fc7297188d47af15.tar dexon-sol-tools-30f7f83573c9254de336c3c2fc7297188d47af15.tar.gz dexon-sol-tools-30f7f83573c9254de336c3c2fc7297188d47af15.tar.bz2 dexon-sol-tools-30f7f83573c9254de336c3c2fc7297188d47af15.tar.lz dexon-sol-tools-30f7f83573c9254de336c3c2fc7297188d47af15.tar.xz dexon-sol-tools-30f7f83573c9254de336c3c2fc7297188d47af15.tar.zst dexon-sol-tools-30f7f83573c9254de336c3c2fc7297188d47af15.zip |
added trace component to trace view
Diffstat (limited to 'packages/dev-tools-pages/ts/components')
-rw-r--r-- | packages/dev-tools-pages/ts/components/Trace.tsx | 150 | ||||
-rw-r--r-- | packages/dev-tools-pages/ts/components/Typography.tsx | 6 |
2 files changed, 155 insertions, 1 deletions
diff --git a/packages/dev-tools-pages/ts/components/Trace.tsx b/packages/dev-tools-pages/ts/components/Trace.tsx new file mode 100644 index 000000000..50bbd449a --- /dev/null +++ b/packages/dev-tools-pages/ts/components/Trace.tsx @@ -0,0 +1,150 @@ +import * as React from 'react'; +import styled from 'styled-components'; + +import { withContext, Props } from './withContext'; +import { Alpha, Beta, Gamma } from './Typography'; +import Container from './Container'; +import Code from './Code'; + +import ExactLocation from 'ts/icons/exact-location.svg'; +import NoLocation from 'ts/icons/no-location.svg'; +import TimeConsuming from 'ts/icons/time-consuming.svg'; +import TimeSaving from 'ts/icons/time-saving.svg'; + +interface TraceProps { + background?: string; +} + +function Trace(props: Props) { + const { colors } = props; + + return ( + <StyledSection background={colors.secondary}> + <Wrapper> + <Block> + <Alpha>The Issue</Alpha> + <MainCopy as="p"> + Every time an Ethereum transaction fails, it's extremely hard to trace down the troublemaking + line of code. The only hint you'll get is a generic error. + </MainCopy> + <Code>Error: VM Exception while processing transaction: rever</Code> + + <List> + <Item> + <Copy> + <Gamma as="h3">No location</Gamma> + <p> + The error basically says "anything could have gone wrong here", which keeps you + completely in the dark about its exact location. + </p> + </Copy> + <NoLocation /> + </Item> + + <Item> + <Copy> + <Gamma as="h3">Time-consuming</Gamma> + <p> + Working with a large code-base that contains hundreds of smart contracts, finding + the failing line of code quickly becomes a daunting task. + </p> + </Copy> + <TimeConsuming /> + </Item> + </List> + </Block> + + <Block background={colors.secondary}> + <Alpha>The Fix</Alpha> + <MainCopy as="p"> + Sol-trace will give you full stack traces, including contract names, line numbers and code + snippets, every time you encounter an error. + </MainCopy> + <Code>Error: VM Exception while processing transaction: rever</Code> + + <List> + <Item> + <Copy> + <Gamma as="h3">Exact location</Gamma> + <p> + It shows you the exact location of the specific code linen and where it was called + from. + </p> + </Copy> + <ExactLocation /> + </Item> + + <Item> + <Copy> + <Gamma as="h3">Time-saving</Gamma> + <p> + Turning "Your code failed somewhere, good luck debugging it" into "Your code failed + on linen X of contract Y", it drastically improves the developer experience. + </p> + </Copy> + <TimeSaving /> + </Item> + </List> + </Block> + </Wrapper> + </StyledSection> + ); +} + +const StyledSection = + styled.section < + TraceProps > + ` + max-width: 90rem; + margin: 0 auto; + background: linear-gradient(to right, #000 50%, ${props => props.background} 50%); + padding-top: 6.25rem; + padding-bottom: 5.25rem; +`; + +const Wrapper = styled(Container)` + display: flex; + + ${Alpha} { + padding-bottom: 2.5rem; + } +`; + +const Block = + styled.div < + TraceProps > + ` + width: 50%; + background: ${props => (props.background ? props.background : '#000')}; + color: ${props => (props.background ? 'inherit' : '#fff')}; + + :first-of-type { + padding-right: 6.25rem; + } + :last-of-type { + padding-left: 6.25rem; + } +`; + +const MainCopy = styled(Beta)` + margin-bottom: 3.1875rem; +`; + +const List = styled.ul` + margin-top: 6.25rem; + margin-bottom: 0; + padding: 0; +`; + +const Item = styled.li` + display: flex; + align-items: center; + margin-bottom: 4.4375rem; +`; + +const Copy = styled.div` + max-width: 20rem; + margin-right: 5.875rem; +`; + +export default withContext(Trace); diff --git a/packages/dev-tools-pages/ts/components/Typography.tsx b/packages/dev-tools-pages/ts/components/Typography.tsx index 3ce18df3b..9251d31b4 100644 --- a/packages/dev-tools-pages/ts/components/Typography.tsx +++ b/packages/dev-tools-pages/ts/components/Typography.tsx @@ -10,8 +10,12 @@ const Beta = styled.h3` line-height: 1.65; `; +const Gamma = styled.h4` + font-size: 1rem; +`; + const Small = styled.p` font-size: 0.875rem; `; -export { Alpha, Beta, Small }; +export { Alpha, Beta, Gamma, Small }; |