github.com/cryptohub-digital/blockbook-fork@v0.0.0-20230713133354-673c927af7f1/static/templates/address.html (about)

     1  {{define "specific"}}{{$addr := .Address}}{{$data := .}}
     2  <div class="row g-0 ms-2 ms-lg-0">
     3      <div class="col-md-10 order-2 order-md-1">
     4          <h1>{{if $addr.ContractInfo}}Contract {{$addr.ContractInfo.Name}}{{if $addr.ContractInfo.Symbol}} ({{$addr.ContractInfo.Symbol}}){{end}}{{else}}Address {{addressAlias $addr.AddrStr $data}}{{end}}</h1>
     5          <h5 class="col-12 d-flex h-data pb-2"><span class="ellipsis copyable">{{$addr.AddrStr}}</span></h5>
     6          <h4 class="row">
     7              <div class="col-lg-6">{{formattedAmountSpan $addr.BalanceSat 0 $data.CoinShortcut $data "copyable"}}</div>
     8              {{if $addr.SecondaryValue}}<div class="col-lg-6">{{summaryValuesSpan 0 $addr.SecondaryValue $data}}</div>{{end}}
     9          </h4>
    10          {{if gt $addr.TotalSecondaryValue $addr.SecondaryValue}}
    11          <div class="row g-0 small text-muted">Including Tokens</div>
    12          <h4 class="row">
    13              <div class="col-lg-6">{{summaryValuesSpan $addr.TotalBaseValue 0 $data}}</div>
    14              <div class="col-lg-6">{{summaryValuesSpan 0 $addr.TotalSecondaryValue $data}}</div>
    15          </h4>
    16          {{end}}
    17      </div>
    18      <div class="col-md-2 order-1 order-md-2 d-flex justify-content-center justify-content-md-end mb-3 mb-md-0">
    19          <div id="qrcode"></div>
    20          <script type="text/javascript" src="/static/js/qrcode.min.js"></script>
    21          <script type="text/javascript">
    22              new QRCode(document.getElementById("qrcode"), { text: "{{$addr.AddrStr}}", width: 120, height: 120 });
    23          </script>
    24      </div>
    25  </div>
    26  <table class="table data-table info-table">
    27      <tbody>
    28          <tr>
    29              <td style="white-space: nowrap;"><h5>Confirmed</h5></td>
    30              <td></td>
    31          </tr>
    32          {{if or (eq .ChainType 1) (eq .ChainType 2)}}
    33          <tr>
    34              <td style="width: 25%;">Balance</td>
    35              <td>{{amountSpan $addr.BalanceSat $data "copyable"}}</td>
    36          </tr>
    37          <tr>
    38              <td>Transactions</td>
    39              <td>{{formatInt $addr.Txs}}</td>
    40          </tr>
    41          <tr>
    42              <td>Non-contract Transactions</td>
    43              <td>{{formatInt $addr.NonTokenTxs}}</td>
    44          </tr>
    45          <tr>
    46              <td>Internal Transactions</td>
    47              <td>{{formatInt $addr.InternalTxs}}</td>
    48          </tr>
    49          <tr>
    50              <td>Nonce</td>
    51              <td>{{$addr.Nonce}}</td>
    52          </tr>
    53          {{if $addr.ContractInfo}}
    54          {{if $addr.ContractInfo.Type}}
    55          <tr>
    56              <td style="width: 25%;">Contract type</td>
    57              <td>{{$addr.ContractInfo.Type}}</td>
    58          </tr>
    59          {{end}}
    60          {{if $addr.ContractInfo.CreatedInBlock}}
    61          <tr>
    62              <td style="width: 25%;">Created in Block</td>
    63              <td><a href="/block/{{$addr.ContractInfo.CreatedInBlock}}">{{formatUint32 $addr.ContractInfo.CreatedInBlock}}</a></td>
    64          </tr>
    65          {{end}}
    66          {{if $addr.ContractInfo.DestructedInBlock}}
    67          <tr>
    68              <td style="width: 25%;">Destructed in Block</td>
    69              <td><a href="/block/{{$addr.ContractInfo.DestructedInBlock}}">{{formatUint32 $addr.ContractInfo.DestructedInBlock}}</a></td>
    70          </tr>
    71          {{end}}
    72          {{end}}
    73          {{else}}
    74          <tr>
    75              <td style="width: 25%;">Total Received</td>
    76              <td>{{amountSpan $addr.TotalReceivedSat $data "copyable"}}</td>
    77          </tr>
    78          <tr>
    79              <td>Total Sent</td>
    80              <td>{{amountSpan $addr.TotalSentSat $data "copyable"}}</td>
    81          </tr>
    82          <tr>
    83              <td>Final Balance</td>
    84              <td>{{amountSpan $addr.BalanceSat $data "copyable"}}</td>
    85          </tr>
    86          <tr>
    87              <td>No. Transactions</td>
    88              <td>{{formatInt $addr.Txs}}</td>
    89          </tr>
    90          {{end}}
    91      </tbody>
    92  </table>
    93  {{if $addr.UnconfirmedTxs}}
    94  <table class="table data-table info-table">
    95      <tbody>
    96          <tr>
    97              <td style="white-space: nowrap;"><h5>Unconfirmed</h5></td>
    98              <td></td>
    99          </tr>
   100          <tr>
   101              <td style="width: 25%;">Unconfirmed Balance</td>
   102              <td>{{amountSpan $addr.UnconfirmedBalanceSat $data "copyable"}}</td>
   103          </tr>
   104          <tr>
   105              <td>No. Transactions</td>
   106              <td>{{formatInt $addr.UnconfirmedTxs}}</td>
   107          </tr>
   108      </tbody>
   109  </table>
   110  {{end}}
   111  {{if or (eq .ChainType 1) (eq .ChainType 2)}}
   112  {{if tokenCount $addr.Tokens .FungibleTokenName}}
   113  <div class="accordion mt-2 mb-2" id="erc20">
   114      <div class="accordion-item">
   115          <div class="accordion-header" id="erc20Heading">
   116              <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#erc20Body" aria-expanded="false" aria-controls="erc20Body">
   117                  <div class="row g-0 w-100">
   118                      <h5 class="col-md-4 mb-md-0">{{.FungibleTokenName}} Tokens <span class="badge bg-secondary">{{tokenCount $addr.Tokens .FungibleTokenName}}</span></h5>
   119                      <h5 class="col-md-8 mb-md-0"><span tt="Total value of tokens">{{summaryValuesSpan $addr.TokensBaseValue $addr.TokensSecondaryValue $data}}</span></h5>
   120                  </div>
   121              </button>
   122          </div>
   123          <div id="erc20Body" class="accordion-collapse collapse" aria-labelledby="erc20Heading" data-bs-parent="#erc20">
   124              <div class="accordion-body">
   125                  <table class="table data-table mt-0 mb-0">
   126                      <tbody>
   127                          <tr>
   128                              <th style="width: 25%;">Contract</th>
   129                              <th style="width: 30%;">Quantity</th>
   130                              <th style="width: 35%;">Value</th>
   131                              <th class="text-end" style="width: 10%;"><span class="d-none d-md-block">Transfers</span><span class="d-block d-md-none">#</span></th>
   132                          </tr>
   133                          {{range $t := $addr.Tokens}}
   134                          {{if eq $t.Type $.FungibleTokenName}}
   135                          <tr>
   136                              <td class="ellipsis"><a href="/address/{{$t.Contract}}">{{if $t.Name}}<span class="copyable" cc="{{$t.Contract}}" alias-type="Contract">{{$t.Name}}</span>{{else}}<span class="copyable">{{$t.Contract}}</span>{{end}}</a></td>
   137                              <td>{{formattedAmountSpan $t.BalanceSat $t.Decimals $t.Symbol $data "copyable"}}</td>
   138                              <td>{{summaryValuesSpan $t.BaseValue $t.SecondaryValue $data}}</span></td>
   139                              <td class="text-end">{{formatInt $t.Transfers}}</td>
   140                          </tr>
   141                          {{end}}
   142                          {{end}}
   143                      </tbody>
   144                  </table>
   145              </div>
   146          </div>
   147      </div>
   148  </div>
   149  {{end}}
   150  {{if tokenCount $addr.Tokens .NonFungibleTokenName}}
   151  <div class="accordion mt-2 mb-2" id="erc721">
   152      <div class="accordion-item">
   153          <div class="accordion-header" id="erc721Heading">
   154              <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#erc721Body" aria-expanded="false" aria-controls="erc721Body">
   155                  <div class="row g-0 w-100">
   156                      <h5 class="col-12 mb-md-0">{{.NonFungibleTokenName}} Tokens <span class="badge bg-secondary">{{tokenCount $addr.Tokens .NonFungibleTokenName}}</span></h5>
   157                  </div>
   158              </button>
   159          </div>
   160          <div id="erc721Body" class="accordion-collapse collapse" aria-labelledby="erc721Heading" data-bs-parent="#erc721">
   161              <div class="accordion-body">
   162                  <table class="table data-table mt-0 mb-0">
   163                      <tbody>
   164                          <tr>
   165                              <th style="width: 25%;">Contract</th>
   166                              <th style="width: 65%;">Tokens</th>
   167                              <th class="text-end" style="width: 10%;"><span class="d-none d-md-block">Transfers</span><span class="d-block d-md-none">#</span></th>
   168                          </tr>
   169                          {{range $t := $addr.Tokens}}
   170                          {{if eq $t.Type $.NonFungibleTokenName}}
   171                          <tr>
   172                              <td class="ellipsis"><a href="/address/{{$t.Contract}}">{{if $t.Name}}<span class="copyable" cc="{{$t.Contract}}" alias-type="Contract">{{$t.Name}}</span>{{else}}<span class="copyable">{{$t.Contract}}</span>{{end}}</a></td>
   173                              <td>
   174                               {{if eq $.ChainType 2}}
   175                                  {{range $i, $iv := $t.Ids}}{{if $i}}, {{end}}{{formatAmountWithDecimals $iv 0}}{{end}}
   176                               {{else}}
   177                                  {{range $i, $iv := $t.Ids}}{{if $i}}, {{end}}<a href="/nft/{{$t.Contract}}/{{formatAmountWithDecimals $iv 0}}">{{formatAmountWithDecimals $iv 0}}</a>{{end}}
   178                               {{end}}
   179                              </td>
   180                              <td class="text-end">{{$t.Transfers}}</td>
   181                          </tr>
   182                          {{end}}
   183                          {{end}}
   184                      </tbody>
   185                  </table>
   186              </div>
   187          </div>
   188      </div>
   189  </div>
   190  {{end}}
   191  {{if tokenCount $addr.Tokens .MultiTokenName}}
   192  <div class="accordion mt-2 mb-2" id="erc1155">
   193      <div class="accordion-item">
   194          <div class="accordion-header" id="erc1155Heading">
   195              <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#erc1155Body" aria-expanded="false" aria-controls="erc1155Body">
   196                  <div class="row g-0 w-100">
   197                      <h5 class="col-12 mb-md-0">{{.MultiTokenName}} Tokens <span class="badge bg-secondary">{{tokenCount $addr.Tokens .MultiTokenName}}</span></h5>
   198                  </div>
   199              </button>
   200          </div>
   201          <div id="erc1155Body" class="accordion-collapse collapse" aria-labelledby="erc1155Heading" data-bs-parent="#erc1155">
   202              <div class="accordion-body">
   203                  <table class="table data-table mt-0 mb-0">
   204                      <tbody>
   205                          <tr>
   206                              <th style="width: 25%;">Contract</th>
   207                              <th style="width: 65%;">Tokens</th>
   208                              <th class="text-end" style="width: 10%;"><span class="d-none d-md-block">Transfers</span><span class="d-block d-md-none">#</span></th>
   209                          </tr>
   210                          {{range $t := $addr.Tokens}}
   211                          {{if eq $t.Type $.MultiTokenName}}
   212                          <tr>
   213                              <td class="ellipsis"><a href="/address/{{$t.Contract}}">{{if $t.Name}}<span class="copyable" cc="{{$t.Contract}}" alias-type="Contract">{{$t.Name}}</span>{{else}}<span class="copyable">{{$t.Contract}}</span>{{end}}</a></td>
   214                              <td>
   215                                  {{range $i, $iv := $t.MultiTokenValues}}{{if $i}}, {{end}}{{formattedAmountSpan $iv.Value 0 $t.Symbol $data ""}} of ID <a href="/nft/{{$t.Contract}}/{{$iv.Id}}">{{$iv.Id}}</a>{{end}}
   216                              </td>
   217                              <td class="text-end">{{formatInt $t.Transfers}}</td>
   218                          </tr>
   219                          {{end}}
   220                          {{end}}
   221                      </tbody>
   222                  </table>
   223              </div>
   224          </div>
   225      </div>
   226  </div>
   227  {{end}}
   228  {{end}}
   229  {{if or $addr.Transactions $addr.Filter}}
   230  <div class="row pt-3 pb-1">
   231      <h3 class="col-sm-6 col-lg-3 m-0 align-self-center">Transactions</h3>
   232      <div class="col-sm-6 col-lg-3 my-2 my-lg-0 align-self-center">
   233          <select  class="w-100" onchange="self.location='?filter='+options[selectedIndex].value">
   234              <option>All</option>
   235              <option {{if eq $addr.Filter "inputs"}}selected{{end}} value="inputs">Address on input side</option>
   236              <option {{if eq $addr.Filter "outputs"}}selected{{end}} value="outputs">Address on output side</option>
   237              {{if $addr.Tokens}}
   238              <option {{if eq $addr.Filter "0"}}selected{{end}} value="0">Non-contract</option>
   239              <option {{if eq $addr.Filter "1"}}selected{{end}} value="1">Internal</option>
   240              {{range $t := $addr.Tokens}}
   241              {{if eq $t.Type $.FungibleTokenName}}
   242              <option {{if eq $addr.Filter $t.ContractIndex}}selected{{end}} value="{{$t.ContractIndex}}">{{if $t.Name}}{{$t.Name}}{{else}}{{$t.Contract}}{{end}} ({{$.FungibleTokenName}})</option>
   243              {{end}}
   244              {{end}}
   245              {{range $t := $addr.Tokens}}
   246              {{if eq $t.Type $.NonFungibleTokenName}}
   247              <option {{if eq $addr.Filter $t.ContractIndex}}selected{{end}} value="{{$t.ContractIndex}}">{{if $t.Name}}{{$t.Name}}{{else}}{{$t.Contract}}{{end}} ({{$.NonFungibleTokenName}})</option>
   248              {{end}}
   249              {{end}}
   250              {{range $t := $addr.Tokens}}
   251              {{if eq $t.Type $.MultiTokenName}}
   252              <option {{if eq $addr.Filter $t.ContractIndex}}selected{{end}} value="{{$t.ContractIndex}}">{{if $t.Name}}{{$t.Name}}{{else}}{{$t.Contract}}{{end}} ({{$.MultiTokenName}})</option>
   253              {{end}}
   254              {{end}}
   255              {{end}}
   256          </select>
   257      </div>
   258      <div class="col-lg-6">
   259          {{template "paging" $data}}
   260      </div>
   261  </div>
   262  <div>
   263      {{range $tx := $addr.Transactions}}{{$data := setTxToTemplateData $data $tx}}{{template "txdetail" $data}}{{end}}
   264  </div>
   265  {{template "paging" $data }}
   266  {{end}}{{end}}