updating some of issues 1250

pull/1/head
Rob Stupay 7 years ago
parent 7294918671
commit f83ad4c276
  1. 56
      src/multiParamManager.js

@ -20,16 +20,51 @@ class MultiParamManager {
this.clickCallBack = clickCallBack this.clickCallBack = clickCallBack
this.inputs = inputs this.inputs = inputs
this.title = title this.title = title
this.basicInputField
this.multiFields
} }
switchMethodViewOn () { switchMethodViewOn () {
this.contractActionsContainerSingle.style.display = 'none' this.contractActionsContainerSingle.style.display = 'none'
this.contractActionsContainerMulti.style.display = 'flex' this.contractActionsContainerMulti.style.display = 'flex'
// fill in the inputs
this.makeMultiVal()
} }
switchMethodViewOff () { switchMethodViewOff () {
this.contractActionsContainerSingle.style.display = 'flex' this.contractActionsContainerSingle.style.display = 'flex'
this.contractActionsContainerMulti.style.display = 'none' this.contractActionsContainerMulti.style.display = 'none'
this.basicInputField.value = this.getMultiValsString()
}
getMultiValsString () {
var valArray = this.multiFields.querySelectorAll('input')
var ret = ''
for (var k = 0; k < valArray.length; k++) {
var el = valArray[k]
if (ret !== '') ret += ','
ret += el.value
}
return ret
}
emptyInputs () {
var valArray = this.multiFields.querySelectorAll('input')
for (var k = 0; k < valArray.length; k++) {
valArray[k].value = ''
}
this.basicInputField.value = ''
}
makeMultiVal () {
var inputString = this.basicInputField.value
console.log(inputString)
var inputStringArray = inputString.split(',')
// !! the split here will mess up a value with a comma in it !!
// do we not make a split if its a , inside a []?
var multiInputs = this.multiFields.querySelectorAll('input')
for (var k = 0; k < multiInputs.length; k++) {
multiInputs[k].value = inputStringArray[k]
}
} }
createMultiFields () { createMultiFields () {
@ -52,28 +87,31 @@ class MultiParamManager {
title = '(fallback)' title = '(fallback)'
} }
var basicInputField = yo`<input></input>` this.basicInputField = yo`<input></input>`
basicInputField.setAttribute('placeholder', this.inputs) this.basicInputField.setAttribute('placeholder', this.inputs)
basicInputField.setAttribute('title', this.inputs) this.basicInputField.setAttribute('title', this.inputs)
var onClick = (domEl) => { var onClick = (domEl) => {
this.clickCallBack(this.funABI.inputs, basicInputField.value) this.clickCallBack(this.funABI.inputs, this.basicInputField.value)
this.emptyInputs()
} }
this.contractActionsContainerSingle = yo`<div class="${css.contractActionsContainerSingle}" > this.contractActionsContainerSingle = yo`<div class="${css.contractActionsContainerSingle}" >
<button onclick=${() => { onClick() }} class="${css.instanceButton}">${title}</button>${basicInputField}<i class="fa fa-angle-down ${css.methCaret}" onclick=${() => { this.switchMethodViewOn() }} title=${title} ></i> <button onclick=${() => { onClick() }} class="${css.instanceButton}">${title}</button>${this.basicInputField}<i class="fa fa-angle-down ${css.methCaret}" onclick=${() => { this.switchMethodViewOn() }} title=${title} ></i>
</div>` </div>`
var multiFields = this.createMultiFields() this.multiFields = this.createMultiFields()
var multiOnClick = () => { var multiOnClick = () => {
var valArray = multiFields.querySelectorAll('input') var valArray = this.multiFields.querySelectorAll('input')
var ret = '' var ret = ''
for (var k = 0; k < valArray.length; k++) { for (var k = 0; k < valArray.length; k++) {
var el = valArray[k] var el = valArray[k]
if (ret !== '') ret += ',' if (ret !== '') ret += ','
el.value = el.value.replace(/(^|,\s+|,)([a-zA-Z]+)(\s+,|,|$)/g, '$1"$2"$3') // replace non quoted string - that starts with a letter
ret += el.value ret += el.value
} }
this.clickCallBack(this.funABI.inputs, ret) this.clickCallBack(this.funABI.inputs, ret)
this.emptyInputs()
} }
var button = yo`<button onclick=${() => { multiOnClick() }} class="${css.instanceButton}"></button>` var button = yo`<button onclick=${() => { multiOnClick() }} class="${css.instanceButton}"></button>`
@ -84,7 +122,7 @@ class MultiParamManager {
<div class="${css.multiTitle}">${title}</div> <div class="${css.multiTitle}">${title}</div>
<i class='fa fa-angle-up ${css.methCaret}'></i> <i class='fa fa-angle-up ${css.methCaret}'></i>
</div> </div>
${multiFields} ${this.multiFields}
<div class="${css.group} ${css.multiArg}" > <div class="${css.group} ${css.multiArg}" >
${button} ${button}
</div> </div>
@ -106,7 +144,7 @@ class MultiParamManager {
contractProperty.classList.add(css.hasArgs) contractProperty.classList.add(css.hasArgs)
} else { } else {
this.contractActionsContainerSingle.querySelector('i').style.visibility = 'hidden' this.contractActionsContainerSingle.querySelector('i').style.visibility = 'hidden'
basicInputField.style.display = 'none' this.basicInputField.style.display = 'none'
} }
if (this.funABI.payable === true) { if (this.funABI.payable === true) {

Loading…
Cancel
Save