uchaindb/UClient

View on GitHub
src/ClientApp/app/components/database/chain.page.html

Summary

Maintainability
Test Coverage
<ng-container *ngIf="!error && !loading && !block && !tx">
    <database-nav [dbid]="db.id" [dbname]="db.name" current="{{ 'db.chain.general.noInfo.NavTitle' | translate }}"></database-nav>
    <div class="alert alert-warning">
        {{ 'db.chain.general.noInfo.WarningText' | translate }}
        <button class="btn btn-primary btn-sm" (click)="back()">{{ 'db.chain.general.noInfo.BackButtonText' | translate }}</button>
    </div>
</ng-container>
<ng-container *ngIf="loading && !block && !tx">
    <database-nav [dbid]="db.id" [dbname]="db.name" current="{{ 'db.chain.general.loading.NavTitle' | translate }}"></database-nav>
    <div class="alert alert-info">
        {{ 'db.chain.general.loading.InfoText' | translate }}
        <button class="btn btn-primary btn-sm" (click)="back()">{{ 'db.chain.general.loading.BackButtonText' | translate }}</button>
    </div>
</ng-container>
<ng-container *ngIf="error">
    <database-nav [dbid]="db.id" [dbname]="db.name" current="{{ 'db.chain.general.error.NavTitle' | translate }}"></database-nav>
    <div class="alert alert-danger">
        {{ 'db.chain.general.error.WarningText' | translate }}
        <button class="btn btn-success btn-sm" (click)="loadData()">{{ 'db.chain.general.error.LoadButtonText' | translate }}</button>
        <button class="btn btn-primary btn-sm" (click)="back()">{{ 'db.chain.general.error.BackButtonText' | translate }}</button>
    </div>
</ng-container>
<ng-container *ngIf="block">
    <database-nav [dbid]="db.id" [dbname]="db.name" current="{{ 'db.nav.ChainBlock' | translate: {hash: (block.Hash | hashbeauty)} }}"></database-nav>
    <div class="panel panel-info">
        <div class="panel-heading">
            <h3 class="panel-title">{{ 'db.chain.block.SummaryTitle' | translate }}</h3>
        </div>
        <table class="table">
            <tbody>
                <tr>
                    <td><strong>{{ 'db.chain.block.Hash' | translate }}</strong></td>
                    <td><a [routerLink]="['/database', db.id, 'chain', block.Hash]">{{block.Hash | hashbeauty}}</a></td>
                </tr>
                <tr>
                    <td><strong>{{ 'db.chain.block.PrevHash' | translate }}</strong></td>
                    <td>
                        <span class="text-muted" *ngIf="!block.PreviousBlockHash">{{ 'db.chain.block.GenesisBlockEmptyField' | translate }}</span>
                        <a *ngIf="block.PreviousBlockHash" [routerLink]="['/database', db.id, 'chain', block.PreviousBlockHash]">{{block.PreviousBlockHash | hashbeauty}}</a>
                    </td>
                </tr>
                <tr>
                    <td><strong>{{ 'db.chain.block.StateRoot' | translate }}</strong></td>
                    <td>{{block.StateRoot | hashbeauty}}</td>
                </tr>
                <tr>
                    <td><strong>{{ 'db.chain.block.TxRoot' | translate }}</strong></td>
                    <td>{{block.TxRoot | hashbeauty}}</td>
                </tr>
                <tr>
                    <td><strong>{{ 'db.chain.block.Time' | translate }}</strong></td>
                    <td>{{block.Time | date: "yyyy-MM-dd HH:mm:ss"}}</td>
                </tr>
                <tr>
                    <td><strong>{{ 'db.chain.block.BookKeeper' | translate }}</strong></td>
                    <td>{{block.BookKeeper | hashbeauty}}</td>
                </tr>
                <tr>
                    <td><strong>{{ 'db.chain.block.Height' | translate }}</strong></td>
                    <td>
                        <a class="btn btn-primary btn-xs" [routerLink]="['/database', db.id, 'chain', block.Height - 1]">{{ 'db.chain.block.Previous' | translate }}</a>
                        <a [routerLink]="['/database', db.id, 'chain', block.Height]">{{block.Height}}</a>
                        <a class="btn btn-primary btn-xs" [routerLink]="['/database', db.id, 'chain', block.Height + 1]">{{ 'db.chain.block.Next' | translate }}</a>
                    </td>
                </tr>
            </tbody>
        </table>
        <div class="panel-heading">
            <h3 class="panel-title">{{ 'db.chain.block.TxsTitle' | translate }}</h3>
        </div>
        <table class="table">
            <tbody>
                <tr *ngFor="let tran of block.Txs">
                    <td><a [routerLink]="['/database', db.id, 'chain', tran.Hash]">{{tran.Hash | hashbeauty}}</a></td>
                    <td>
                        <ng-container [ngSwitch]="tran.Type">
                            <ng-template [ngSwitchCase]="'DataTx'">
                                {{ 'db.def.DataTxName' | translate }}
                                {{ 'db.chain.block.ActionTxSuffix' | translate: {length: tran.Actions?.length} }}
                            </ng-template>
                            <ng-template [ngSwitchCase]="'SchemaTx'">
                                {{ 'db.def.SchemaTxName' | translate }}
                                {{ 'db.chain.block.ActionTxSuffix' | translate: {length: tran.Actions?.length} }}
                            </ng-template>
                            <ng-template [ngSwitchCase]="'LockTx'">
                                {{ 'db.def.LockTxName' | translate }}
                                {{ 'db.chain.block.TargetTxSuffix' | translate: {length: tran.LockTargets?.length} }}
                            </ng-template>
                        </ng-container>
                    </td>
                </tr>
            </tbody>
        </table>
        <div class="panel-heading">
            <h3 class="panel-title">{{ 'db.chain.block.DetailTitle' | translate }}</h3>
        </div>
        <div class="panel-body">
            <database-action [dbid]="db.id" [txs]="block.Txs"></database-action>
        </div>
    </div>
