Revert "Feature/spanish example support"

This commit is contained in:
Matias Alejo Garcia 2014-10-22 07:52:14 -03:00
parent 56c0660c87
commit cc4fa8573b
28 changed files with 169 additions and 723 deletions

View File

@ -26,11 +26,11 @@ module.exports = function(grunt) {
}
},
vendors: {
src: ['public/src/js/ios-imagefile-megapixel/megapix-image.js', 'public/lib/qrcode-generator/js/qrcode.js', 'public/src/js/jsqrcode/grid.js', 'public/src/js/jsqrcode/version.js', 'public/src/js/jsqrcode/detector.js', 'public/src/js/jsqrcode/formatinf.js', 'public/src/js/jsqrcode/errorlevel.js', 'public/src/js/jsqrcode/bitmat.js', 'public/src/js/jsqrcode/datablock.js', 'public/src/js/jsqrcode/bmparser.js', 'public/src/js/jsqrcode/datamask.js', 'public/src/js/jsqrcode/rsdecoder.js', 'public/src/js/jsqrcode/gf256poly.js', 'public/src/js/jsqrcode/gf256.js', 'public/src/js/jsqrcode/decoder.js', 'public/src/js/jsqrcode/qrcode.js', 'public/src/js/jsqrcode/findpat.js', 'public/src/js/jsqrcode/alignpat.js', 'public/src/js/jsqrcode/databr.js', 'public/lib/momentjs/min/moment.min.js', 'public/lib/moment/lang/es.js', 'public/lib/zeroclipboard/ZeroClipboard.min.js'],
src: ['public/src/js/ios-imagefile-megapixel/megapix-image.js', 'public/lib/qrcode-generator/js/qrcode.js', 'public/src/js/jsqrcode/grid.js', 'public/src/js/jsqrcode/version.js', 'public/src/js/jsqrcode/detector.js', 'public/src/js/jsqrcode/formatinf.js', 'public/src/js/jsqrcode/errorlevel.js', 'public/src/js/jsqrcode/bitmat.js', 'public/src/js/jsqrcode/datablock.js', 'public/src/js/jsqrcode/bmparser.js', 'public/src/js/jsqrcode/datamask.js', 'public/src/js/jsqrcode/rsdecoder.js', 'public/src/js/jsqrcode/gf256poly.js', 'public/src/js/jsqrcode/gf256.js', 'public/src/js/jsqrcode/decoder.js', 'public/src/js/jsqrcode/qrcode.js', 'public/src/js/jsqrcode/findpat.js', 'public/src/js/jsqrcode/alignpat.js', 'public/src/js/jsqrcode/databr.js', 'public/lib/momentjs/min/moment.min.js', 'public/lib/zeroclipboard/ZeroClipboard.min.js'],
dest: 'public/js/vendors.js'
},
angular: {
src: ['public/lib/angular/angular.min.js', 'public/lib/angular-resource/angular-resource.min.js', 'public/lib/angular-route/angular-route.min.js', 'public/lib/angular-qrcode/qrcode.js', 'public/lib/angular-animate/angular-animate.min.js', 'public/lib/angular-bootstrap/ui-bootstrap.js', 'public/lib/angular-bootstrap/ui-bootstrap-tpls.js', 'public/lib/angular-ui-utils/ui-utils.min.js', 'public/lib/ngprogress/build/ngProgress.min.js', 'public/lib/angular-gettext/dist/angular-gettext.min.js', 'public/lib/angular-moment/angular-moment.min.js'],
src: ['public/lib/angular/angular.min.js', 'public/lib/angular-resource/angular-resource.min.js', 'public/lib/angular-route/angular-route.min.js', 'public/lib/angular-qrcode/qrcode.js', 'public/lib/angular-animate/angular-animate.min.js', 'public/lib/angular-bootstrap/ui-bootstrap.js', 'public/lib/angular-bootstrap/ui-bootstrap-tpls.js', 'public/lib/angular-ui-utils/ui-utils.min.js', 'public/lib/ngprogress/build/ngProgress.min.js', 'public/lib/angular-gettext/dist/angular-gettext.min.js'],
dest: 'public/js/angularjs-all.js'
},
main: {
@ -119,11 +119,8 @@ module.exports = function(grunt) {
//Default task(s).
grunt.registerTask('default', ['watch']);
//Update .pot file
grunt.registerTask('translate', ['nggettext_extract']);
//Compile task (concat + minify)
grunt.registerTask('compile', ['nggettext_compile', 'concat', 'uglify', 'cssmin']);
grunt.registerTask('compile', ['nggettext_extract', 'nggettext_compile', 'concat', 'uglify', 'cssmin']);
};

View File

@ -13,7 +13,6 @@
"zeroclipboard": "~1.3.2",
"ngprogress": "~1.0.4",
"angular-ui-utils": "~0.1.1",
"angular-gettext": "~1.1.0",
"angular-moment": "~0.8.0"
"angular-gettext": "~1.1.0"
}
}

470
po/es.po
View File

