mirror of
https://github.com/corda/corda.git
synced 2024-12-19 04:57:58 +00:00
Fix not displaying Anonymous issuer name correctly in Explorer
This commit is contained in:
parent
059056de65
commit
dab80510f4
@ -40,6 +40,7 @@ class NetworkIdentityModel {
|
|||||||
return advertisedServices.any { it.info.type == NetworkMapService.type || it.info.type.isNotary() }
|
return advertisedServices.any { it.info.type == NetworkMapService.type || it.info.type.isNotary() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Use Identity Service in service hub instead?
|
||||||
fun lookup(compositeKey: CompositeKey): ObservableValue<NodeInfo?> = parties.firstOrDefault(notaries.firstOrNullObservable { it.notaryIdentity.owningKey == compositeKey }) {
|
fun lookup(compositeKey: CompositeKey): ObservableValue<NodeInfo?> = parties.firstOrDefault(notaries.firstOrNullObservable { it.notaryIdentity.owningKey == compositeKey }) {
|
||||||
it.legalIdentity.owningKey == compositeKey
|
it.legalIdentity.owningKey == compositeKey
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,13 @@ import javafx.scene.layout.GridPane
|
|||||||
import javafx.scene.layout.Priority
|
import javafx.scene.layout.Priority
|
||||||
import javafx.scene.text.TextAlignment
|
import javafx.scene.text.TextAlignment
|
||||||
import javafx.util.StringConverter
|
import javafx.util.StringConverter
|
||||||
|
import net.corda.client.fxutils.map
|
||||||
import net.corda.client.model.Models
|
import net.corda.client.model.Models
|
||||||
|
import net.corda.client.model.NetworkIdentityModel
|
||||||
|
import net.corda.contracts.asset.Cash
|
||||||
|
import net.corda.core.contracts.StateAndRef
|
||||||
|
import net.corda.core.crypto.AnonymousParty
|
||||||
|
import net.corda.core.crypto.Party
|
||||||
import tornadofx.*
|
import tornadofx.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -81,3 +87,7 @@ inline fun <reified M : Any> UIComponent.getModel(): M = Models.get(M::class, th
|
|||||||
|
|
||||||
// Cartesian product of 2 collections.
|
// Cartesian product of 2 collections.
|
||||||
fun <A, B> Collection<A>.cross(other: Collection<B>) = this.flatMap { a -> other.map { b -> a to b } }
|
fun <A, B> Collection<A>.cross(other: Collection<B>) = this.flatMap { a -> other.map { b -> a to b } }
|
||||||
|
|
||||||
|
// TODO: This is a temporary fix for the UI to shows the correct issuer identity, this will break when we start randomizing keys. More work is needed here when the identity work is done.
|
||||||
|
fun StateAndRef<Cash.State>.resolveIssuer(): ObservableValue<Party?> = state.data.amount.token.issuer.party.resolveIssuer()
|
||||||
|
fun AnonymousParty.resolveIssuer(): ObservableValue<Party?> = Models.get(NetworkIdentityModel::class, javaClass.kotlin).lookup(owningKey).map { it?.legalIdentity }
|
||||||
|
@ -15,10 +15,7 @@ import javafx.scene.control.TableView
|
|||||||
import javafx.scene.control.TitledPane
|
import javafx.scene.control.TitledPane
|
||||||
import javafx.scene.layout.BorderPane
|
import javafx.scene.layout.BorderPane
|
||||||
import javafx.scene.layout.VBox
|
import javafx.scene.layout.VBox
|
||||||
import net.corda.client.fxutils.filterNotNull
|
import net.corda.client.fxutils.*
|
||||||
import net.corda.client.fxutils.lift
|
|
||||||
import net.corda.client.fxutils.map
|
|
||||||
import net.corda.client.fxutils.sequence
|
|
||||||
import net.corda.client.model.*
|
import net.corda.client.model.*
|
||||||
import net.corda.contracts.asset.Cash
|
import net.corda.contracts.asset.Cash
|
||||||
import net.corda.core.contracts.*
|
import net.corda.core.contracts.*
|
||||||
@ -219,7 +216,8 @@ class TransactionViewer : CordaView("Transactions") {
|
|||||||
}
|
}
|
||||||
row {
|
row {
|
||||||
label("Issuer :") { gridpaneConstraints { hAlignment = HPos.RIGHT } }
|
label("Issuer :") { gridpaneConstraints { hAlignment = HPos.RIGHT } }
|
||||||
label("${data.amount.token.issuer}") {
|
val issuer = data.amount.token.issuer.party.resolveIssuer()
|
||||||
|
label(issuer.map { it?.name }) {
|
||||||
tooltip(data.amount.token.issuer.party.owningKey.toBase58String())
|
tooltip(data.amount.token.issuer.party.owningKey.toBase58String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,6 @@ import net.corda.contracts.asset.Cash
|
|||||||
import net.corda.core.contracts.Amount
|
import net.corda.core.contracts.Amount
|
||||||
import net.corda.core.contracts.StateAndRef
|
import net.corda.core.contracts.StateAndRef
|
||||||
import net.corda.core.contracts.withoutIssuer
|
import net.corda.core.contracts.withoutIssuer
|
||||||
import net.corda.core.crypto.AnonymousParty
|
|
||||||
import net.corda.core.crypto.Party
|
import net.corda.core.crypto.Party
|
||||||
import net.corda.explorer.formatters.AmountFormatter
|
import net.corda.explorer.formatters.AmountFormatter
|
||||||
import net.corda.explorer.identicon.identicon
|
import net.corda.explorer.identicon.identicon
|
||||||
@ -32,10 +31,7 @@ import net.corda.explorer.model.CordaWidget
|
|||||||
import net.corda.explorer.model.ReportingCurrencyModel
|
import net.corda.explorer.model.ReportingCurrencyModel
|
||||||
import net.corda.explorer.model.SettingsModel
|
import net.corda.explorer.model.SettingsModel
|
||||||
import net.corda.explorer.ui.*
|
import net.corda.explorer.ui.*
|
||||||
import net.corda.explorer.views.SearchField
|
import net.corda.explorer.views.*
|
||||||
import net.corda.explorer.views.runInFxApplicationThread
|
|
||||||
import net.corda.explorer.views.stringConverter
|
|
||||||
import net.corda.explorer.views.toStringWithSuffix
|
|
||||||
import org.fxmisc.easybind.EasyBind
|
import org.fxmisc.easybind.EasyBind
|
||||||
import tornadofx.*
|
import tornadofx.*
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
@ -85,7 +81,7 @@ class CashViewer : CordaView("Cash") {
|
|||||||
*/
|
*/
|
||||||
sealed class ViewerNode(val equivAmount: ObservableValue<out Amount<Currency>>,
|
sealed class ViewerNode(val equivAmount: ObservableValue<out Amount<Currency>>,
|
||||||
val states: ObservableList<StateAndRef<Cash.State>>) {
|
val states: ObservableList<StateAndRef<Cash.State>>) {
|
||||||
class IssuerNode(val issuer: AnonymousParty,
|
class IssuerNode(val issuer: ObservableValue<Party?>,
|
||||||
sumEquivAmount: ObservableValue<out Amount<Currency>>,
|
sumEquivAmount: ObservableValue<out Amount<Currency>>,
|
||||||
states: ObservableList<StateAndRef<Cash.State>>) : ViewerNode(sumEquivAmount, states)
|
states: ObservableList<StateAndRef<Cash.State>>) : ViewerNode(sumEquivAmount, states)
|
||||||
|
|
||||||
@ -127,7 +123,7 @@ class CashViewer : CordaView("Cash") {
|
|||||||
tooltip = identiconToolTip(stateRow.stateAndRef.ref.txhash)
|
tooltip = identiconToolTip(stateRow.stateAndRef.ref.txhash)
|
||||||
}
|
}
|
||||||
equivLabel.textProperty().bind(equivAmount.map { it.token.currencyCode.toString() })
|
equivLabel.textProperty().bind(equivAmount.map { it.token.currencyCode.toString() })
|
||||||
issuerValueLabel.text = stateRow.stateAndRef.state.data.amount.token.issuer.toString()
|
issuerValueLabel.textProperty().bind(stateRow.stateAndRef.resolveIssuer().map { it?.name })
|
||||||
originatedValueLabel.text = stateRow.originated.toString()
|
originatedValueLabel.text = stateRow.originated.toString()
|
||||||
amountValueLabel.text = amountFormatter.format(amountNoIssuer)
|
amountValueLabel.text = amountFormatter.format(amountNoIssuer)
|
||||||
equivValueLabel.textProperty().bind(equivAmount.map { equivFormatter.format(it) })
|
equivValueLabel.textProperty().bind(equivAmount.map { equivFormatter.format(it) })
|
||||||
@ -144,7 +140,7 @@ class CashViewer : CordaView("Cash") {
|
|||||||
*/
|
*/
|
||||||
val searchField = SearchField(cashStates,
|
val searchField = SearchField(cashStates,
|
||||||
"Currency" to { state, text -> state.state.data.amount.token.product.toString().contains(text, true) },
|
"Currency" to { state, text -> state.state.data.amount.token.product.toString().contains(text, true) },
|
||||||
"Issuer" to { state, text -> state.state.data.amount.token.issuer.party.toString().contains(text, true) }
|
"Issuer" to { state, text -> state.resolveIssuer().value?.name?.contains(text, true) ?: false }
|
||||||
)
|
)
|
||||||
root.top = hbox(5.0) {
|
root.top = hbox(5.0) {
|
||||||
button("New Transaction", FontAwesomeIconView(FontAwesomeIcon.PLUS)) {
|
button("New Transaction", FontAwesomeIconView(FontAwesomeIcon.PLUS)) {
|
||||||
@ -201,7 +197,7 @@ class CashViewer : CordaView("Cash") {
|
|||||||
/**
|
/**
|
||||||
* Assemble the Issuer node.
|
* Assemble the Issuer node.
|
||||||
*/
|
*/
|
||||||
val treeItem = TreeItem(ViewerNode.IssuerNode(issuer, equivSumAmount, memberStates))
|
val treeItem = TreeItem(ViewerNode.IssuerNode(issuer.resolveIssuer(), equivSumAmount, memberStates))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bind the children in the TreeTable structure.
|
* Bind the children in the TreeTable structure.
|
||||||
@ -230,7 +226,7 @@ class CashViewer : CordaView("Cash") {
|
|||||||
cashViewerTableIssuerCurrency.setCellValueFactory {
|
cashViewerTableIssuerCurrency.setCellValueFactory {
|
||||||
val node = it.value.value
|
val node = it.value.value
|
||||||
when (node) {
|
when (node) {
|
||||||
is ViewerNode.IssuerNode -> node.issuer.toString().lift()
|
is ViewerNode.IssuerNode -> node.issuer.map { it?.name }
|
||||||
is ViewerNode.CurrencyNode -> node.amount.map { it.token.toString() }
|
is ViewerNode.CurrencyNode -> node.amount.map { it.token.toString() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user