</ng-container>

<ng-container *ngIf="tx">
    <database-nav [dbid]="db.id" [dbname]="db.name" current="{{ 'db.nav.ChainTx' | translate: {hash: (tx.Hash | hashbeauty)} }}"></database-nav>
    <div class="panel panel-info">
        <div class="panel-heading">
            <h3 class="panel-title">{{ 'db.chain.tx.SummaryTitle' | translate }}</h3>
        </div>
        <table class="table">
            <tbody>
                <tr>
                    <td><strong>{{ 'db.chain.tx.Hash' | translate }}</strong></td>
                    <td><a [routerLink]="['/database', db.id, 'chain', tx.Hash]">{{tx.Hash | hashbeauty}}</a></td>
                </tr>
                <!--<tr>
                    <td><strong>{{ 'db.chain.tx.Time' | translate }}</strong></td>
                    <td>(TBD)</td>
                </tr>-->
                <tr>
                    <td><strong>{{ 'db.chain.tx.Type' | translate }}</strong></td>
                    <td>
                        <ng-container [ngSwitch]="tx.Type">
                            <ng-template [ngSwitchCase]="'DataTx'">
                                {{ 'db.def.DataTxName' | translate }}
                            </ng-template>
                            <ng-template [ngSwitchCase]="'SchemaTx'">
                                {{ 'db.def.SchemaTxName' | translate }}
                            </ng-template>
                            <ng-template [ngSwitchCase]="'LockTx'">
                                {{ 'db.def.LockTxName' | translate }}
                            </ng-template>
                        </ng-container>
                    </td>
                </tr>
                <tr>
                    <td><strong>{{ 'db.chain.tx.Block' | translate }}</strong></td>
                    <td>
                        <a *ngIf="tx.Block"
                           [routerLink]="['/database', db.id, 'chain', tx.Block]">
                            {{tx.Block | hashbeauty}}
                        </a>
                    </td>
                </tr>
                <tr>
                    <td><strong>{{ 'db.chain.tx.WitnessBlock' | translate }}</strong></td>
                    <td>
                        <a *ngIf="tx.WitnessBlock"
                           [routerLink]="['/database', db.id, 'chain', tx.WitnessBlock]">
                            {{tx.WitnessBlock | hashbeauty}}
                        </a>
                    </td>
                </tr>
                <tr>
                    <td><strong>{{ 'db.chain.tx.Initiator' | translate }}</strong></td>
                    <td><span title="{{tx.Initiator}}">{{tx.Initiator | hashbeauty}}</span></td>
                </tr>
            </tbody>
        </table>
        <div class="panel-heading">
            <h3 class="panel-title">{{ 'db.chain.tx.ActionsTitle' | translate }}</h3>
        </div>
        <div class="panel-body">
            <database-action [dbid]="db.id" [txs]="[tx]"></database-action>
        </div>
    </div>
</ng-container>