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