@ -1,470 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: Insight\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.6.8\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: public/views/transaction/tx.html
msgid "(Input unconfirmed)"
msgstr "(Entrada sin confirmar)"
#: public/views/404.html
msgid "404 Page not found :("
msgstr "404 Página no encontrada :("
#: public/views/index.html
msgid ""
"<strong>insight</strong> is an <a href=\"http://live.insight.is/\" target="
"\"_blank\">open-source Bitcoin blockchain explorer</a> with complete REST "
"and websocket APIs that can be used for writing web wallets and other apps "
"that need more advanced blockchain queries than provided by bitcoind RPC. "
"Check out the <a href=\"http://github.com/bitpay/insight\" target=\"_blank"
"\">source code</a>."
msgstr ""
"<strong>insight</strong> es un <a href=\"http://live.insight.is/\" target="
"\"_blank\">explorador de bloques de Bitcoin open-source</a> con un completo "
"conjunto de REST y APIs de websockets que pueden ser usadas para escribir "
"monederos de Bitcoins y otras aplicaciones que requieran consultar un "
"explorador de bloques. Obtén el código en <a href=\"http://github.com/"
"bitpay/insight\" target=\"_blank\">el repositorio abierto de Github</a>."
#: public/views/index.html
msgid ""
"<strong>insight</strong> is still in development, so be sure to report any "
"bugs and provide feedback for improvement at our <a href=\"https://github."
"com/bitpay/insight/issues\" target=\"_blank\">github issue tracker</a>."
msgstr ""
"<strong>insight</strong> esta en desarrollo aún, por ello agradecemos que "
"nos reporten errores o sugerencias para mejorar el software. <a href="
"\"https://github.com/bitpay/insight/issues\" target=\"_blank\">Github issue "
"tracker</a>."
#: public/views/index.html
msgid "About"
msgstr "Acerca de"
#: public/views/address.html
msgid "Address"
msgstr "Dirección"
#: public/views/index.html
msgid "Age"
msgstr "Edad"
#: public/views/status.html
msgid "Application Status"
msgstr "Estado de la Aplicación"
#: public/views/status.html
msgid "Best Block"
msgstr "Mejor Bloque"
#: public/views/status.html
msgid "Bitcoin node information"
msgstr "Información del nodo Bitcoin"
#: public/views/block.html
msgid "Block"
msgstr "Bloque"
#: public/views/block.html
msgid "Block Reward"
msgstr "Bloque Recompensa"
#: public/views/block_list.html public/views/dummy-translations.html
#: public/views/status.html
msgid "Blocks"
msgstr "Bloques"
#: public/views/status.html
msgid "Bytes Serialized"
msgstr "Bytes Serializados"
#: public/views/includes/connection.html
msgid ""
"Can't connect to bitcoind to get live updates from the p2p network. (Tried "
"connecting to bitcoind at {{host}}:{{port}} and failed.)"
msgstr ""
"No se pudo conectar a bitcoind para obtener actualizaciones en vivo de la "
"red p2p. (Se intentó conectar a bitcoind de {{host}}:{{port}} y falló.)"
#: public/views/includes/connection.html
msgid "Can't connect to insight server. Attempting to reconnect..."
msgstr "No se pudo conectar al servidor insight. Intentando re-conectar..."
#: public/views/includes/connection.html
msgid "Can't connect to internet. Please, check your connection."
msgstr "No se pudo conectar a Internet. Por favor, verifique su conexión."
#: public/views/status.html
msgid "Complete"
msgstr "Completado"
#: public/views/transaction.html public/views/transaction/tx.html
msgid "Confirmations"
msgstr "Confirmaciones"
#: public/views/includes/header.html
msgid "Conn"
msgstr "Con"
#: public/views/status.html
msgid "Connections to other nodes"
msgstr "Conexiones a otros nodos"
#: public/views/status.html
msgid "Current Blockchain Tip (insight)"
msgstr "Actual Blockchain Tip (insight)"
#: public/views/status.html
msgid "Current Sync Status"
msgstr "Actual Estado de Sincronización"
#: public/views/transaction.html
msgid "Details"
msgstr "Detalles"
#: public/views/block.html
msgid "Difficulty"
msgstr "Dificultad"
#: public/views/transaction/tx.html
msgid "Double spent attempt detected. From tx:"
msgstr "Intento de doble gasto detectado. De la transacción:"
#: public/views/includes/connection.html
msgid "Error!"
msgstr "¡Error!"
#: public/views/transaction/tx.html
msgid "Fee"
msgstr "Tasa"
#: public/views/address.html
msgid "Final Balance"
msgstr "Balance Final"
#: public/views/status.html
msgid "Finish Date"
msgstr "Fecha Final"
#: public/views/404.html
msgid "Go to home"
msgstr "Volver al Inicio"
#: public/views/status.html
msgid "Hash Serialized"
msgstr "Hash Serializado"
#: public/views/block.html public/views/block_list.html
#: public/views/index.html public/views/status.html
#: public/views/includes/header.html
msgid "Height"
msgstr "Altura"
#: public/views/transaction.html public/views/transaction/tx.html
msgid "Included in Block"
msgstr "Incluido en el Bloque"
#: public/views/transaction/tx.html
msgid "Incoherence in levelDB detected:"
msgstr "Detectada una incoherencia en levelDB:"
#: public/views/status.html
msgid "Info Errors"
msgstr "Errores de Información"
#: public/views/status.html
msgid "Initial Block Chain Height"
msgstr "Altura de la Cadena en Bloque Inicial"
#: public/views/transaction.html
msgid "Input"
msgstr "Entrada"
#: public/views/status.html
msgid "Last Block"
msgstr "Último Bloque"
#: public/views/status.html
msgid "Last Block Hash (Bitcoind)"
msgstr "Último Bloque Hash (Bitcoind)"
#: public/views/index.html
msgid "Latest Blocks"
msgstr "Últimos Bloques"
#: public/views/index.html
msgid "Latest Transactions"
msgstr "Últimas Transacciones"
#: public/views/address.html
msgid "Loading Address Information"
msgstr "Cargando Información de la Dirección"
#: public/views/block.html
msgid "Loading Block Information"
msgstr "Cargando Información del Bloque"
#: public/views/block_list.html
msgid "Loading Selected Date..."
msgstr "Cargando Fecha Seleccionada..."
#: public/views/transaction.html
msgid "Loading Transaction Details"
msgstr "Cargando Detalles de la Transacción"
#: public/views/transaction/list.html
msgid "Loading Transactions..."
msgstr "Cargando Transacciones..."
#: public/views/includes/infoStatus.html
msgid "Loading..."
msgstr "Cargando..."
#: public/views/transaction.html
msgid "Mined Time"
msgstr "Hora de Minado"
#: public/views/block.html public/views/block_list.html
#: public/views/index.html
msgid "Mined by"
msgstr "Minado por"
#: public/views/status.html
msgid "Mining Difficulty"
msgstr "Dificultad de Minado"
#: public/views/block.html
msgid "Next Block"
msgstr "Próximo Bloque"
#: public/views/transaction/tx.html
msgid "No Inputs (Newly Generated Coins)"
msgstr "Sin Entradas (Monedas Recién Generadas)"
#: public/views/block_list.html
msgid "No blocks yet."
msgstr "No hay bloques aún."
#: public/views/includes/header.html public/views/includes/search.html
msgid "No matching records found!"
msgstr "¡No se encontraron registros coincidentes!"
#: public/views/address.html
msgid "No. Transactions"
msgstr "Nro. de Transacciones"
#: public/views/block.html
msgid "Number Of Transactions"
msgstr "Número de Transacciones"
#: public/views/transaction.html
msgid "Output"
msgstr "Salida"
#: public/views/index.html
msgid "Powered by"
msgstr "Funciona con"
#: public/views/block.html
msgid "Previous Block"
msgstr "Bloque Anterior"
#: public/views/status.html
msgid "Protocol version"
msgstr "Versión del protocolo"
#: public/views/status.html
msgid "Proxy setting"
msgstr "Opción de proxy"
#: public/views/transaction.html
msgid "Received Time"
msgstr "Hora de Recibido"
#: public/views/redirect.html
msgid "Redirecting..."
msgstr "Redireccionando..."
#: public/views/includes/header.html
msgid "Search for block, transaction or address"
msgstr "Buscar bloques, transacciones o direcciones"
#: public/views/index.html
msgid "See all blocks"
msgstr "Ver todos los bloques"
#: public/views/status.html
msgid "Show Transaction Output data"
msgstr "Mostrar dato de Salida de la Transacción"
#: public/views/transaction/tx.html
msgid "Show all"
msgstr "Mostrar todos"
#: public/views/transaction/tx.html
msgid "Show input"
msgstr "Mostrar entrada"
#: public/views/transaction/tx.html
msgid "Show less"
msgstr "Ver menos"
#: public/views/transaction/tx.html
msgid "Show more"
msgstr "Ver más"
#: public/views/block_list.html public/views/index.html
#: public/views/transaction.html
msgid "Size"
msgstr "Tamaño"
#: public/views/block.html
msgid "Size (bytes)"
msgstr "Tamaño (bytes)"
#: public/views/status.html
msgid "Skipped Blocks (previously synced)"
msgstr "Bloques Saltados (previamente sincronizado)"
#: public/views/status.html
msgid "Start Date"
msgstr "Fecha de Inicio"
#: public/views/dummy-translations.html
msgid "Status"
msgstr "Estado"
#: public/views/block.html public/views/transaction.html
msgid "Summary"
msgstr "Resumen"
#: public/views/address.html
msgid "Summary <small>confirmed</small>"
msgstr "Resumen <small>confirmados</small>"
#: public/views/status.html
msgid "Sync Progress"
msgstr "Proceso de Sincronización"
#: public/views/status.html
msgid "Sync Status"
msgstr "Estado de Sincronización"
#: public/views/status.html
msgid "Sync Type"
msgstr "Tipo de Sincronización"
#: public/views/status.html
msgid "Synced Blocks"
msgstr "Bloques Sincornizados"
#: public/views/status.html
msgid "Testnet"
msgstr "Red de prueba"
#: public/views/transaction/list.html
msgid "There are no transactions involving this address."
msgstr "No hay transacciones para esta dirección"
#: public/views/status.html
msgid "Time Offset"
msgstr "Desplazamiento de hora"
#: public/views/block.html
msgid "Timestamp"
msgstr "Fecha y hora"
#: public/views/block_list.html
msgid "Today"
msgstr "Hoy"
#: public/views/status.html
msgid "Total Amount"
msgstr "Cantidad Total"
#: public/views/address.html
msgid "Total Received"
msgstr "Total Recibido"
#: public/views/address.html
msgid "Total Sent"
msgstr "Total Enviado"
#: public/views/transaction.html
msgid "Transaction"
msgstr "Transacción"
#: public/views/status.html
msgid "Transaction Output Set Information"
msgstr "Información del Conjunto de Salida de la Transacción"
#: public/views/status.html
msgid "Transaction Outputs"
msgstr "Salidas de la Transacción"
#: public/views/address.html public/views/block.html
#: public/views/block_list.html public/views/index.html
#: public/views/status.html
msgid "Transactions"
msgstr "Transacciones"
#: public/views/transaction/tx.html
msgid "Type"
msgstr "Tipo"
#: public/views/address.html
msgid "Unconfirmed"
msgstr "Sin confirmar"
#: public/views/transaction.html public/views/transaction/tx.html
msgid "Unconfirmed Transaction!"
msgstr "¡Transacción sin confirmar!"
#: public/views/address.html
msgid "Unconfirmed Txs Balance"
msgstr "Balance sin confirmar"
#: public/views/index.html
msgid "Value Out"
msgstr "Valor de Salida"
#: public/views/block.html public/views/status.html
msgid "Version"
msgstr "Versión"
#: public/views/block_list.html public/views/index.html
msgid "Waiting for blocks..."
msgstr "Esperando bloques..."
#: public/views/index.html
msgid "Waiting for transactions..."
msgstr "Esperando transacciones..."
#: public/views/block_list.html
msgid "by date."
msgstr "por fecha."
#: public/views/transaction/tx.html
msgid "first seen at"
msgstr "Visto a"
#: public/views/transaction/tx.html
msgid "mined"
msgstr "minado"
#: public/views/block_list.html
msgid "mined on:"
msgstr "minado el:"
#~ msgid "Waiting for blocks"
#~ msgstr "Esperando bloques"

