Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
baas-ide
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
guxukai
baas-ide
Commits
05c67024
Commit
05c67024
authored
May 19, 2018
by
serapath
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CompileTab: minor refactorings
parent
c291bec9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
53 additions
and
81 deletions
+53
-81
compile-tab.js
src/app/tabs/compile-tab.js
+53
-81
No files found.
src/app/tabs/compile-tab.js
View file @
05c67024
...
@@ -11,13 +11,15 @@ var publishOnSwarm = require('../contract/publishOnSwarm')
...
@@ -11,13 +11,15 @@ var publishOnSwarm = require('../contract/publishOnSwarm')
var
styles
=
styleGuide
.
chooser
()
var
styles
=
styleGuide
.
chooser
()
class
CompileTab
{
module
.
exports
=
class
CompileTab
{
constructor
(
api
=
{},
events
=
{},
opts
=
{})
{
constructor
(
api
=
{},
events
=
{},
opts
=
{})
{
const
self
=
this
const
self
=
this
self
.
_opts
=
opts
self
.
_opts
=
opts
self
.
_api
=
api
self
.
_api
=
api
self
.
_events
=
events
self
.
_events
=
events
self
.
_view
=
{}
self
.
_view
=
{
el
:
null
}
self
.
data
=
{
self
.
data
=
{
autoCompile
:
self
.
_opts
.
config
.
get
(
'autoCompile'
)
||
false
,
autoCompile
:
self
.
_opts
.
config
.
get
(
'autoCompile'
)
||
false
,
compileTimeout
:
null
,
compileTimeout
:
null
,
...
@@ -119,23 +121,19 @@ class CompileTab {
...
@@ -119,23 +121,19 @@ class CompileTab {
var
warnCompilationSlow
=
yo
`<i title="Copy Address" style="display:none" class="
${
css
.
warnCompilationSlow
}
fa fa-exclamation-triangle" aria-hidden="true"></i>`
var
warnCompilationSlow
=
yo
`<i title="Copy Address" style="display:none" class="
${
css
.
warnCompilationSlow
}
fa fa-exclamation-triangle" aria-hidden="true"></i>`
var
compileIcon
=
yo
`<i class="fa fa-refresh
${
css
.
icon
}
" aria-hidden="true"></i>`
var
compileIcon
=
yo
`<i class="fa fa-refresh
${
css
.
icon
}
" aria-hidden="true"></i>`
var
compileContainer
=
yo
`
var
compileContainer
=
yo
`
<div class="
${
css
.
compileContainer
}
">
<div class="
${
css
.
compileContainer
}
">
<div class="
${
css
.
compileButtons
}
">
<div class="
${
css
.
compileButtons
}
">
<div class="
${
css
.
compileButton
}
"id="compile" title="Compile source code">
${
compileIcon
}
Start to compile</div>
<div class="
${
css
.
compileButton
}
"id="compile" title="Compile source code">
${
compileIcon
}
Start to compile</div>
<div class="
${
css
.
autocompileContainer
}
">
<div class="
${
css
.
autocompileContainer
}
">
<input class="
${
css
.
autocompile
}
" id="autoCompile" type="checkbox" title="Auto compile">
<input class="
${
css
.
autocompile
}
" id="autoCompile" type="checkbox" title="Auto compile">
<span class="
${
css
.
autocompileText
}
">Auto compile</span>
<span class="
${
css
.
autocompileText
}
">Auto compile</span>
</div>
${
warnCompilationSlow
}
</div>
</div>
${
warnCompilationSlow
}
</div>
</div>
`
</div>`
compileContainer
.
querySelector
(
'#compile'
).
addEventListener
(
'click'
,
()
=>
{
compileContainer
.
querySelector
(
'#compile'
).
addEventListener
(
'click'
,
()
=>
{
self
.
_api
.
runCompiler
()
self
.
_api
.
runCompiler
()
})
})
// ----------------- autoCompile -----------------
var
autoCompileInput
=
compileContainer
.
querySelector
(
'#autoCompile'
)
var
autoCompileInput
=
compileContainer
.
querySelector
(
'#autoCompile'
)
var
autoCompile
=
false
var
autoCompile
=
false
if
(
opts
.
config
.
exists
(
'autoCompile'
))
{
if
(
opts
.
config
.
exists
(
'autoCompile'
))
{
...
@@ -145,18 +143,11 @@ class CompileTab {
...
@@ -145,18 +143,11 @@ class CompileTab {
if
(
autoCompile
)
{
if
(
autoCompile
)
{
autoCompileInput
.
setAttribute
(
'checked'
,
autoCompile
)
autoCompileInput
.
setAttribute
(
'checked'
,
autoCompile
)
}
}
autoCompileInput
.
addEventListener
(
'change'
,
function
()
{
autoCompileInput
.
addEventListener
(
'change'
,
function
()
{
opts
.
config
.
set
(
'autoCompile'
,
autoCompileInput
.
checked
)
opts
.
config
.
set
(
'autoCompile'
,
autoCompileInput
.
checked
)
})
})
var
errorContainer
=
yo
`<div class='error'></div>`
var
errorContainer
=
yo
`<div class='error'></div>`
/* ------------------------------------------------
section CONTRACT DROPDOWN, DETAILS AND PUBLISH
------------------------------------------------ */
var
contractsDetails
=
{}
var
contractsDetails
=
{}
var
contractEl
=
yo
`
var
contractEl
=
yo
`
<div class="
${
css
.
container
}
">
<div class="
${
css
.
container
}
">
<select class="
${
css
.
contractNames
}
" disabled></select>
<select class="
${
css
.
contractNames
}
" disabled></select>
...
@@ -164,12 +155,13 @@ class CompileTab {
...
@@ -164,12 +155,13 @@ class CompileTab {
<div title="Display Contract Details" class="
${
css
.
details
}
" onclick=
${()
=>
{
details
()
}}
>
Details
<
/div
>
<div title="Display Contract Details" class="
${
css
.
details
}
" onclick=
${()
=>
{
details
()
}}
>
Details
<
/div
>
<
div
title
=
"Publish on Swarm"
class
=
"${css.publish}"
onclick
=
$
{()
=>
{
publish
()
}}
>
Publish
on
Swarm
<
/div
>
<
div
title
=
"Publish on Swarm"
class
=
"${css.publish}"
onclick
=
$
{()
=>
{
publish
()
}}
>
Publish
on
Swarm
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div>
`
`
var
el
=
yo
`
<div class="
${
css
.
compileTabView
}
" id="compileTabView">
// HELPERS
${
compileContainer
}
${
contractEl
}
// GET NAMES OF ALL THE CONTRACTS
${
errorContainer
}
</div>`
function
getContractNames
(
success
,
data
)
{
function
getContractNames
(
success
,
data
)
{
var
contractNames
=
document
.
querySelector
(
`.
${
css
.
contractNames
.
classNames
[
0
]}
`
)
var
contractNames
=
document
.
querySelector
(
`.
${
css
.
contractNames
.
classNames
[
0
]}
`
)
contractNames
.
innerHTML
=
''
contractNames
.
innerHTML
=
''
...
@@ -177,10 +169,7 @@ class CompileTab {
...
@@ -177,10 +169,7 @@ class CompileTab {
contractNames
.
removeAttribute
(
'disabled'
)
contractNames
.
removeAttribute
(
'disabled'
)
opts
.
compiler
.
visitContracts
((
contract
)
=>
{
opts
.
compiler
.
visitContracts
((
contract
)
=>
{
contractsDetails
[
contract
.
name
]
=
parseContracts
(
contract
.
name
,
contract
.
object
,
opts
.
compiler
.
getSource
(
contract
.
file
))
contractsDetails
[
contract
.
name
]
=
parseContracts
(
contract
.
name
,
contract
.
object
,
opts
.
compiler
.
getSource
(
contract
.
file
))
var
contractName
=
yo
`
var
contractName
=
yo
`<option>
${
contract
.
name
}
</option>`
<option>
${
contract
.
name
}
</option>`
contractNames
.
appendChild
(
contractName
)
contractNames
.
appendChild
(
contractName
)
})
})
self
.
_api
.
resetDapp
(
contractsDetails
)
self
.
_api
.
resetDapp
(
contractsDetails
)
...
@@ -189,10 +178,8 @@ class CompileTab {
...
@@ -189,10 +178,8 @@ class CompileTab {
self._api.resetDapp({})
self._api.resetDapp({})
}
}
}
}
function details () {
function details () {
var select = contractEl.querySelector('select')
var select = contractEl.querySelector('select')
if (select.children.length > 0 && select.selectedIndex >= 0) {
if (select.children.length > 0 && select.selectedIndex >= 0) {
var contractName = select.children[select.selectedIndex].innerHTML
var contractName = select.children[select.selectedIndex].innerHTML
var contractProperties = contractsDetails[contractName]
var contractProperties = contractsDetails[contractName]
...
@@ -204,15 +191,29 @@ class CompileTab {
...
@@ -204,15 +191,29 @@ class CompileTab {
var
questionMark
=
yo
`<span class="
${
css
.
questionMark
}
"><i title="
${
detailsHelpSection
()[
propertyName
]}
" class="fa fa-question-circle" aria-hidden="true"></i></span>`
var
questionMark
=
yo
`<span class="
${
css
.
questionMark
}
"><i title="
${
detailsHelpSection
()[
propertyName
]}
" class="fa fa-question-circle" aria-hidden="true"></i></span>`
log
.
appendChild
(
yo
`
log
.
appendChild
(
yo
`
<div class=
${
css
.
log
}
>
<div class=
${
css
.
log
}
>
<div class="
${
css
.
key
}
">
${
propertyName
}
${
copyDetails
}
${
questionMark
}
</div>
<div class="
${
css
.
key
}
">
${
propertyName
}
${
copyDetails
}
${
questionMark
}
</div>
${
insertValue
(
contractProperties
,
propertyName
)}
${
insertValue
(
contractProperties
,
propertyName
)}
</div>
</div>`
)
`
)
})
})
modalDialog
(
contractName
,
log
,
{
label
:
''
},
{
label
:
'Close'
})
modalDialog
(
contractName
,
log
,
{
label
:
''
},
{
label
:
'Close'
})
}
}
}
}
function
detailsHelpSection
()
{
return
{
'Assembly'
:
'Assembly opcodes describing the contract including corresponding solidity source code'
,
'Opcodes'
:
'Assembly opcodes describing the contract'
,
'Runtime Bytecode'
:
'Bytecode storing the state and being executed during normal contract call'
,
'bytecode'
:
'Bytecode being executed during contract creation'
,
'functionHashes'
:
'List of declared function and their corresponding hash'
,
'gasEstimates'
:
'Gas estimation for each function call'
,
'metadata'
:
'Contains all informations related to the compilation'
,
'metadataHash'
:
'Hash representing all metadata information'
,
'abi'
:
'ABI: describing all the functions (input/output params, scope, ...)'
,
'name'
:
'Name of the compiled contract'
,
'swarmLocation'
:
'Swarm url where all metadata information can be found (contract needs to be published first)'
,
'web3Deploy'
:
'Copy/paste this code to any JavaScript/Web3 console to deploy this contract'
}
}
function
insertValue
(
details
,
propertyName
)
{
function
insertValue
(
details
,
propertyName
)
{
var
value
=
yo
`<pre class="
${
css
.
value
}
"></pre>`
var
value
=
yo
`<pre class="
${
css
.
value
}
"></pre>`
var
node
var
node
...
@@ -254,7 +255,6 @@ class CompileTab {
...
@@ -254,7 +255,6 @@ class CompileTab {
if
(
node
)
value
.
appendChild
(
node
)
if
(
node
)
value
.
appendChild
(
node
)
return
value
return
value
}
}
function
publish
()
{
function
publish
()
{
var
selectContractNames
=
document
.
querySelector
(
`.
${
css
.
contractNames
.
classNames
[
0
]}
`
)
var
selectContractNames
=
document
.
querySelector
(
`.
${
css
.
contractNames
.
classNames
[
0
]}
`
)
if
(
selectContractNames
.
children
.
length
>
0
&&
selectContractNames
.
selectedIndex
>=
0
)
{
if
(
selectContractNames
.
children
.
length
>
0
&&
selectContractNames
.
selectedIndex
>=
0
)
{
...
@@ -279,38 +279,10 @@ class CompileTab {
...
@@ -279,38 +279,10 @@ class CompileTab {
}
}
}
}
}
}
var
el
=
yo
`
<div class="
${
css
.
compileTabView
}
" id="compileTabView">
${
compileContainer
}
${
contractEl
}
${
errorContainer
}
</div>
`
return
{
render
()
{
return
el
}
}
return
{
render
()
{
return
el
}
}
}
}
}
}
function
detailsHelpSection
()
{
return
{
'Assembly'
:
'Assembly opcodes describing the contract including corresponding solidity source code'
,
'Opcodes'
:
'Assembly opcodes describing the contract'
,
'Runtime Bytecode'
:
'Bytecode storing the state and being executed during normal contract call'
,
'bytecode'
:
'Bytecode being executed during contract creation'
,
'functionHashes'
:
'List of declared function and their corresponding hash'
,
'gasEstimates'
:
'Gas estimation for each function call'
,
'metadata'
:
'Contains all informations related to the compilation'
,
'metadataHash'
:
'Hash representing all metadata information'
,
'abi'
:
'ABI: describing all the functions (input/output params, scope, ...)'
,
'name'
:
'Name of the compiled contract'
,
'swarmLocation'
:
'Swarm url where all metadata information can be found (contract needs to be published first)'
,
'web3Deploy'
:
'Copy/paste this code to any JavaScript/Web3 console to deploy this contract'
}
}
module
.
exports
=
CompileTab
const
css
=
csjs
`
const
css
=
csjs
`
.compileTabView {
.compileTabView {
padding: 2%;
padding: 2%;
...
@@ -430,21 +402,21 @@ const css = csjs`
...
@@ -430,21 +402,21 @@ const css = csjs`
animation: bounce 2s infinite;
animation: bounce 2s infinite;
}
}
@keyframes spin {
@keyframes spin {
0% { transform: rotate(0deg); }
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
100% { transform: rotate(360deg); }
}
}
@-webkit-keyframes bounce {
@-webkit-keyframes bounce {
0% {
0% {
margin-bottom: 0;
margin-bottom: 0;
color:
${
styles
.
colors
.
transparent
}
;
color:
${
styles
.
colors
.
transparent
}
;
}
}
70% {
70% {
margin-bottom: 0;
margin-bottom: 0;
color:
${
styles
.
rightPanel
.
text_Secondary
}
;
color:
${
styles
.
rightPanel
.
text_Secondary
}
;
}
}
100% {
100% {
margin-bottom: 0;
margin-bottom: 0;
color:
${
styles
.
colors
.
transparent
}
;
color:
${
styles
.
colors
.
transparent
}
;
}
}
}
}
`
`
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment