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
652307e8
Commit
652307e8
authored
Nov 30, 2017
by
yann300
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor getSelectedContract & move makeRecorder call
parent
53d897f9
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
57 deletions
+52
-57
run-tab.js
src/app/tabs/run-tab.js
+52
-57
No files found.
src/app/tabs/run-tab.js
View file @
652307e8
'use strict'
'use strict'
var
async
=
require
(
'async'
)
var
$
=
require
(
'jquery'
)
var
$
=
require
(
'jquery'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
var
helper
=
require
(
'../../lib/helper.js'
)
var
helper
=
require
(
'../../lib/helper.js'
)
...
@@ -166,45 +167,30 @@ var css = csjs`
...
@@ -166,45 +167,30 @@ var css = csjs`
module
.
exports
=
runTab
module
.
exports
=
runTab
var
instanceContainer
=
yo
`<div class="
${
css
.
instanceContainer
}
"></div>`
var
noInstancesText
=
yo
`<div class="
${
css
.
noInstancesText
}
">0 contract Instances</div>`
var
noInstancesText
=
yo
`<div class="
${
css
.
noInstancesText
}
">0 contract Instances</div>`
function
runTab
(
container
,
appAPI
,
appEvents
,
opts
)
{
var
pendingTxsText
=
yo
`<div class="
${
css
.
pendingTxsText
}
"></div>`
var
self
=
{
_view
:
{},
addInstance
:
addInstance
}
var
udapp
=
appAPI
.
udapp
()
var
instanceContainer
=
yo
`<div class="
${
css
.
instanceContainer
}
"></div>`
function
runTab
(
container
,
appAPI
,
appEvents
,
opts
)
{
var
pendingTxsText
=
yo
`<div class="
${
css
.
pendingTxsText
}
"></div>`
var
pendingTxsContainer
=
yo
`
var
pendingTxsContainer
=
yo
`
<div class="
${
css
.
pendingTxsContainer
}
">
<div class="
${
css
.
pendingTxsContainer
}
">
<div class=
${
css
.
buttons
}
>
${
makeRecorder
(
self
,
appAPI
,
appEvents
)}
</div>
${
pendingTxsText
}
${
pendingTxsText
}
</div>
</div>`
`
var
el
=
yo
`
var
el
=
yo
`
<div class="
${
css
.
runTabView
}
" id="runTabView">
<div class="
${
css
.
runTabView
}
" id="runTabView">
${
settings
(
self
,
appAPI
,
appEvents
)}
${
settings
(
appAPI
,
appEvents
)}
${
contractDropdown
(
self
,
appAPI
,
appEvents
,
instanceContainer
)}
${
contractDropdown
(
appAPI
,
appEvents
,
instanceContainer
)}
${
pendingTxsContainer
}
${
pendingTxsContainer
}
${
instanceContainer
}
${
instanceContainer
}
</div>
</div>
`
`
container
.
appendChild
(
el
)
container
.
appendChild
(
el
)
function
addInstance
(
sourcename
)
{
var
contract
=
appAPI
.
getContract
(
sourcename
)
var
address
=
self
.
_view
.
atAddressButtonInput
.
value
var
instance
=
udapp
.
renderInstance
(
contract
.
object
,
address
,
self
.
_view
.
selectContractNames
.
value
)
instanceContainer
.
appendChild
(
instance
)
}
// PENDING transactions
// PENDING transactions
function
updatePendingTxs
(
container
,
appAPI
)
{
function
updatePendingTxs
(
container
,
appAPI
)
{
var
pendingCount
=
Object
.
keys
(
udapp
.
pendingTransactions
()).
length
var
pendingCount
=
Object
.
keys
(
appAPI
.
udapp
()
.
pendingTransactions
()).
length
pendingTxsText
.
innerText
=
pendingCount
+
' pending transactions'
pendingTxsText
.
innerText
=
pendingCount
+
' pending transactions'
}
}
...
@@ -259,16 +245,14 @@ function updateAccountBalances (container, appAPI) {
...
@@ -259,16 +245,14 @@ function updateAccountBalances (container, appAPI) {
/* ------------------------------------------------
/* ------------------------------------------------
RECORDER
RECORDER
------------------------------------------------ */
------------------------------------------------ */
function
makeRecorder
(
self
,
appAPI
,
appEvents
)
{
function
makeRecorder
(
appAPI
,
appEvents
)
{
var
udapp
=
appAPI
.
udapp
()
var
udapp
=
appAPI
.
udapp
()
var
recorder
=
new
Recorder
({
var
recorder
=
new
Recorder
({
events
:
{
events
:
{
udapp
:
appEvents
.
udapp
,
udapp
:
appEvents
.
udapp
,
executioncontext
:
executionContext
.
event
executioncontext
:
executionContext
.
event
},
},
api
:
{
api
:
appAPI
getAccounts
(
cb
)
{
udapp
.
getAccounts
(
cb
)
}
}
})
})
var
css2
=
csjs
`
var
css2
=
csjs
`
.container {
.container {
...
@@ -314,27 +298,30 @@ function makeRecorder (self, appAPI, appEvents) {
...
@@ -314,27 +298,30 @@ function makeRecorder (self, appAPI, appEvents) {
try
{
try
{
var
obj
=
JSON
.
parse
(
json
)
var
obj
=
JSON
.
parse
(
json
)
var
txArray
=
obj
.
transactions
||
[]
var
txArray
=
obj
.
transactions
||
[]
var
addresses
=
obj
.
addresses
||
{}
var
accounts
=
obj
.
accounts
||
[]
var
options
=
obj
.
options
var
abis
=
obj
.
abis
}
catch
(
e
)
{
}
catch
(
e
)
{
modalDialogCustom
.
alert
(
'Invalid JSON, please try again'
)
modalDialogCustom
.
alert
(
'Invalid JSON, please try again'
)
}
}
if
(
txArray
.
length
)
{
if
(
txArray
.
length
)
{
txArray
.
forEach
(
tx
=>
{
recorder
.
setListen
(
false
)
var
record
=
recorder
.
resolveAddress
(
tx
.
record
,
addresses
)
async
.
eachSeries
(
txArray
,
function
(
tx
,
cb
)
{
udapp
.
rerunTx
(
record
,
function
(
err
,
result
)
{
var
record
=
recorder
.
resolveAddress
(
tx
.
record
,
accounts
,
options
)
//
{
udapp
.
rerunTx
(
record
,
function
(
err
,
txResult
)
{
// "result":
{
if
(
err
)
{
// "gasUsed": "5318",
console
.
error
(
err
)
// "vm": { "exception": 1, "selfdestruct": {} },
}
else
{
// "bloom": { "bitvector": { "type": "Buffer", "data": [0, /* ... */ 0, 0] } },
var
address
=
executionContext
.
isVM
()
?
txResult
.
result
.
createdAddress
:
tx
.
result
.
contractAddress
// "amountSpent": "5318"
if
(
!
address
)
return
// not a contract creation
// },
var
abi
=
abis
[
tx
.
record
.
abi
]
// "transactionHash": "0x84f68f96944a47b27af4b4ed1986637aa1bc05fd7a6f5cb1d6a53f68058276d8"
if
(
abi
)
{
// }
instanceContainer
.
appendChild
(
appAPI
.
udapp
().
renderInstanceFromABI
(
abi
,
address
,
record
.
contractName
))
if
(
err
)
console
.
error
(
err
)
}
else
if
(
record
.
src
)
self
.
addInstance
(
record
.
src
)
}
}
)
cb
(
)
})
})
},
()
=>
{
recorder
.
setListen
(
true
)
})
}
}
})
})
}
}
...
@@ -344,7 +331,7 @@ function makeRecorder (self, appAPI, appEvents) {
...
@@ -344,7 +331,7 @@ function makeRecorder (self, appAPI, appEvents) {
section CONTRACT DROPDOWN and BUTTONS
section CONTRACT DROPDOWN and BUTTONS
------------------------------------------------ */
------------------------------------------------ */
function
contractDropdown
(
self
,
appAPI
,
appEvents
,
instanceContainer
)
{
function
contractDropdown
(
appAPI
,
appEvents
,
instanceContainer
)
{
instanceContainer
.
appendChild
(
noInstancesText
)
instanceContainer
.
appendChild
(
noInstancesText
)
var
compFails
=
yo
`<i title="Contract compilation failed. Please check the compile tab for more information." class="fa fa-thumbs-down
${
css
.
errorIcon
}
" ></i>`
var
compFails
=
yo
`<i title="Contract compilation failed. Please check the compile tab for more information." class="fa fa-thumbs-down
${
css
.
errorIcon
}
" ></i>`
appEvents
.
compiler
.
register
(
'compilationFinished'
,
function
(
success
,
data
,
source
)
{
appEvents
.
compiler
.
register
(
'compilationFinished'
,
function
(
success
,
data
,
source
)
{
...
@@ -359,8 +346,18 @@ function contractDropdown (self, appAPI, appEvents, instanceContainer) {
...
@@ -359,8 +346,18 @@ function contractDropdown (self, appAPI, appEvents, instanceContainer) {
var
atAddressButtonInput
=
yo
`<input class="
${
css
.
input
}
ataddressinput" placeholder="Load contract from Address" title="atAddress" />`
var
atAddressButtonInput
=
yo
`<input class="
${
css
.
input
}
ataddressinput" placeholder="Load contract from Address" title="atAddress" />`
var
createButtonInput
=
yo
`<input class="
${
css
.
input
}
" placeholder="" title="Create" />`
var
createButtonInput
=
yo
`<input class="
${
css
.
input
}
" placeholder="" title="Create" />`
var
selectContractNames
=
yo
`<select class="
${
css
.
contractNames
}
" disabled></select>`
var
selectContractNames
=
yo
`<select class="
${
css
.
contractNames
}
" disabled></select>`
self
.
_view
.
atAddressButtonInput
=
atAddressButtonInput
self
.
_view
.
selectContractNames
=
selectContractNames
function
getSelectedContract
()
{
var
contractName
=
selectContractNames
.
children
[
selectContractNames
.
selectedIndex
].
innerHTML
if
(
contractName
)
{
return
{
name
:
contractName
,
contract
:
appAPI
.
getContract
(
contractName
)
}
}
return
null
}
appAPI
.
getSelectedContract
=
getSelectedContract
var
el
=
yo
`
var
el
=
yo
`
<div class="
${
css
.
container
}
">
<div class="
${
css
.
container
}
">
<div class="
${
css
.
subcontainer
}
">
<div class="
${
css
.
subcontainer
}
">
...
@@ -375,6 +372,7 @@ function contractDropdown (self, appAPI, appEvents, instanceContainer) {
...
@@ -375,6 +372,7 @@ function contractDropdown (self, appAPI, appEvents, instanceContainer) {
${
atAddressButtonInput
}
${
atAddressButtonInput
}
<div class="
${
css
.
atAddress
}
" onclick=
${
function
()
{
loadFromAddress
(
appAPI
)
}
}>At Address</div>
<div class="
${
css
.
atAddress
}
" onclick=
${
function
()
{
loadFromAddress
(
appAPI
)
}
}>At Address</div>
</div>
</div>
<div class=
${
css
.
buttons
}
>
${
makeRecorder
(
appAPI
,
appEvents
)}
</div>
</div>
</div>
</div>
</div>
`
`
...
@@ -382,8 +380,7 @@ function contractDropdown (self, appAPI, appEvents, instanceContainer) {
...
@@ -382,8 +380,7 @@ function contractDropdown (self, appAPI, appEvents, instanceContainer) {
function
setInputParamsPlaceHolder
()
{
function
setInputParamsPlaceHolder
()
{
createButtonInput
.
value
=
''
createButtonInput
.
value
=
''
if
(
appAPI
.
getContract
&&
selectContractNames
.
selectedIndex
>=
0
&&
selectContractNames
.
children
.
length
>
0
)
{
if
(
appAPI
.
getContract
&&
selectContractNames
.
selectedIndex
>=
0
&&
selectContractNames
.
children
.
length
>
0
)
{
var
contract
=
appAPI
.
getContract
(
selectContractNames
.
children
[
selectContractNames
.
selectedIndex
].
innerHTML
)
var
ctrabi
=
txHelper
.
getConstructorInterface
(
getSelectedContract
().
contract
.
object
.
abi
)
var
ctrabi
=
txHelper
.
getConstructorInterface
(
contract
.
object
.
abi
)
if
(
ctrabi
.
inputs
.
length
)
{
if
(
ctrabi
.
inputs
.
length
)
{
createButtonInput
.
setAttribute
(
'placeholder'
,
txHelper
.
inputParametersDeclarationToString
(
ctrabi
.
inputs
))
createButtonInput
.
setAttribute
(
'placeholder'
,
txHelper
.
inputParametersDeclarationToString
(
ctrabi
.
inputs
))
createButtonInput
.
removeAttribute
(
'disabled'
)
createButtonInput
.
removeAttribute
(
'disabled'
)
...
@@ -398,20 +395,18 @@ function contractDropdown (self, appAPI, appEvents, instanceContainer) {
...
@@ -398,20 +395,18 @@ function contractDropdown (self, appAPI, appEvents, instanceContainer) {
// ADD BUTTONS AT ADDRESS AND CREATE
// ADD BUTTONS AT ADDRESS AND CREATE
function
createInstance
()
{
function
createInstance
()
{
var
contractNames
=
document
.
querySelector
(
`.
${
css
.
contractNames
.
classNames
[
0
]}
`
)
var
selectedContract
=
getSelectedContract
()
var
contractName
=
contractNames
.
children
[
contractNames
.
selectedIndex
].
innerHTML
var
contract
=
appAPI
.
getContract
(
contractName
)
if
(
contract
.
object
.
evm
.
bytecode
.
object
.
length
===
0
)
{
if
(
selectedContract
.
contract
.
object
.
evm
.
bytecode
.
object
.
length
===
0
)
{
modalDialogCustom
.
alert
(
'This contract does not implement all functions and thus cannot be created.'
)
modalDialogCustom
.
alert
(
'This contract does not implement all functions and thus cannot be created.'
)
return
return
}
}
var
constructor
=
txHelper
.
getConstructorInterface
(
contract
.
object
.
abi
)
var
constructor
=
txHelper
.
getConstructorInterface
(
selectedContract
.
contract
.
object
.
abi
)
var
args
=
createButtonInput
.
value
var
args
=
createButtonInput
.
value
txFormat
.
buildData
(
contract
.
object
,
appAPI
.
getContracts
(),
true
,
constructor
,
args
,
appAPI
.
udapp
(),
(
error
,
data
)
=>
{
txFormat
.
buildData
(
selectedContract
.
contract
.
object
,
appAPI
.
getContracts
(),
true
,
constructor
,
args
,
appAPI
.
udapp
(),
(
error
,
data
)
=>
{
if
(
!
error
)
{
if
(
!
error
)
{
appAPI
.
logMessage
(
`creation of
${
contractN
ame
}
pending...`
)
appAPI
.
logMessage
(
`creation of
${
selectedContract
.
n
ame
}
pending...`
)
txExecution
.
createContract
(
data
,
appAPI
.
udapp
(),
(
error
,
txResult
)
=>
{
txExecution
.
createContract
(
data
,
appAPI
.
udapp
(),
(
error
,
txResult
)
=>
{
if
(
!
error
)
{
if
(
!
error
)
{
var
isVM
=
executionContext
.
isVM
()
var
isVM
=
executionContext
.
isVM
()
...
@@ -424,13 +419,13 @@ function contractDropdown (self, appAPI, appEvents, instanceContainer) {
...
@@ -424,13 +419,13 @@ function contractDropdown (self, appAPI, appEvents, instanceContainer) {
}
}
noInstancesText
.
style
.
display
=
'none'
noInstancesText
.
style
.
display
=
'none'
var
address
=
isVM
?
txResult
.
result
.
createdAddress
:
txResult
.
result
.
contractAddress
var
address
=
isVM
?
txResult
.
result
.
createdAddress
:
txResult
.
result
.
contractAddress
instanceContainer
.
appendChild
(
appAPI
.
udapp
().
renderInstance
(
contract
.
object
,
address
,
selectContractNames
.
value
))
instanceContainer
.
appendChild
(
appAPI
.
udapp
().
renderInstance
(
selectedContract
.
contract
.
object
,
address
,
selectContractNames
.
value
))
}
else
{
}
else
{
appAPI
.
logMessage
(
`creation of
${
contractN
ame
}
errored: `
+
error
)
appAPI
.
logMessage
(
`creation of
${
selectedContract
.
n
ame
}
errored: `
+
error
)
}
}
})
})
}
else
{
}
else
{
appAPI
.
logMessage
(
`creation of
${
contractN
ame
}
errored: `
+
error
)
appAPI
.
logMessage
(
`creation of
${
selectedContract
.
n
ame
}
errored: `
+
error
)
}
}
},
(
msg
)
=>
{
},
(
msg
)
=>
{
appAPI
.
logMessage
(
msg
)
appAPI
.
logMessage
(
msg
)
...
...
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