File diff suppressed because one or more lines are too long

View File

@ -44,16 +44,6 @@
</div>
<div id="footer" role="navigation">
<div class="container" data-ng-controller="FooterController">
<div class="languages m20t pull-left">
[
<a href="#"
ng-click="setLanguage(l.isoCode)"
ng-class="{'selected': defaultLanguage == l.isoCode}"
ng-repeat="l in availableLanguages">
<span ng-show="$last"> &middot; </span> {{l.name}}
</a>
]
</div>
<a class="insight m10v pull-right" target="_blank" href="http://insight.is">insight <small>API v{{version}}</small></a>
</div>
</div>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -89,7 +89,6 @@ h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
.m50v { margin: 50px 0; }
.m10b { margin-bottom: 10px; }
.m10l { margin-left: 10px; }
.m20t { margin-top: 20px; }
.vm { vertical-align: middle; }
.pa {position: absolute;}
.pr {position: relative;}
@ -410,25 +409,6 @@ margin-left: 0;
#footer a.insight small { font-size: 11px; }
.line-footer { border-top: 2px dashed #ccc; }
#footer .languages {
color: #ddd;
font-size: 10px;
}
#footer .languages a {
color: #ddd;
}
#footer .languages a.selected {
color: #eee;
font-weight: bold;
}
#footer .languages a:hover {
text-decoration: none;
color: #fffffe;
}
.line-bot {
border-bottom: 2px solid #EAEAEA;
padding: 0 0 10px 0;

View File

@ -1,7 +1,5 @@
'use strict';
var defaultLanguage = localStorage.getItem('insight-language') || 'en';
angular.module('insight',[
'ngAnimate',
'ngResource',
@ -11,7 +9,6 @@ angular.module('insight',[
'ui.route',
'monospaced.qrcode',
'gettext',
'angularMoment',
'insight.system',
'insight.socket',
'insight.blocks',

View File

@ -47,9 +47,8 @@ angular.module('insight')
$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');
})
.run(function($rootScope, $route, $location, $routeParams, $anchorScroll, ngProgress, gettextCatalog, amMoment) {
gettextCatalog.currentLanguage = defaultLanguage;
amMoment.changeLanguage(defaultLanguage);
.run(function($rootScope, $route, $location, $routeParams, $anchorScroll, ngProgress, gettextCatalog) {
gettextCatalog.currentLanguage = 'en';
$rootScope.$on('$routeChangeStart', function() {
ngProgress.start();
});

View File

@ -1,34 +1,15 @@
'use strict';
angular.module('insight.system').controller('FooterController',
function($scope, $route, $templateCache, gettextCatalog, amMoment, Version) {
$scope.defaultLanguage = defaultLanguage;
function($scope, Version) {
var _getVersion = function() {
Version.get({},
function(res) {
$scope.version = res.version;
});
function(res) {
$scope.version = res.version;
});
};
$scope.version = _getVersion();
$scope.availableLanguages = [{
name: 'English',
isoCode: 'en',
}, {
name: 'Spanish',
isoCode: 'es',
}];
$scope.setLanguage = function(isoCode) {
gettextCatalog.currentLanguage = $scope.defaultLanguage = defaultLanguage = isoCode;
amMoment.changeLanguage(isoCode);
localStorage.setItem('insight-language', isoCode);
var currentPageTemplate = $route.current.templateUrl;
$templateCache.remove(currentPageTemplate);
$route.reload();
};
});
});

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
<div data-ng-include src="'/views/includes/connection.html'"></div>
<div class="jumbotron">
<h1>Ooops!</h1>
<h2 translate class="text-muted">404 Page not found :(</h2>
<p><a translate href="/" class="pull-right">Go to home</a></p>
<h2 class="text-muted">404 Page not found :(</h2>
<p><a href="/" class="pull-right">Go to home</a></p>
</div>

View File

@ -3,11 +3,11 @@
<div class="secondary_navbar hidden-xs hidden-sm" scroll data-ng-class="{'hidden': !secondaryNavbar}" data-ng-show="address.addrStr" data-ng-init="hideSNavbar=0">
<div class="container" data-ng-if="!hideSNavbar">
<div class="col-md-8 text-left">
<h3 translate>Address</h3> {{address.addrStr}}
<h3>Address</h3> {{address.addrStr}}
<span class="btn-copy" clip-copy="address.addrStr"></span>
</div>
<div class="col-md-4">
<span class="txvalues txvalues-primary"><strong translate>Final Balance</strong> {{$root.currency.getConvertion(address.balance) || address.balance + ' BTC' }}</span>
<span class="txvalues txvalues-primary"><strong>Final Balance</strong> {{$root.currency.getConvertion(address.balance) || address.balance + ' BTC' }}</span>
</div>
</div>
<div class="hide_snavbar">
@ -17,35 +17,35 @@
</a>
</div>
</div>
<h1><span translate>Address</span> <small data-ng-show="address.addrStr">{{$root.currency.getConvertion(address.balance) || address.balance + ' BTC'}}</small></h1>
<h1>Address <small data-ng-show="address.addrStr">{{$root.currency.getConvertion(address.balance) || address.balance + ' BTC'}}</small></h1>
<div class="text-muted" data-ng-if="!address.addrStr">
<span translate>Loading Address Information</span> <span class="loader-gif"></span>
<span>Loading Address Information <span class="loader-gif"></span>
</div>
<div data-ng-if="address.addrStr">
<div class="well well-sm ellipsis">
<strong translate>Address</strong>
<strong>Address</strong>
<span class="text-muted">{{address.addrStr}}</span>
<span class="btn-copy" clip-copy="address.addrStr"></span>
</div>
<h2 translate>Summary <small>confirmed</small></h2>
<h2>Summary <small>confirmed</small></h2>
<div class="row" data-ng-hide="!address.addrStr">
<div class="col-md-10">
<table class="table">
<tbody>
<tr>
<td><strong translate>Total Received</strong></td>
<td><strong>Total Received</strong></td>
<td class="ellipsis text-right">{{$root.currency.getConvertion(address.totalReceived) || address.totalReceived + ' BTC'}}</td>
</tr>
<tr>
<td><strong translate>Total Sent</strong></td>
<td><strong>Total Sent</strong></td>
<td class="ellipsis text-right">{{$root.currency.getConvertion(address.totalSent) || address.totalSent + ' BTC'}}</td>
</tr>
<tr>
<td><strong translate>Final Balance</strong></td>
<td><strong>Final Balance</strong></td>
<td class="ellipsis text-right">{{$root.currency.getConvertion(address.balance) || address.balance + ' BTC'}}</td>
</tr>
<tr>
<td><strong translate>No. Transactions</strong></td>
<td><strong>No. Transactions</strong></td>
<td class="ellipsis text-right">{{address.txApperances}}</td>
</tr>
</tbody>
@ -56,15 +56,15 @@
</div>
</div>
<div data-ng-show="address.unconfirmedTxApperances">
<h3 translate>Unconfirmed</h3>
<h3>Unconfirmed</h3>
<table class="table">
<tbody>
<tr>
<td class="small" translate>Unconfirmed Txs Balance</td>
<td class="small">Unconfirmed Txs Balance</td>
<td class="address ellipsis text-right">{{$root.currency.getConvertion(address.unconfirmedBalance)}}</td>
</tr>
<tr>
<td class="small" translate>No. Transactions</td>
<td class="small">No. Transactions</td>
<td class="address ellipsis text-right">{{address.unconfirmedTxApperances}}</td>
</tr>
@ -73,7 +73,7 @@
</div>
</div>
<div data-ng-if="address.addrStr" data-ng-controller="transactionsController" data-ng-init="load('address')">
<h2 translate>Transactions</h2>
<h2>Transactions</h2>
<div data-ng-include src="'/views/transaction/list.html'" when-scrolled="loadMore()"></div>
</div>
</section>

View File

@ -9,7 +9,7 @@
<div class="col-md-10">
<div class="row">
<div class="col-md-5">
<h3 class="text-left"><span translate>Block</span> #{{block.height}}</h3>
<h3 class="text-left">Block #{{block.height}}</h3>
</div>
<p class="col-md-6 ellipsis text-left">
<strong>Hash</strong> {{block.hash}}
@ -33,7 +33,7 @@
</div>
<h1>Block #{{block.height}}</h1>
<div class="text-muted" data-ng-if="!block.hash">
<span translate>Loading Block Information</span> <span class="loader-gif"></span>
<span>Loading Block Information <span class="loader-gif"></span>
</div>
<div data-ng-if="block.hash">
<div class="well well-sm ellipsis">
@ -41,32 +41,32 @@
<span class="txid text-muted">{{block.hash}}</span>
<span class="btn-copy" clip-copy="block.hash"></span>
</div>
<h2 translate>Summary</h2>
<h2>Summary</h2>
<div class="row">
<div class="col-md-6">
<table class="table" style="table-layout: fixed">
<tbody>
<tr>
<td><strong translate>Number Of Transactions</strong></td>
<td><strong>Number Of Transactions</strong></td>
<td class="text-right text-muted">{{block.tx.length}}</td>
</tr>
<tr>
<td><strong translate>Height</strong></td>
<td><strong>Height</strong></td>
<td class="text-right text-muted">{{block.height}}
<span data-ng-show="block.isMainChain" class="text-success">(Mainchain)</span>
<span data-ng-show="!block.isMainChain" class="text-danger"> <span class="glyphicon glyphicon-warning-sign"></span> (Orphaned)</span>
</td>
</tr>
<tr>
<td><strong translate>Block Reward</strong></td>
<td><strong>Block Reward</strong></td>
<td class="text-right text-muted">{{$root.currency.getConvertion(block.reward) || block.reward + ' BTC'}}</td>
</tr>
<tr>
<td><strong translate>Timestamp</strong></td>
<td><strong>Timestamp</strong></td>
<td class="text-right text-muted">{{block.time * 1000 | date:'medium'}}</td>
</tr>
<tr data-ng-show="block.poolInfo">
<td><strong translate>Mined by</strong></td>
<td><strong>Mined by</strong></td>
<td class="text-right text-muted">
<a href="{{block.poolInfo.url}}" target="_blank" title="{{block.poolInfo.poolName}}">{{block.poolInfo.poolName}}</a>
</td>
@ -81,7 +81,7 @@
</td>
</tr>
<tr data-ng-show="block.previousblockhash">
<td><strong translate>Previous Block</strong></td>
<td><strong>Previous Block</strong></td>
<td class="text-right"><a href="/block/{{block.previousblockhash}}">{{block.height-1}}</a></td>
</tr>
</tbody>
@ -91,27 +91,27 @@
<table class="table">
<tbody>
<tr>
<td> <strong translate>Difficulty</strong></td>
<td> <strong> Difficulty </strong></td>
<td class="text-right text-muted">{{block.difficulty}}</td>
</tr>
<tr>
<td> <strong>Bits</strong></td>
<td> <strong> Bits </strong></td>
<td class="text-right text-muted">{{block.bits}}</td>
</tr>
<tr>
<td> <strong translate>Size (bytes)</strong></td>
<td> <strong> Size (bytes) </strong></td>
<td class="text-right text-muted">{{block.size}}</td>
</tr>
<tr>
<td> <strong translate>Version</strong></td>
<td> <strong> Version </strong></td>
<td class="text-right text-muted">{{block.version}}</td>
</tr>
<tr>
<td> <strong>Nonce</strong></td>
<td> <strong> Nonce </strong></td>
<td class="text-right text-muted">{{block.nonce}}</td>
</tr>
<tr data-ng-show="block.nextblockhash">
<td><strong translate>Next Block</strong></td>
<td><strong>Next Block</strong></td>
<td class="text-right"><a href="/block/{{block.nextblockhash}}">{{block.height+1}}</a></td>
</tr>
</tbody>
@ -120,7 +120,7 @@
</div>
</div>
<div data-ng-if="block.hash" data-ng-controller="transactionsController" data-ng-init="load('block')">
<h3 translate>Transactions</h3>
<h3>Transactions</h3>
<div data-ng-include src="'/views/transaction/list.html'" when-scrolled="loadMore()"></div>
</div>

View File

@ -5,8 +5,7 @@
<div class="block-id">
<div class="icon-block text-center">
<span class="glyphicon glyphicon-list"></span>
<h3><span translate>Blocks</span> <br>
<span translate>mined on:</span></h3>
<h3>Blocks <br> mined on:</h3>
</div>
</div>
<p class="lead text-center m20v">
@ -14,11 +13,11 @@
<a href="#" class="btn btn-primary btn-xs" datepicker-popup show-button-bar="false" data-ng-click="openCalendar($event)" data-ng-model="dt" is-open="opened" data-ng-required="true"><span class="glyphicon glyphicon-calendar"></span></a>
</p>
<div class="m20v text-center text-muted" data-ng-if="!pagination.current">
<span translate>Loading Selected Date...</span>
<span>Loading Selected Date...</span>
</div>
<div data-ng-if="pagination.current">
<p class="lead text-center m20v" data-ng-show="loading">&nbsp;</p>
<p class="text-center m20v" data-ng-show="pagination.isToday && !loading" translate>Today</p>
<p class="text-center m20v" data-ng-show="pagination.isToday && !loading">Today</p>
<p class="text-center m20v" data-ng-show="!pagination.isToday && !loading">{{humanSince(pagination.currentTs)}}
<p class="text-center m20v" data-ng-show="loading">&nbsp;</p>
<div class="m50v text-center">
@ -30,23 +29,23 @@
<div class="col-xs-12 col-md-9 col-md-offset-3">
<div class="page-header">
<h1>
<span translate>Blocks</span>
<small><span translate>by date.</span> {{detail}} {{before}}</small>
Blocks
<small>by date. {{detail}} {{before}}</small>
</h1>
</div>
<table class="table table-hover table-striped">
<thead>
<tr>
<th translate>Height</th>
<th translate>Timestamp</th>
<th class="text-right" translate>Transactions</th>
<th class="text-right hidden-xs" translate>Mined by</th>
<th class="text-right" translate>Size</th>
<th>Height</th>
<th>Timestamp</th>
<th class="text-right">Transactions</th>
<th class="text-right hidden-xs">Mined by</th>
<th class="text-right">Size</th>
</tr>
</thead>
<tbody>
<tr data-ng-show="loading">
<td colspan="5"><span translate>Waiting for blocks...</span> <span class="loader-gif"></span></td>
<td colspan="5">Waiting for blocks <span class="loader-gif"></span></td>
</tr>
<tr class="fader" data-ng-repeat='b in blocks'>
<td><a href="/block/{{b.hash}}">{{b.height}}</a></td>
@ -63,7 +62,6 @@
</div>
</div>
</div>
<h2 class="text-center text-muted" data-ng-show="!blocks.length && !loading"
translate>No blocks yet.</h2>
<h2 class="text-center text-muted" data-ng-show="!blocks.length && !loading">No blocks yet.</h2>
</section>

View File

@ -1,2 +0,0 @@
{{'Blocks'|translate}}
{{'Status'|translate}}

View File

@ -4,17 +4,18 @@
data-ng-show="!serverOnline || !clienteOnline || !apiOnline"
data-ng-init="getConnStatus()">
<strong translate>Error!</strong>
<strong>Error!</strong>
<p data-ng-show="!apiOnline" translate>
Can't connect to bitcoind to get live updates from the p2p network. (Tried connecting to bitcoind at {{host}}:{{port}} and failed.)
<p data-ng-show="!apiOnline">
Can't connect to bitcoind to get live updates from the p2p network.
(Tried connecting to bitcoind at {{host}}:{{port}} and failed.)
</p>
<p data-ng-show="!serverOnline" translate>
<p data-ng-show="!serverOnline">
Can't connect to insight server. Attempting to reconnect...
</p>
<p data-ng-show="!clienteOnline" translate>
<p data-ng-show="!clienteOnline">
Can't connect to internet. Please, check your connection.
</p>

View File

@ -12,16 +12,14 @@
<div class="navbar-collapse collapse" collapse="$root.isCollapsed">
<ul class="nav navbar-nav">
<li data-ng-repeat="item in menu" ui-route="/{{item.link}}" data-ng-class="{active: $uiRoute}">
<a href="/{{item.link}}">{{item.title|translate}}</a>
<a href="/{{item.link}}">{{item.title}}</a>
</li>
</ul>
<form id="search-form" data-ng-controller="SearchController" class="navbar-form navbar-left hidden-xs" role="search" data-ng-submit="search()">
<div class="form-group" data-ng-class="{'has-error': badQuery}">
<input id="search" type="text" class="form-control"
data-ng-model="q" data-ng-class="{'loading': loading}"
placeholder="{{'Search for block, transaction or address'|translate}}" data-ng-submit="search()">
<input id="search" type="text" class="form-control" data-ng-model="q" data-ng-class="{'loading': loading}" placeholder="Search for block, transaction or address" data-ng-submit="search()">
</div>
<div class="no_matching text-danger" data-ng-show="badQuery" translate>No matching records found!</div>
<div class="no_matching text-danger" data-ng-show="badQuery">No matching records found!</div>
</form>
<ul class="nav navbar-nav navbar-right">
<li>
@ -39,14 +37,13 @@
</div>
&nbsp; &middot;
<span data-ng-init="getStatus('Info')">
<strong>{{'Conn'|translate}}</strong> {{info.connections}}
<strong>Conn</strong> {{info.connections}}
</span> &middot;
<strong>{{'Height'|translate}}</strong> {{totalBlocks || info.blocks}}
<strong>Height</strong> {{totalBlocks || info.blocks}}
</div>
</li>
<li>
<a href="#" data-ng-click="openScannerModal()"><span class="glyphicon
glyphicon-qrcode"></span> Scan</a>
<a href="#" data-ng-click="openScannerModal()"><span class="glyphicon glyphicon-qrcode"></span> Scan</a>
</li>
<li class="dropdown" data-ng-controller="CurrencyController" data-ng-include="'/views/includes/currency.html'"></li>
</ul>

View File

@ -1,4 +1,4 @@
<span class="text-warning" data-ng-show="!loaded && !error" translate>Loading...</span>
<span class="text-warning" data-ng-show="!loaded && !error">Loading...</span>
<span class="text-danger" data-ng-show="error">{{error}}</span>

View File

@ -2,5 +2,5 @@
<div class="form-group" data-ng-class="{'has-error': badQuery}">
<input id="search" type="text" class="form-control" data-ng-model="q" data-ng-class="{'loading': loading}" placeholder="Search for block, transaction or address" data-ng-submit="search()">
</div>
<div class="no_matching text-danger" data-ng-show="badQuery" translate>No matching records found!</div>
<div class="no_matching text-danger" data-ng-show="badQuery">No matching records found!</div>
</form>

View File

@ -9,19 +9,19 @@
<div data-ng-include src="'/views/includes/search.html'"></div>
<h1 translate>Latest Blocks</h1>
<h1>Latest Blocks</h1>
<table class="table table-hover table-striped" style="table-layout: fixed">
<thead>
<tr>
<th translate>Height</th>
<th translate>Age</th>
<th class="text-right"><span class="ellipsis" translate>Transactions</span></th>
<th class="text-right hidden-xs"><span class="ellipsis" translate>Mined by</span></th>
<th class="text-right" translate>Size</th>
<th>Height</th>
<th>Age</th>
<th class="text-right"><span class="ellipsis">Transactions</span></th>
<th class="text-right hidden-xs"><span class="ellipsis">Mined by</span></th>
<th class="text-right">Size</th>
</tr>
</thead>
<tbody>
<tr data-ng-show="!blocks.length"><td colspan="4" translate>Waiting for blocks...</td></tr>
<tr data-ng-show="!blocks.length"><td colspan="4">Waiting for blocks...</td></tr>
<tr class="fader" data-ng-repeat='b in blocks'>
<td>
<a href="/block/{{b.hash}}">{{b.height}}</a>
@ -34,20 +34,20 @@
</tbody>
</table>
<div class="btn-more">
<a href="/blocks" class="btn btn-default" translate>See all blocks</a>
<a href="/blocks" class="btn btn-default">See all blocks</a>
</div>
<h2 translate>Latest Transactions</h2>
<h2>Latest Transactions</h2>
<table class="table table-hover table-striped" style="table-layout: fixed;">
<thead>
<tr>
<th>Hash</th>
<th class="text-right" translate>Value Out</th>
<th class="text-right">Value Out</th>
</tr>
</thead>
<tbody>
<tr data-ng-show="!txs.length"><td colspan="3" translate>Waiting for transactions...</td></tr>
<tr data-ng-show="!txs.length"><td colspan="3">Waiting for transactions...</td></tr>
<tr class="fader" data-ng-repeat='tx in txs'>
<td>
<a class="ellipsis" href="/tx/{{tx.txid}}">{{tx.txid}}</a>
@ -60,13 +60,15 @@
</div>
<div class="col-xs-12 col-md-4 col-gray">
<h2 translate>About</h2>
<p translate><strong>insight</strong> is an <a href="http://live.insight.is/"
target="_blank">open-source Bitcoin blockchain explorer</a> with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by bitcoind RPC. Check out the <a href="http://github.com/bitpay/insight" target="_blank">source code</a>.</p>
<p translate><strong>insight</strong> is still in development, so be sure to report any bugs and provide feedback for improvement at our <a href="https://github.com/bitpay/insight/issues" target="_blank">github issue tracker</a>.</p>
<h2> About </h2>
<p><strong>insight</strong> is an <a href="http://live.insight.is/" target="_blank">open-source Bitcoin blockchain explorer</a> with complete REST
and websocket APIs that can be used for writing web wallets and other apps
that need more advanced blockchain queries than provided by bitcoind RPC.
Check out the <a href="http://github.com/bitpay/insight" target="_blank">source code</a>.</p>
<p><strong>insight</strong> is still in development, so be sure to report any bugs and provide feedback for improvement at our <a href="https://github.com/bitpay/insight/issues" target="_blank">github issue tracker</a>.</p>
<div id="powered" class="row">
<div class="powered-text">
<small class="text-muted" translate>Powered by</small>
<small class="text-muted">Powered by</small>
</div>
<a href="http://bitcore.io" target="_blank" class="bitcore" title="Bitcore"></a>
<a href="http://angularjs.org" target="_blank" class="angularjs" title="AngularJS"></a>

View File

@ -1 +1 @@
<div class="text-center" translate>Redirecting...</div>
<div class="text-center">Redirecting...</div>

View File

@ -1,28 +1,28 @@
<div data-ng-include src="'/views/includes/connection.html'"></div>
<section>
<div class="page-header">
<h1 translate>Application Status</h1>
<h1>
Application Status
</h1>
</div>
<div id="status" class="row">
<div class="col-xs-12 col-md-8">
<h2 translate>Sync Status</h2>
<h2>Sync Status</h2>
<table class="table" data-ng-controller="StatusController" data-ng-init="getSync()">
<tbody>
<tr>
<td translate>Sync Progress</td>
<td>Sync Progress</td>
<td>
<div class="progress">
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: {{ sync.syncPercentage}}%">
<span data-ng-show="sync.syncPercentage>0">{{sync.syncPercentage}}%
<span translate>Complete</span>
</span>
<span data-ng-show="sync.syncPercentage>0">{{sync.syncPercentage}}% Complete</span>
</div>
</div>
</td>
</tr>
<tr>
<td translate>Current Sync Status</td>
<td>Current Sync Status</td>
<td class="text-right">
<span data-ng-show="!sync.error">{{sync.status}}</span>
<span class="text-danger" data-ng-show="sync.error">
@ -32,51 +32,51 @@
</td>
</tr>
<tr>
<td translate>Start Date</td>
<td>Start Date</td>
<td class="text-right"><time title="{{sync.startTs | date:'medium'}}">{{humanSince(sync.startTs)}}</time></td>
</tr>
<tr data-ng-show="sync.endTs">
<td translate>Finish Date</td>
<td>Finish Date</td>
<td class="text-right"><time title="{{sync.startTs | date:'medium'}}" >{{humanSince(sync.endTs)}}</time></td>
</tr>
<tr>
<td translate>Initial Block Chain Height</td>
<td>Initial Block Chain Height</td>
<td class="text-right">{{sync.blockChainHeight}}</td>
</tr>
<tr>
<td translate>Synced Blocks</td>
<td>Synced Blocks</td>
<td class="text-right">{{sync.syncedBlocks}}</td>
</tr>
<tr>
<td translate>Skipped Blocks (previously synced)</td>
<td>Skipped Blocks (previously synced)</td>
<td class="text-right">{{sync.skippedBlocks}}</td>
</tr>
<tr>
<td translate>Sync Type</td>
<td>Sync Type</td>
<td class="text-right">{{sync.type}}</td>
</tr>
</tbody>
</table>
<h2 translate>Last Block</h2>
<h2>Last Block</h2>
<table class="table" style="table-layout: fixed" data-ng-controller="StatusController" data-ng-init="getStatus('LastBlockHash')">
<thead data-ng-include src="'/views/includes/infoStatus.html'"></thead>
<tbody>
<tr>
<td translate>Last Block Hash (Bitcoind)</td>
<td>Last Block Hash (Bitcoind)</td>
<td class="text-right ellipsis"><a href="/block/{{lastblockhash}}">{{lastblockhash}}</a></td>
</tr>
<tr>
<td translate>Current Blockchain Tip (insight)</td>
<td>Current Blockchain Tip (insight)</td>
<td class="text-right ellipsis"><a href="/block/{{syncTipHash}}">{{syncTipHash}}</a></td>
</tr>
</tbody>
</table>
<h2 translate>Transaction Output Set Information</h2>
<h2>Transaction Output Set Information</h2>
<div data-ng-controller="StatusController">
<button data-ng-click="txoutLoading=1;getStatus('TxOutSetInfo')" class="btn btn-default" data-ng-show="!txoutsetinfo.height">
<span translate>Show Transaction Output data</span>
Show Transaction Output data
<span data-ng-show="txoutLoading" class="glyphicon glyphicon-refresh icon-rotate"></span>
</button >
@ -84,31 +84,31 @@
<thead data-ng-include src="'/views/includes/infoStatus.html'"></thead>
<tbody>
<tr>
<td translate>Height</td>
<td>Height</td>
<td class="text-right"><a href="/block-index/{{txoutsetinfo.height}}">{{txoutsetinfo.height}}</a></td>
</tr>
<tr>
<td translate>Best Block</td>
<td>Best Block</td>
<td class="text-right ellipsis"><a href="/block/{{txoutsetinfo.bestblock}}">{{txoutsetinfo.bestblock}}</a></td>
</tr>
<tr>
<td translate>Transactions</td>
<td>Transactions</td>
<td class="text-right"> {{txoutsetinfo.transactions}}</td>
</tr>
<tr>
<td translate>Transaction Outputs</td>
<td>Transaction Outputs</td>
<td class="text-right">{{txoutsetinfo.txouts}}</td>
</tr>
<tr>
<td translate>Bytes Serialized</td>
<td>Bytes Serialized</td>
<td class="text-right">{{txoutsetinfo.bytes_serialized}}</td>
</tr>
<tr>
<td translate>Hash Serialized</td>
<td>Hash Serialized</td>
<td class="text-right ellipsis">{{txoutsetinfo.hash_serialized}}</td>
</tr>
<tr>
<td translate>Total Amount</td>
<td>Total Amount</td>
<td class="text-right">{{txoutsetinfo.total_amount}}</td>
</tr>
</tbody>
@ -117,44 +117,44 @@
</div> <!-- END OF COL-8 -->
<div class="col-xs-12 col-md-4 col-gray">
<h2 translate>Bitcoin node information</h2>
<h2>Bitcoin node information</h2>
<table class="table" data-ng-controller="StatusController" data-ng-init="getStatus('Info')">
<thead data-ng-include src="'/views/includes/infoStatus.html'"></thead>
<tbody>
<tr>
<td translate>Version</td>
<td>Version</td>
<td class="text-right">{{info.version}}</td>
</tr>
<tr>
<td translate>Protocol version</td>
<td>Protocol version</td>
<td class="text-right">{{info.protocolversion}}</td>
</tr>
<tr>
<td translate>Blocks</td>
<td>Blocks</td>
<td class="text-right"><a href="/block-index/{{info.blocks}}">{{info.blocks}}</a></td>
</tr>
<tr>
<td translate>Time Offset</td>
<td>Time Offset</td>
<td class="text-right">{{info.timeoffset}}</td>
</tr>
<tr>
<td translate>Connections to other nodes</td>
<td>Connections to other nodes</td>
<td class="text-right">{{info.connections}}</td>
</tr>
<tr>
<td translate>Mining Difficulty</td>
<td>Mining Difficulty</td>
<td class="text-right">{{info.difficulty}}</td>
</tr>
<tr>
<td translate>Testnet</td>
<td>Testnet</td>
<td class="text-right">{{info.testnet}}</td>
</tr>
<tr>
<td translate>Proxy setting</td>
<td>Proxy setting</td>
<td class="text-right">{{info.proxy}}</td>
</tr>
<tr>
<td translate>Info Errors</td>
<td>Info Errors</td>
<td class="text-right">{{info.infoErrors}}</td>
</tr>
</tbody>

View File

@ -3,19 +3,15 @@
<div class="secondary_navbar hidden-xs hidden-sm" scroll data-ng-class="{'hidden': !secondaryNavbar}" data-ng-show="tx.txid" data-ng-init="hideSNavbar=0">
<div class="container" data-ng-if="!hideSNavbar">
<div class="col-md-6 col-lg-7 text-left">
<h3 translate>Transaction</h3>
<h3>Transaction</h3>
<div class="ellipsis">
<small>{{tx.txid}}</small>
<span class="btn-copy" clip-copy="tx.txid"></span>
</div>
</div>
<div class="col-md-6 col-lg-5 text-right">
<span data-ng-show="tx.confirmations" class="txvalues
txvalues-success">{{tx.confirmations}}
<span translate>Confirmations</span>
</span>
<span data-ng-show="!tx.confirmations"
class="txvalues txvalues-danger" translate>Unconfirmed Transaction!</span>
<span data-ng-show="tx.confirmations" class="txvalues txvalues-success">{{tx.confirmations}} Confirmations</span>
<span data-ng-show="!tx.confirmations" class="txvalues txvalues-danger">Unconfirmed Transaction!</span>
<span class="txvalues txvalues-primary">{{$root.currency.getConvertion(tx.valueOut) || tx.valueOut + ' BTC' }}</span>
</div>
</div>
@ -27,43 +23,43 @@
</div>
</div>
<div data-ng-if="tx.txid">
<h1><span translate>Transaction</span>
<h1>Transaction
<small data-ng-show="from_vin || from_vout">
<span data-ng-show="from_vin" translate>Input</span>
<span data-ng-show="from_vout" translate>Output</span>
<span data-ng-show="from_vin">Input</span>
<span data-ng-show="from_vout">Output</span>
<span>{{v_index}}</span>
</small>
</h1>
<div class="progress progress-striped active" data-ng-if="!tx.txid">
<div class="progress-bar progress-bar-info" style="width: 100%">
<span translate>Loading Transaction Details</span> <span class="loader-gif"></span>
<span>Loading Transaction Details <span class="loader-gif"></span>
</div>
</div>
<div data-ng-if="tx.txid">
<div class="well well-sm ellipsis">
<strong translate>Transaction</strong>
<strong>Transaction</strong>
<span class="txid text-muted">{{tx.txid}}</span>
<span class="btn-copy" clip-copy="tx.txid"></span>
</div>
<h2 translate>Summary</h2>
<h2>Summary</h2>
<table class="table" style="table-layout: fixed">
<tbody>
<tr>
<td><strong translate>Size</strong></td>
<td><strong> Size </strong></td>
<td class="text-muted text-right">{{tx.size}} (bytes)</td>
</tr>
<tr>
<td><strong translate>Received Time</strong></td>
<td><strong>Received Time </strong></td>
<td data-ng-show="tx.time" class="text-muted text-right">{{tx.time * 1000|date:'medium'}}</td>
<td data-ng-show="!tx.time" class="text-muted text-right">N/A</td>
</tr>
<tr>
<td><strong translate>Mined Time</strong></td>
<td><strong>Mined Time </strong></td>
<td data-ng-show="tx.time" class="text-muted text-right">{{tx.blocktime * 1000|date:'medium'}}</td>
<td data-ng-show="!tx.time" class="text-muted text-right">N/A</td>
</tr>
<tr>
<td><strong translate>Included in Block</strong></td>
<td><strong>Included in Block </strong></td>
<td data-ng-show="tx.blockhash" class="text-muted text-right">
<div class="ellipsis">
<a href="/block/{{tx.blockhash}}">{{tx.blockhash}}</a>
@ -71,7 +67,7 @@
<td data-ng-show="!tx.blockhash" class="text-muted text-right">Unconfirmed</td>
</tr>
<tr data-ng-show="tx.locktime">
<td><strong>LockTime</strong></td>
<td><strong>LockTime </strong></td>
<td class="text-muted text-right">{{tx.locktime}}</td>
</tr>
<tr data-ng-show="tx.isCoinBase">
@ -86,7 +82,7 @@
</tbody>
</table>
</div>
<h2 translate>Details</h2>
<h2>Details</h2>
<div class="block-tx" data-ng-if="tx.txid">
<div data-ng-include src="'/views/transaction/tx.html'"></div>
</div>

View File

@ -1,11 +1,9 @@
<div class="alert alert-warning"
data-ng-show="!txs[0].txid && !loading"
translate>There are no transactions involving this address.</div>
<div class="alert alert-warning" data-ng-show="!txs[0].txid && !loading">There are no transactions involving this address.</div>
<div class="block-tx" data-ng-show="txs && txs[0].txid" data-ng-repeat="tx in txs">
<div data-ng-include src="'/views/transaction/tx.html'"></div>
</div>
<div class="progress progress-striped active" data-ng-show="loading">
<div class="progress-bar progress-bar-info" style="width: 100%">
<span translate>Loading Transactions...</span>
<span>Loading Transactions...</span>
</div>
</div>

View File

@ -10,11 +10,11 @@
</div>
<div class="col-xs-5 col-md-4 text-right text-muted">
<div data-ng-show="tx.firstSeenTs">
<span translate>first seen at</span>
first seen at
<time>{{tx.firstSeenTs * 1000 | date:'medium'}}</time>
</div>
<div data-ng-show="tx.time && !tx.firstSeenTs">
<span translate>mined</span>
mined
<time>{{tx.time * 1000 | date:'medium'}}</time>
</div>
</div>
@ -24,7 +24,7 @@
<div class="row" data-ng-if="tx.isCoinBase">
<div class="col-md-12 transaction-vin-vout" data-ng-repeat="vin in tx.vin">
<div class="ellipsis">
<span translate>No Inputs (Newly Generated Coins)</span>
<span>No Inputs (Newly Generated Coins)</span>
</div>
</div>
</div>
@ -43,22 +43,15 @@
<a href="/address/{{vin.addr}}" data-ng-show="!vin.notAddr && vin.addr != $root.currentAddr">{{vin.addr}}</a>
</div>
<div data-ng-show="vin.unconfirmedInput" class="text-danger"> <span class="glyphicon glyphicon-warning-sign"></span> (Input unconfirmed)</div>
<div data-ng-show="vin.dbError" class="text-danger">
<span class="glyphicon glyphicon-warning-sign"></span>
<span translate>Incoherence in levelDB detected:</span> {{vin.dbError}}
</div>
<div data-ng-show="vin.doubleSpentTxID" class="text-danger">
<span class="glyphicon glyphicon-warning-sign"></span>
<span translate>Double spent attempt detected. From tx:</span>
<div data-ng-show="vin.dbError" class="text-danger"> <span class="glyphicon glyphicon-warning-sign"></span> Incoherence in levelDB detected: {{vin.dbError}}</div>
<div data-ng-show="vin.doubleSpentTxID" class="text-danger"> <span class="glyphicon glyphicon-warning-sign"></span> Double spent attempt detected. From tx:
<a href="/tx/{{vin.doubleSpentTxID}}">{{vin.doubleSpentTxID}},{{vin.doubleSpentIndex}}</a>
</div>
</div>
</div>
<div class="showmore_collapse text-left" data-ng-show="tx.vinSimple.length > 5" data-ng-class="{ 'hidden': itemsExpanded}">
<button type="button" class="btn btn-info btn-sm" ng-hide="sizeInNoExpanded != tx.vinSimple.length" ng-click="currentInNoExpanded=0; sizeInNoExpanded=5"><i class="glyphicon glyphicon-chevron-up"></i>
<span translate>Show less</span></button>
<button type="button" class="btn btn-info btn-sm" ng-hide="currentInNoExpanded >= tx.vinSimple.length/sizeInNoExpanded - 1" ng-click="currentInNoExpanded=0; sizeInNoExpanded=tx.vinSimple.length"><i class="glyphicon glyphicon-chevron-down"></i>
<span translate>Show more</span></button>
<button type="button" class="btn btn-info btn-sm" ng-hide="sizeInNoExpanded != tx.vinSimple.length" ng-click="currentInNoExpanded=0; sizeInNoExpanded=5"><i class="glyphicon glyphicon-chevron-up"></i> Show less</button>
<button type="button" class="btn btn-info btn-sm" ng-hide="currentInNoExpanded >= tx.vinSimple.length/sizeInNoExpanded - 1" ng-click="currentInNoExpanded=0; sizeInNoExpanded=tx.vinSimple.length"><i class="glyphicon glyphicon-chevron-down"></i> Show more</button>
</div>
</div>
@ -76,16 +69,15 @@
<a href="/address/{{vin.addr}}" data-ng-show="!vin.notAddr">{{vin.addr}}</a>
</div>
<div data-ng-show="vin.unconfirmedInput" class="text-danger">
<span class="glyphicon glyphicon-warning-sign"></span>
<span translate>(Input unconfirmed)</span>
<span class="glyphicon glyphicon-warning-sign"></span> (Input unconfirmed)
</div>
<div data-ng-show="vin.dbError" class="text-danger">
<span class="glyphicon glyphicon-warning-sign"></span>
<span translate>Incoherence in levelDB detected:</span> {{vin.dbError}}
Incoherence in levelDB detected: {{vin.dbError}}
</div>
<div data-ng-show="vin.doubleSpentTxID" class="text-danger">
<span class="glyphicon glyphicon-warning-sign"></span>
<span translate>Double spent attempt detected. From tx:</span>
Double spent attempt detected. From tx:
<a href="/tx/{{<vin class=""></vin>doubleSpentTxID}}">{{vin.doubleSpentTxID}},{{vin.doubleSpentIndex}}</a>
</div>
</div> <!-- END OF PANEL BODY -->
@ -99,16 +91,12 @@
</div>
</div>
<div class="text-left">
<button type="button" class="btn btn-default btn-sm" data-ng-show="(from_vin) && tx.vin.length > 1" data-ng-disabled="fromVinCollapsed" data-ng-click="currentInExpanded=0; sizeInExpanded=tx.vin.length;fromVinCollapsed=1">
<span translate>Show input</span> #{{ v_index }}</button>
<button type="button" class="btn btn-default btn-sm" data-ng-show="(from_vin) && tx.vin.length > 1" data-ng-disabled="!fromVinCollapsed" data-ng-click="currentInExpanded=0; sizeInExpanded=tx.vin.length;fromVinCollapsed=0">
<span translate>Show all</span></button>
<button type="button" class="btn btn-default btn-sm" data-ng-show="(from_vin) && tx.vin.length > 1" data-ng-disabled="fromVinCollapsed" data-ng-click="currentInExpanded=0; sizeInExpanded=tx.vin.length;fromVinCollapsed=1">Show input #{{ v_index }}</button>
<button type="button" class="btn btn-default btn-sm" data-ng-show="(from_vin) && tx.vin.length > 1" data-ng-disabled="!fromVinCollapsed" data-ng-click="currentInExpanded=0; sizeInExpanded=tx.vin.length;fromVinCollapsed=0">Show all</button>
</div>
<div class="showmore_collapse text-left" data-ng-show="tx.vin.length > 5 && !fromVinCollapsed" data-ng-class="{ 'hidden': !itemsExpanded}">
<button type="button" class="btn btn-info btn-sm" ng-hide="sizeInExpanded != tx.vin.length" ng-click="currentInExpanded=0; sizeInExpanded=5"><i class="glyphicon glyphicon-chevron-up"></i>
<span translate>Show less</span></button>
<button type="button" class="btn btn-info btn-sm" ng-hide="currentInExpanded >= tx.vin.length/sizeInExpanded - 1" ng-click="currentInExpanded=0; sizeInExpanded=tx.vin.length"><i class="glyphicon glyphicon-chevron-down"></i>
<span translate>Show more</span></button>
<button type="button" class="btn btn-info btn-sm" ng-hide="sizeInExpanded != tx.vin.length" ng-click="currentInExpanded=0; sizeInExpanded=5"><i class="glyphicon glyphicon-chevron-up"></i> Show less</button>
<button type="button" class="btn btn-info btn-sm" ng-hide="currentInExpanded >= tx.vin.length/sizeInExpanded - 1" ng-click="currentInExpanded=0; sizeInExpanded=tx.vin.length"><i class="glyphicon glyphicon-chevron-down"></i> Show more</button>
</div>
</div>
</div>
@ -143,10 +131,8 @@
</div>
</div>
<div class="showmore_collapse text-left" data-ng-show="tx.voutSimple.length > 5" data-ng-class="{ 'hidden': itemsExpanded}">
<button type="button" class="btn btn-info btn-sm" ng-hide="sizeOutNoExpanded != tx.voutSimple.length" ng-click="currentOutNoExpanded=0; sizeOutNoExpanded=5"><i class="glyphicon glyphicon-chevron-up"></i>
<span translate>Show less</span></button>
<button type="button" class="btn btn-info btn-sm" ng-hide="currentOutNoExpanded >= tx.voutSimple.length/sizeOutNoExpanded - 1" ng-click="currentOutNoExpanded=0; sizeOutNoExpanded=tx.voutSimple.length"><i class="glyphicon glyphicon-chevron-down"></i>
<span translate>Show more</span></button>
<button type="button" class="btn btn-info btn-sm" ng-hide="sizeOutNoExpanded != tx.voutSimple.length" ng-click="currentOutNoExpanded=0; sizeOutNoExpanded=5"><i class="glyphicon glyphicon-chevron-up"></i> Show less</button>
<button type="button" class="btn btn-info btn-sm" ng-hide="currentOutNoExpanded >= tx.voutSimple.length/sizeOutNoExpanded - 1" ng-click="currentOutNoExpanded=0; sizeOutNoExpanded=tx.voutSimple.length"><i class="glyphicon glyphicon-chevron-down"></i> Show more</button>
</div>
</div>
@ -168,7 +154,7 @@
</div>
<div style="padding-left: 0.7em; padding-bottom: 2em; word-wrap:break-word" data-ng-class="{true: 'v_highlight', false: ''}[from_vout == true && v_index == vout.n]">
<p class="small">
<strong translate>Type</strong>
<strong>Type</strong>
<span class="text-muted">{{vout.scriptPubKey.type}}</span>
</p>
<div class="small">
@ -192,19 +178,17 @@
</div>
<div class="well well-sm bgwhite ellipsis" data-ng-if="itemsExpanded && !block.hash && tx.blockhash">
<strong translate>Included in Block</strong> <a class="text-muted" href="/block/{{tx.blockhash}}">{{tx.blockhash}}</a>
<strong>Included in Block</strong> <a class="text-muted" href="/block/{{tx.blockhash}}">{{tx.blockhash}}</a>
<span class="btn-copy" clip-copy="tx.blockhash"></span>
</div>
<div class="line-top row" data-ng-hide="!tx">
<div class="col-xs-6 col-sm-4 col-md-4">
<span data-ng-show="!tx.isCoinBase && !isNaN(parseFloat(tx.fees))"
class="txvalues txvalues-default"><span translate>Fee</span>: {{$root.currency.getConvertion(tx.fees) || tx.fees + 'BTC'}} </span>
<span data-ng-show="!tx.isCoinBase && !isNaN(parseFloat(tx.fees))" class="txvalues txvalues-default">Fees: {{$root.currency.getConvertion(tx.fees) || tx.fees + 'BTC'}} </span>
</div>
<div class="col-xs-6 col-sm-8 col-md-8 text-right">
<span data-ng-show="tx.confirmations" class="txvalues
txvalues-success">{{tx.confirmations}} <span translate>Confirmations</span></span>
<span data-ng-show="!tx.confirmations" class="txvalues txvalues-danger" translate>Unconfirmed Transaction!</span>
<span data-ng-show="tx.confirmations" class="txvalues txvalues-success">{{tx.confirmations}} Confirmations</span>
<span data-ng-show="!tx.confirmations" class="txvalues txvalues-danger">Unconfirmed Transaction!</span>
<span class="txvalues txvalues-primary">{{$root.currency.getConvertion(tx.valueOut) || tx.valueOut + ' BTC' }}</span>
</div>
</div>