Compare commits
25 Commits
Author | SHA1 | Date |
---|---|---|
|
5a5fdc2aad | |
|
aa3f3c8b27 | |
|
78f050070a | |
|
010e6af5de | |
|
9c67396e94 | |
|
ce057c4338 | |
|
6630449b7e | |
|
7ea8ed4bf3 | |
|
130a8b2031 | |
|
5fd8e9071e | |
|
4def8706b1 | |
|
b6a64af705 | |
|
fcf035d140 | |
|
12d960183c | |
|
07dcf73a98 | |
|
1d5273d621 | |
|
83fb8fe973 | |
|
880f629811 | |
|
ade6b06fae | |
|
5d45cd463e | |
|
5162ec052d | |
|
66b5e70114 | |
|
e71dbd81d0 | |
|
afa8866655 | |
|
93d1b3bad1 |
11
Gruntfile.js
11
Gruntfile.js
|
@ -26,7 +26,10 @@ 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/moment/min/moment.min.js', 'public/lib/moment/lang/es.js', 'public/lib/zeroclipboard/ZeroClipboard.min.js',
|
||||
'public/lib/c3/c3.min.js',
|
||||
'public/lib/d3/d3.min.js'
|
||||
],
|
||||
dest: 'public/js/vendors.js'
|
||||
},
|
||||
angular: {
|
||||
|
@ -38,7 +41,11 @@ module.exports = function(grunt) {
|
|||
dest: 'public/js/main.js'
|
||||
},
|
||||
css: {
|
||||
src: ['public/lib/bootstrap/dist/css/bootstrap.min.css', 'public/src/css/**/*.css'],
|
||||
src: [
|
||||
'public/lib/bootstrap/dist/css/bootstrap.min.css',
|
||||
'public/lib/c3/c3.min.css',
|
||||
'public/src/css/**/*.css'
|
||||
],
|
||||
dest: 'public/css/main.css'
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Insight UI
|
||||
|
||||
A Bitcoin blockchain explorer web application service for [Bitcore Node](https://github.com/bitpay/bitcore-node) using the [Insight API](https://github.com/bitpay/insight-api).
|
||||
A Bitcoin blockchain explorer web application service for [Bitcore Node](https://github.com/bitpay/bitcore-node) using the [Insight API](https://github.com/zcash-hackworks/insight-api-zcash).
|
||||
|
||||
## Quick Start
|
||||
|
||||
|
@ -70,11 +70,11 @@ compile***.
|
|||
|
||||
## Note
|
||||
|
||||
For more details about the [Insight API](https://github.com/bitpay/insight-api) configuration and end-points, go to [Insight API GitHub repository](https://github.com/bitpay/insight-api).
|
||||
For more details about the [Insight API](https://github.com/zcash-hackworks/insight-api-zcash) configuration and end-points, go to [Insight API GitHub repository](https://github.com/zcash-hackworks/insight-api-zcash).
|
||||
|
||||
## Contribute
|
||||
|
||||
Contributions and suggestions are welcomed at the [Insight UI GitHub repository](https://github.com/bitpay/insight-ui).
|
||||
Contributions and suggestions are welcomed at the [Insight UI GitHub repository](https://github.com/zcash-hackworks/insight-ui-zcash).
|
||||
|
||||
|
||||
## License
|
||||
|
|
|
@ -9,7 +9,7 @@ var InsightUI = function(options) {
|
|||
if (typeof options.apiPrefix !== 'undefined') {
|
||||
this.apiPrefix = options.apiPrefix;
|
||||
} else {
|
||||
this.apiPrefix = 'insight-api';
|
||||
this.apiPrefix = 'insight-api-zcash';
|
||||
}
|
||||
if (typeof options.routePrefix !== 'undefined') {
|
||||
this.routePrefix = options.routePrefix;
|
||||
|
@ -18,7 +18,7 @@ var InsightUI = function(options) {
|
|||
}
|
||||
};
|
||||
|
||||
InsightUI.dependencies = ['insight-api'];
|
||||
InsightUI.dependencies = ['insight-api-zcash'];
|
||||
|
||||
inherits(InsightUI, BaseService);
|
||||
|
13
bower.json
13
bower.json
|
@ -2,18 +2,19 @@
|
|||
"name": "Insight",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"angular": "~1.2.13",
|
||||
"angular-resource": "~1.2.13",
|
||||
"angular-route": "~1.2.13",
|
||||
"angular": "~1.5.8",
|
||||
"angular-resource": "~1.5.8",
|
||||
"angular-route": "~1.5.8",
|
||||
"bootstrap": "~3.1.1",
|
||||
"angular-bootstrap": "~0.10.0",
|
||||
"angular-qrcode": "~3.1.0",
|
||||
"angular-animate": "~1.2.13",
|
||||
"momentjs": "~2.5.1",
|
||||
"angular-animate": "~1.5.8",
|
||||
"moment": "~2.10.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-moment": "1.0.0-beta.6",
|
||||
"c3": "~0.4.11"
|
||||
}
|
||||
}
|
||||
|
|
22
package.json
22
package.json
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
"name": "insight-ui",
|
||||
"description": "An open-source frontend for the Insight API. The Insight API provides you with a convenient, powerful and simple way to query and broadcast data on the bitcoin network and build your own services with it.",
|
||||
"name": "insight-ui-zcash",
|
||||
"description": "An open-source frontend for the Insight API. The Insight API provides you with a convenient, powerful and simple way to query and broadcast data on the zcash network and build your own services with it.",
|
||||
"version": "0.4.0",
|
||||
"repository": "git://github.com/bitpay/insight-ui.git",
|
||||
"repository": "git://github.com/zcash-hackworks/insight-ui-zcash.git",
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Matias Alejo Garcia",
|
||||
|
@ -23,22 +23,30 @@
|
|||
{
|
||||
"name": "Juan Ignacio Sosa Lopez",
|
||||
"email": "bechilandia@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Jack Grigg",
|
||||
"email": "jack@z.cash"
|
||||
},
|
||||
{
|
||||
"name": "Simon Liu",
|
||||
"email": "simon@z.cash"
|
||||
}
|
||||
],
|
||||
"bugs": {
|
||||
"url": "https://github.com/bitpay/insight-ui/issues"
|
||||
"url": "https://github.com/zcash/zcash/issues"
|
||||
},
|
||||
"homepage": "https://github.com/bitpay/insight-ui",
|
||||
"homepage": "https://github.com/zcash-hackworks/insight-ui-zcash",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"insight",
|
||||
"blockchain",
|
||||
"blockexplorer",
|
||||
"bitcoin",
|
||||
"zcash",
|
||||
"bitcore",
|
||||
"front-end"
|
||||
],
|
||||
"bitcoreNode": "bitcore-node",
|
||||
"bitcoreNode": "bitcore-node-zcash",
|
||||
"dependencies": {
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
30
po/de_DE.po
30
po/de_DE.po
|
@ -23,18 +23,18 @@ msgstr "404 Seite nicht gefunden :("
|
|||
#: 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 "
|
||||
"\"_blank\">open-source Zcash 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=\"https://github.com/bitpay/insight-ui\" target=\"_blank"
|
||||
"that need more advanced blockchain queries than provided by zcashd RPC. "
|
||||
"Check out the <a href=\"https://github.com/zcash-hackworks/insight-ui-zcash\" target=\"_blank"
|
||||
"\">source code</a>."
|
||||
msgstr ""
|
||||
"<strong>insight</strong> ist ein <a href=\"http://live.insight.is/\" target="
|
||||
"\"_blank\">Open Source Bitcoin Blockchain Explorer</a> mit vollständigen "
|
||||
"\"_blank\">Open Source Zcash Blockchain Explorer</a> mit vollständigen "
|
||||
"REST und Websocket APIs um eigene Wallets oder Applikationen zu "
|
||||
"implementieren. Hierbei werden fortschrittlichere Abfragen der Blockchain "
|
||||
"ermöglicht, bei denen die RPC des Bitcoind nicht mehr ausreichen. Der "
|
||||
"aktuelle <a href=\"https://github.com/bitpay/insight-ui\" target=\"_blank"
|
||||
"ermöglicht, bei denen die RPC des Zcashd nicht mehr ausreichen. Der "
|
||||
"aktuelle <a href=\"https://github.com/zcash-hackworks/insight-ui-zcash\" target=\"_blank"
|
||||
"\">Quellcode</a> ist auf Github zu finden."
|
||||
|
||||
#: public/views/index.html
|
||||
|
@ -45,7 +45,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"<strong>insight</strong> befindet sich aktuell noch in der Entwicklung. "
|
||||
"Bitte sende alle gefundenen Fehler (Bugs) und Feedback zur weiteren "
|
||||
"Verbesserung an unseren <a href=\"https://github.com/bitpay/insight-ui/issues"
|
||||
"Verbesserung an unseren <a href=\"https://github.com/zcash/zcash/issues"
|
||||
"\" target=\"_blank\">Github Issue Tracker</a>."
|
||||
|
||||
#: public/views/index.html
|
||||
|
@ -69,8 +69,8 @@ msgid "Best Block"
|
|||
msgstr "Bester Block"
|
||||
|
||||
#: public/views/status.html
|
||||
msgid "Bitcoin node information"
|
||||
msgstr "Bitcoin-Node Info"
|
||||
msgid "Zcash node information"
|
||||
msgstr "Zcash-Node Info"
|
||||
|
||||
#: public/views/block.html
|
||||
msgid "Block"
|
||||
|
@ -91,11 +91,11 @@ msgstr "Serialisierte Bytes"
|
|||
|
||||
#: 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.)"
|
||||
"Can't connect to zcashd to get live updates from the p2p network. (Tried "
|
||||
"connecting to zcashd at {{host}}:{{port}} and failed.)"
|
||||
msgstr ""
|
||||
"Es ist nicht möglich mit Bitcoind zu verbinden um live Aktualisierungen vom "
|
||||
"P2P Netzwerk zu erhalten. (Verbindungsversuch zu bitcoind an {{host}}:"
|
||||
"Es ist nicht möglich mit Zcashd zu verbinden um live Aktualisierungen vom "
|
||||
"P2P Netzwerk zu erhalten. (Verbindungsversuch zu zcashd an {{host}}:"
|
||||
"{{port}} ist fehlgeschlagen.)"
|
||||
|
||||
#: public/views/includes/connection.html
|
||||
|
@ -199,8 +199,8 @@ msgid "Last Block"
|
|||
msgstr "Letzter Block"
|
||||
|
||||
#: public/views/status.html
|
||||
msgid "Last Block Hash (Bitcoind)"
|
||||
msgstr "Letzter Hash (Bitcoind)"
|
||||
msgid "Last Block Hash (Zcashd)"
|
||||
msgstr "Letzter Hash (Zcashd)"
|
||||
|
||||
#: public/views/index.html
|
||||
msgid "Latest Blocks"
|
||||
|
|
28
po/es.po
28
po/es.po
|
@ -23,16 +23,16 @@ 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 "
|
||||
"\"_blank\">open-source Zcash 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=\"https://github.com/bitpay/insight-ui\" target=\"_blank"
|
||||
"that need more advanced blockchain queries than provided by zcashd RPC. "
|
||||
"Check out the <a href=\"https://github.com/zcash-hackworks/insight-ui-zcash\" 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 "
|
||||
"\"_blank\">explorador de bloques de Zcash 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 "
|
||||
"monederos de Zcashs 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>."
|
||||
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
|||
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-ui/issues\" target=\"_blank\">Github issue "
|
||||
"\"https://github.com/zcash/zcash/issues\" target=\"_blank\">Github issue "
|
||||
"tracker</a>."
|
||||
|
||||
#: public/views/index.html
|
||||
|
@ -68,8 +68,8 @@ msgid "Best Block"
|
|||
msgstr "Mejor Bloque"
|
||||
|
||||
#: public/views/status.html
|
||||
msgid "Bitcoin node information"
|
||||
msgstr "Información del nodo Bitcoin"
|
||||
msgid "Zcash node information"
|
||||
msgstr "Información del nodo Zcash"
|
||||
|
||||
#: public/views/block.html
|
||||
msgid "Block"
|
||||
|
@ -90,11 +90,11 @@ 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.)"
|
||||
"Can't connect to zcashd to get live updates from the p2p network. (Tried "
|
||||
"connecting to zcashd 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ó.)"
|
||||
"No se pudo conectar a zcashd para obtener actualizaciones en vivo de la "
|
||||
"red p2p. (Se intentó conectar a zcashd de {{host}}:{{port}} y falló.)"
|
||||
|
||||
#: public/views/includes/connection.html
|
||||
msgid "Can't connect to insight server. Attempting to reconnect..."
|
||||
|
@ -195,8 +195,8 @@ msgid "Last Block"
|
|||
msgstr "Último Bloque"
|
||||
|
||||
#: public/views/status.html
|
||||
msgid "Last Block Hash (Bitcoind)"
|
||||
msgstr "Último Bloque Hash (Bitcoind)"
|
||||
msgid "Last Block Hash (Zcashd)"
|
||||
msgstr "Último Bloque Hash (Zcashd)"
|
||||
|
||||
#: public/views/index.html
|
||||
msgid "Latest Blocks"
|
||||
|
|
38
po/ja.po
38
po/ja.po
|
@ -22,17 +22,17 @@ msgstr "404 ページがみつかりません (´・ω・`)"
|
|||
#: 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 "
|
||||
"\"_blank\">open-source Zcash 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=\"https://github.com/bitpay/insight-ui\" target=\"_blank"
|
||||
"that need more advanced blockchain queries than provided by zcashd RPC. "
|
||||
"Check out the <a href=\"https://github.com/zcash-hackworks/insight-ui-zcash\" target=\"_blank"
|
||||
"\">source code</a>."
|
||||
msgstr ""
|
||||
"<strong>insight</strong>は、bitcoind RPCの提供するものよりも詳細なブロック"
|
||||
"<strong>insight</strong>は、zcashd RPCの提供するものよりも詳細なブロック"
|
||||
"チェインへの問い合わせを必要とするウェブウォレットやその他のアプリを書くのに"
|
||||
"使える、完全なRESTおよびwebsocket APIを備えた<a href=\"http://live.insight."
|
||||
"is/\" target=\"_blank\">オープンソースのビットコインブロックエクスプローラ</"
|
||||
"a>です。<a href=\"https://github.com/bitpay/insight-ui\" target=\"_blank\">ソース"
|
||||
"a>です。<a href=\"https://github.com/zcash-hackworks/insight-ui-zcash\" target=\"_blank\">ソース"
|
||||
"コード</a>を確認"
|
||||
|
||||
#: public/views/index.html
|
||||
|
@ -74,12 +74,12 @@ msgid "Best Block"
|
|||
msgstr "最良ブロック"
|
||||
|
||||
#: public/views/messages_verify.html
|
||||
msgid "Bitcoin comes with a way of signing arbitrary messages."
|
||||
msgstr "Bitcoinには任意のメッセージを署名する昨日が備わっています。"
|
||||
msgid "Zcash comes with a way of signing arbitrary messages."
|
||||
msgstr "Zcashには任意のメッセージを署名する昨日が備わっています。"
|
||||
|
||||
#: public/views/status.html
|
||||
msgid "Bitcoin node information"
|
||||
msgstr "Bitcoinノード情報"
|
||||
msgid "Zcash node information"
|
||||
msgstr "Zcashノード情報"
|
||||
|
||||
#: public/views/block.html
|
||||
msgid "Block"
|
||||
|
@ -104,10 +104,10 @@ msgstr "シリアライズ後の容量 (バイト)"
|
|||
|
||||
#: 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.)"
|
||||
"Can't connect to zcashd to get live updates from the p2p network. (Tried "
|
||||
"connecting to zcashd at {{host}}:{{port}} and failed.)"
|
||||
msgstr ""
|
||||
"P2Pネットワークからライブ情報を取得するためにbitcoindへ接続することができませ"
|
||||
"P2Pネットワークからライブ情報を取得するためにzcashdへ接続することができませ"
|
||||
"んでした。({{host}}:{{port}} への接続を試みましたが、失敗しました。)"
|
||||
|
||||
#: public/views/includes/connection.html
|
||||
|
@ -213,8 +213,8 @@ msgid "Last Block"
|
|||
msgstr "直前のブロック"
|
||||
|
||||
#: public/views/status.html
|
||||
msgid "Last Block Hash (Bitcoind)"
|
||||
msgstr "直前のブロックのハッシュ値 (Bitcoind)"
|
||||
msgid "Last Block Hash (Zcashd)"
|
||||
msgstr "直前のブロックのハッシュ値 (Zcashd)"
|
||||
|
||||
#: public/views/index.html
|
||||
msgid "Latest Blocks"
|
||||
|
@ -426,17 +426,17 @@ msgstr "このアドレスに対するトランザクションはありません
|
|||
#: public/views/transaction_sendraw.html
|
||||
msgid ""
|
||||
"This form can be used to broadcast a raw transaction in hex format over\n"
|
||||
" the Bitcoin network."
|
||||
" the Zcash network."
|
||||
msgstr ""
|
||||
"このフォームでは、16進数フォーマットの生のトランザクションをBitcoinネットワー"
|
||||
"このフォームでは、16進数フォーマットの生のトランザクションをZcashネットワー"
|
||||
"ク上に配信することができます。"
|
||||
|
||||
#: public/views/messages_verify.html
|
||||
msgid ""
|
||||
"This form can be used to verify that a message comes from\n"
|
||||
" a specific Bitcoin address."
|
||||
" a specific Zcash address."
|
||||
msgstr ""
|
||||
"このフォームでは、メッセージが特定のBitcoinアドレスから来たかどうかを検証する"
|
||||
"このフォームでは、メッセージが特定のZcashアドレスから来たかどうかを検証する"
|
||||
"ことができます。"
|
||||
|
||||
#: public/views/status.html
|
||||
|
@ -453,7 +453,7 @@ msgstr "今日"
|
|||
|
||||
#: public/views/status.html
|
||||
msgid "Total Amount"
|
||||
msgstr "Bitcoin総量"
|
||||
msgstr "Zcash総量"
|
||||
|
||||
#: public/views/address.html
|
||||
msgid "Total Received"
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -6,9 +6,11 @@
|
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<meta name="fragment" content="!">
|
||||
<title data-ng-bind="$root.title + $root.titleDetail + ' | Insight'">Insight</title>
|
||||
<meta name="keywords" content="bitcoins, transactions, blocks, address, block chain, best block, mining difficulty, hash serialized">
|
||||
<meta name="description" content="Bitcoin Insight. View detailed information on all bitcoin transactions and block. {{ $root.title + $root.titleDetail }}">
|
||||
<title data-ng-if="currency.testnet" data-ng-bind="$root.title + $root.titleDetail + ' | Testnet Insight'">Testnet Insight</title>
|
||||
<title data-ng-if="!currency.testnet" data-ng-bind="$root.title + $root.titleDetail + ' | Insight'">Insight</title>
|
||||
<meta name="keywords" content="zcash, transactions, blocks, address, block chain, best block, mining difficulty, hash serialized">
|
||||
<meta data-ng-if="currency.testnet" name="description" content="Zcash Insight. View detailed information on all testnet zcash transactions and block. {{ $root.title + $root.titleDetail }}">
|
||||
<meta data-ng-if="!currency.testnet" name="description" content="Zcash Insight. View detailed information on all zcash transactions and block. {{ $root.title + $root.titleDetail }}">
|
||||
<link rel="shortcut icon" href="img/icons/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700,400italic">
|
||||
<link rel="stylesheet" href="css/main.min.css">
|
||||
|
@ -46,7 +48,7 @@
|
|||
<div id="footer" role="navigation">
|
||||
<div class="container" data-ng-controller="FooterController">
|
||||
<div class="links m20t pull-left">
|
||||
<span class="languages" ng-show="availableLanguages.0">
|
||||
<span class="languages" ng-show="availableLanguages.length > 0">
|
||||
[
|
||||
<a href="#"
|
||||
ng-click="setLanguage(l.isoCode)"
|
||||
|
|
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
|
@ -1,7 +1,10 @@
|
|||
'use strict';
|
||||
|
||||
var testnet = false;
|
||||
var netSymbol = testnet ? 'TAZ' : 'ZEC';
|
||||
|
||||
var defaultLanguage = localStorage.getItem('insight-language') || 'en';
|
||||
var defaultCurrency = localStorage.getItem('insight-currency') || 'BTC';
|
||||
var defaultCurrency = localStorage.getItem('insight-currency') || netSymbol;
|
||||
|
||||
angular.module('insight',[
|
||||
'ngAnimate',
|
||||
|
@ -19,6 +22,7 @@ angular.module('insight',[
|
|||
'insight.transactions',
|
||||
'insight.address',
|
||||
'insight.search',
|
||||
'insight.charts',
|
||||
'insight.status',
|
||||
'insight.connection',
|
||||
'insight.currency',
|
||||
|
@ -31,6 +35,7 @@ angular.module('insight.blocks', []);
|
|||
angular.module('insight.transactions', []);
|
||||
angular.module('insight.address', []);
|
||||
angular.module('insight.search', []);
|
||||
angular.module('insight.charts', []);
|
||||
angular.module('insight.status', []);
|
||||
angular.module('insight.connection', []);
|
||||
angular.module('insight.currency', []);
|
||||
|
|
|
@ -5,7 +5,7 @@ angular.module('insight').config(function($routeProvider) {
|
|||
$routeProvider.
|
||||
when('/block/:blockHash', {
|
||||
templateUrl: 'views/block.html',
|
||||
title: 'Bitcoin Block '
|
||||
title: 'Zcash Block '
|
||||
}).
|
||||
when('/block-index/:blockHeight', {
|
||||
controller: 'BlocksController',
|
||||
|
@ -17,7 +17,7 @@ angular.module('insight').config(function($routeProvider) {
|
|||
}).
|
||||
when('/tx/:txId/:v_type?/:v_index?', {
|
||||
templateUrl: 'views/transaction.html',
|
||||
title: 'Bitcoin Transaction '
|
||||
title: 'Zcash Transaction '
|
||||
}).
|
||||
when('/', {
|
||||
templateUrl: 'views/index.html',
|
||||
|
@ -25,15 +25,19 @@ angular.module('insight').config(function($routeProvider) {
|
|||
}).
|
||||
when('/blocks', {
|
||||
templateUrl: 'views/block_list.html',
|
||||
title: 'Bitcoin Blocks solved Today'
|
||||
title: 'Zcash Blocks solved Today'
|
||||
}).
|
||||
when('/blocks-date/:blockDate/:startTimestamp?', {
|
||||
templateUrl: 'views/block_list.html',
|
||||
title: 'Bitcoin Blocks solved '
|
||||
title: 'Zcash Blocks solved '
|
||||
}).
|
||||
when('/address/:addrStr', {
|
||||
templateUrl: 'views/address.html',
|
||||
title: 'Bitcoin Address '
|
||||
title: 'Zcash Address '
|
||||
}).
|
||||
when('/charts/:chartType?', {
|
||||
templateUrl: 'views/charts.html',
|
||||
title: 'Charts'
|
||||
}).
|
||||
when('/status', {
|
||||
templateUrl: 'views/status.html',
|
||||
|
|
|
@ -41,7 +41,7 @@ angular.module('insight.blocks').controller('BlocksController',
|
|||
$scope.humanSince = function(time) {
|
||||
var m = moment.unix(time).startOf('day');
|
||||
var b = moment().startOf('day');
|
||||
return m.max().from(b);
|
||||
return moment.min(m).from(b);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('insight.charts').controller('ChartsController',
|
||||
function($scope, $rootScope, $routeParams, $location, Chart, Charts) {
|
||||
$scope.loading = false;
|
||||
|
||||
$scope.list = function() {
|
||||
Charts.get({
|
||||
}, function(res) {
|
||||
$scope.charts = res.charts;
|
||||
});
|
||||
|
||||
if ($routeParams.chartType) {
|
||||
$scope.chart();
|
||||
}
|
||||
};
|
||||
|
||||
$scope.chart = function() {
|
||||
$scope.loading = true;
|
||||
|
||||
Chart.get({
|
||||
chartType: $routeParams.chartType
|
||||
}, function(chart) {
|
||||
$scope.loading = false;
|
||||
$scope.chartType = $routeParams.chartType;
|
||||
$scope.chartName = chart.name;
|
||||
$scope.chart = c3.generate(chart);
|
||||
}, function(e) {
|
||||
if (e.status === 400) {
|
||||
$rootScope.flashMessage = 'Invalid chart: ' + $routeParams.chartType;
|
||||
}
|
||||
else if (e.status === 503) {
|
||||
$rootScope.flashMessage = 'Backend Error. ' + e.data;
|
||||
}
|
||||
else {
|
||||
$rootScope.flashMessage = 'Chart Not Found';
|
||||
}
|
||||
$location.path('/');
|
||||
});
|
||||
};
|
||||
|
||||
$scope.params = $routeParams;
|
||||
|
||||
});
|
|
@ -20,7 +20,7 @@ angular.module('insight.currency').controller('CurrencyController',
|
|||
|
||||
if (this.symbol === 'USD') {
|
||||
response = _roundFloat((value * this.factor), 2);
|
||||
} else if (this.symbol === 'mBTC') {
|
||||
} else if (this.symbol === 'm'+netSymbol) {
|
||||
this.factor = 1000;
|
||||
response = _roundFloat((value * this.factor), 5);
|
||||
} else if (this.symbol === 'bits') {
|
||||
|
@ -47,7 +47,7 @@ angular.module('insight.currency').controller('CurrencyController',
|
|||
Currency.get({}, function(res) {
|
||||
$rootScope.currency.factor = $rootScope.currency.bitstamp = res.data.bitstamp;
|
||||
});
|
||||
} else if (currency === 'mBTC') {
|
||||
} else if (currency === 'm'+netSymbol) {
|
||||
$rootScope.currency.factor = 1000;
|
||||
} else if (currency === 'bits') {
|
||||
$rootScope.currency.factor = 1000000;
|
||||
|
|
|
@ -7,12 +7,17 @@ angular.module('insight.system').controller('HeaderController',
|
|||
$rootScope.currency = {
|
||||
factor: 1,
|
||||
bitstamp: 0,
|
||||
symbol: 'BTC'
|
||||
testnet: testnet,
|
||||
netSymbol: netSymbol,
|
||||
symbol: netSymbol
|
||||
};
|
||||
|
||||
$scope.menu = [{
|
||||
'title': 'Blocks',
|
||||
'link': 'blocks'
|
||||
}, {
|
||||
'title': 'Charts',
|
||||
'link': 'charts'
|
||||
}, {
|
||||
'title': 'Status',
|
||||
'link': 'status'
|
||||
|
|
|
@ -40,7 +40,7 @@ angular.module('insight.system').controller('IndexController',
|
|||
|
||||
$scope.humanSince = function(time) {
|
||||
var m = moment.unix(time);
|
||||
return m.max().fromNow();
|
||||
return moment.min(m).fromNow();
|
||||
};
|
||||
|
||||
$scope.index = function() {
|
||||
|
|
|
@ -112,7 +112,7 @@ angular.module('insight.system').controller('ScannerController',
|
|||
qrcode.callback = function(data) {
|
||||
_scanStop();
|
||||
|
||||
var str = (data.indexOf('bitcoin:') === 0) ? data.substring(8) : data;
|
||||
var str = (data.indexOf('zcash:') === 0) ? data.substring(8) : data;
|
||||
console.log('QR code detected: ' + str);
|
||||
$searchInput
|
||||
.val(str)
|
||||
|
|
|
@ -19,7 +19,7 @@ angular.module('insight.status').controller('StatusController',
|
|||
|
||||
$scope.humanSince = function(time) {
|
||||
var m = moment.unix(time / 1000);
|
||||
return m.max().fromNow();
|
||||
return moment.min(m).fromNow();
|
||||
};
|
||||
|
||||
var _onSyncUpdate = function(sync) {
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('insight.charts')
|
||||
.factory('Chart',
|
||||
function($resource) {
|
||||
return $resource(window.apiPrefix + '/chart/:chartType', {
|
||||
chartType: '@chartType'
|
||||
}, {
|
||||
get: {
|
||||
method: 'GET',
|
||||
interceptor: {
|
||||
response: function (res) {
|
||||
return res.data;
|
||||
},
|
||||
responseError: function (res) {
|
||||
if (res.status === 404) {
|
||||
return res;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
.factory('Charts',
|
||||
function($resource) {
|
||||
return $resource(window.apiPrefix + '/charts');
|
||||
});
|
|
@ -4,6 +4,7 @@
|
|||
angular.module('insight.system')
|
||||
.factory('Global',[
|
||||
function() {
|
||||
return {};
|
||||
}
|
||||
])
|
||||
.factory('Version',
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -7,7 +7,7 @@
|
|||
<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 translate>Final Balance</strong> {{$root.currency.getConvertion(address.balance)}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hide_snavbar">
|
||||
|
@ -17,7 +17,7 @@
|
|||
</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><span translate>Address</span> <small data-ng-show="address.addrStr">{{$root.currency.getConvertion(address.balance)}}</small></h1>
|
||||
<div class="text-muted" data-ng-if="!address.addrStr">
|
||||
<span translate>Loading Address Information</span> <span class="loader-gif"></span>
|
||||
</div>
|
||||
|
@ -34,15 +34,15 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><strong translate>Total Received</strong></td>
|
||||
<td class="ellipsis text-right">{{$root.currency.getConvertion(address.totalReceived) || address.totalReceived + ' BTC'}}</td>
|
||||
<td class="ellipsis text-right">{{$root.currency.getConvertion(address.totalReceived)}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong translate>Total Sent</strong></td>
|
||||
<td class="ellipsis text-right">{{$root.currency.getConvertion(address.totalSent) || address.totalSent + ' BTC'}}</td>
|
||||
<td class="ellipsis text-right">{{$root.currency.getConvertion(address.totalSent)}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong translate>Final Balance</strong></td>
|
||||
<td class="ellipsis text-right">{{$root.currency.getConvertion(address.balance) || address.balance + ' BTC'}}</td>
|
||||
<td class="ellipsis text-right">{{$root.currency.getConvertion(address.balance)}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong translate>No. Transactions</strong></td>
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><strong translate>Block Reward</strong></td>
|
||||
<td class="text-right text-muted">{{$root.currency.getConvertion(block.reward) || block.reward + ' BTC'}}</td>
|
||||
<td class="text-right text-muted">{{$root.currency.getConvertion(block.reward)}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong translate>Timestamp</strong></td>
|
||||
|
@ -88,7 +88,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<table class="table">
|
||||
<table class="table" style="table-layout: fixed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td> <strong translate>Difficulty</strong></td>
|
||||
|
@ -108,7 +108,21 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td> <strong>Nonce</strong></td>
|
||||
<td class="text-right text-muted">{{block.nonce}}</td>
|
||||
<td class="text-right text-muted">
|
||||
<div class="ellipsis">
|
||||
<span class="btn-copy" clip-copy="block.nonce"></span>
|
||||
<span>{{block.nonce}}</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Solution</strong></td>
|
||||
<td class="text-right text-muted">
|
||||
<div class="ellipsis">
|
||||
<span class="btn-copy" clip-copy="block.solution"></span>
|
||||
<span>{{block.solution}}</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr data-ng-show="block.nextblockhash">
|
||||
<td><strong translate>Next Block</strong></td>
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
<div data-ng-include src="'views/includes/connection.html'"></div>
|
||||
<section data-ng-controller="ChartsController" data-ng-init="list()">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-gray col-gray-fixed">
|
||||
<div class="block-id">
|
||||
<div class="icon-block text-center">
|
||||
<span class="glyphicon glyphicon-stats"></span>
|
||||
<h3><span translate>Charts</span></h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="m20v text-center">
|
||||
<span class="fader" data-ng-repeat='(type, c) in charts'>
|
||||
<a class="btn btn-primary" style="margin-bottom: 3px" href="charts/{{type}}">{{c.name}}<a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-9 col-md-offset-3">
|
||||
<div class="page-header">
|
||||
<h1>
|
||||
<span>{{chartName}}</span>
|
||||
</h1>
|
||||
</div>
|
||||
<div data-ng-show="loading">
|
||||
<span translate>Loading chart...</span> <span class="loader-gif"></span>
|
||||
</div>
|
||||
<div data-ng-show="!loading">
|
||||
<div id="chart"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
<strong translate>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.)
|
||||
Can't connect to zcashd to get live updates from the p2p network. (Tried connecting to zcashd at {{host}}:{{port}} and failed.)
|
||||
</p>
|
||||
|
||||
<p data-ng-show="!serverOnline" translate>
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
<a data-ng-click="setCurrency('USD')" data-ng-class="{active: currency.symbol == 'USD'}">USD</a>
|
||||
</li>
|
||||
<li>
|
||||
<a data-ng-click="setCurrency('BTC')" data-ng-class="{active: currency.symbol == 'BTC'}">BTC</a>
|
||||
<a data-ng-click="setCurrency(currency.netSymbol)" data-ng-class="{active: currency.symbol == currency.netSymbol}">{{currency.netSymbol}}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a data-ng-click="setCurrency('mBTC')" data-ng-class="{active: currency.symbol == 'mBTC'}">mBTC</a>
|
||||
<a data-ng-click="setCurrency('m'+currency.netSymbol)" data-ng-class="{active: currency.symbol == ('m'+currency.netSymbol)}">m{{currency.netSymbol}}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a data-ng-click="setCurrency('bits')" data-ng-class="{active: currency.symbol == 'bits'}">bits</a>
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
<td>
|
||||
<a class="ellipsis" href="tx/{{tx.txid}}">{{tx.txid}}</a>
|
||||
</td>
|
||||
<td class="text-right"><span class="ellipsis">{{$root.currency.getConvertion(tx.valueOut) || tx.valueOut + ' BTC'}}</span></td>
|
||||
<td class="text-right"><span class="ellipsis">{{$root.currency.getConvertion(tx.valueOut)}}</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -62,8 +62,9 @@
|
|||
<div class="col-xs-12 col-md-4 col-gray">
|
||||
<h2 translate>About</h2>
|
||||
<p translate><strong>insight</strong> is an <a href="https://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="https://github.com/bitpay/insight-ui" 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-ui/issues" target="_blank">github issue tracker</a>.</p>
|
||||
target="_blank">open-source Zcash 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 zcashd RPC. Check out the <a href="https://github.com/zcash-hackworks/insight-ui-zcash" 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/zcash/zcash/issues" target="_blank">github issue tracker</a>.</p>
|
||||
<p data-ng-if='currency.testnet'><strong>This explorer is currently showing testnet Zcash!</strong></p>
|
||||
<div id="powered" class="row">
|
||||
<div class="powered-text">
|
||||
<small class="text-muted" translate>Powered by</small>
|
||||
|
|
|
@ -70,11 +70,11 @@
|
|||
</div>
|
||||
<div class="col-xs-12 col-md-4 col-gray">
|
||||
<p translate>
|
||||
Bitcoin comes with a way of signing arbitrary messages.
|
||||
Zcash comes with a way of signing arbitrary messages.
|
||||
</p>
|
||||
<p translate>
|
||||
This form can be used to verify that a message comes from
|
||||
a specific Bitcoin address.
|
||||
a specific Zcash address.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
<thead data-ng-include src="'views/includes/infoStatus.html'"></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td translate>Last Block Hash (Bitcoind)</td>
|
||||
<td translate>Last Block Hash (Zcashd)</td>
|
||||
<td class="text-right ellipsis"><a href="block/{{lastblockhash}}">{{lastblockhash}}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -76,7 +76,7 @@
|
|||
</div> <!-- END OF COL-8 -->
|
||||
|
||||
<div class="col-xs-12 col-md-4 col-gray">
|
||||
<h2 translate>Bitcoin node information</h2>
|
||||
<h2 translate>Zcash 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>
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
</span>
|
||||
<span data-ng-show="!tx.confirmations"
|
||||
class="txvalues txvalues-danger" translate>Unconfirmed Transaction!</span>
|
||||
<span class="txvalues txvalues-primary">{{$root.currency.getConvertion(tx.valueOut) || tx.valueOut + ' BTC' }}</span>
|
||||
<span class="txvalues txvalues-primary">{{$root.currency.getConvertion(tx.valueOut)}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hide_snavbar">
|
||||
|
@ -54,7 +54,7 @@
|
|||
</tr>
|
||||
<tr data-ng-show="tx.fees">
|
||||
<td><strong translate>Fee Rate</strong></td>
|
||||
<td class="text-muted text-right">{{$root.currency.getConvertion((tx.fees * 1000) / tx.size) + ' per kB' || ((tx.fees * 1000) / tx.size) + 'BTC per kB'}}</td>
|
||||
<td class="text-muted text-right">{{$root.currency.getConvertion((tx.fees * 1000) / tx.size) + ' per kB'}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong translate>Received Time</strong></td>
|
||||
|
@ -78,6 +78,29 @@
|
|||
<td><strong>LockTime</strong></td>
|
||||
<td class="text-muted text-right">{{tx.locktime}}</td>
|
||||
</tr>
|
||||
|
||||
<!-- Overwinter START-->
|
||||
<tr data-ng-show="tx.version">
|
||||
<td><strong>Version</strong></td>
|
||||
<td class="text-muted text-right">{{tx.version}}</td>
|
||||
</tr>
|
||||
<tr data-ng-show="tx.fOverwintered">
|
||||
<td><strong>Overwintered</strong></td>
|
||||
<td class="text-muted text-right">{{tx.fOverwintered}}</td>
|
||||
</tr>
|
||||
<tr data-ng-show="tx.fOverwintered">
|
||||
<td><strong>VersionGroupId</strong></td>
|
||||
<td data-ng-show="tx.fOverwintered==true" class="text-muted text-right">
|
||||
0x{{tx.nVersionGroupId.toString(16).padStart(8, "0")}}
|
||||
</td>
|
||||
<td data-ng-show="tx.fOverwintered==false" class="text-muted text-right">N/A</td>
|
||||
</tr>
|
||||
<tr data-ng-show="tx.fOverwintered">
|
||||
<td><strong>Expiry Height</strong></td>
|
||||
<td class="text-muted text-right">{{tx.nExpiryHeight}}</td>
|
||||
</tr>
|
||||
<!-- Overwinter END -->
|
||||
|
||||
<tr data-ng-show="tx.isCoinBase">
|
||||
<td><strong>Coinbase</strong></td>
|
||||
<td class="text-muted text-right">
|
||||
|
|
|
@ -10,36 +10,232 @@
|
|||
</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>
|
||||
<span translate>first seen at</span>
|
||||
<time>{{tx.firstSeenTs * 1000 | date:'medium'}}</time>
|
||||
</div>
|
||||
<div data-ng-show="tx.blocktime && !tx.firstSeenTs">
|
||||
<span translate>mined</span>
|
||||
<span translate>mined</span>
|
||||
<time>{{tx.time * 1000 | date:'medium'}}</time>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row line-mid">
|
||||
<div class="col-md-12">
|
||||
<div class="row" data-ng-if="!tx.bindingSig && (!tx.vjoinsplit || tx.vjoinsplit.length==0)">
|
||||
<div class="col-md-12 transaction-vin-vout">
|
||||
<div class="ellipsis">
|
||||
<span translate>No Shielded Spends and Outputs</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" data-ng-if="(tx.spendDescs && tx.spendDescs.length > 0) || (tx.outputDescs && tx.outputDescs.length > 0)">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body transaction-vin-vout">
|
||||
<div class="col-md-3 col-xs-12">
|
||||
<div data-ng-if="tx.valueBalance < 0">
|
||||
<div class="pull-right btc-value">
|
||||
{{$root.currency.getConvertion(-tx.valueBalance)}}
|
||||
</div>
|
||||
<div class="ellipsis">
|
||||
<span>Public input</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1 col-xs-12">
|
||||
<div class="hidden-xs hidden-sm text-center">
|
||||
<span class="glyphicon glyphicon-chevron-right text-muted"></span>
|
||||
</div>
|
||||
<div class="hidden-md hidden-lg text-center">
|
||||
<span class="glyphicon glyphicon-chevron-down text-muted"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 col-xs-12">
|
||||
<div class="ellipsis text-center">
|
||||
<span>Shielded Spends ({{tx.spendDescs.length}}) --> Shielded Outputs ({{tx.outputDescs.length}})</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1 col-xs-12">
|
||||
<div class="hidden-xs hidden-sm text-center">
|
||||
<span class="glyphicon glyphicon-chevron-right text-muted"></span>
|
||||
</div>
|
||||
<div class="hidden-md hidden-lg text-center">
|
||||
<span class="glyphicon glyphicon-chevron-down text-muted"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 col-xs-12">
|
||||
<div data-ng-if="tx.valueBalance > 0">
|
||||
<div class="pull-right btc-value">
|
||||
{{$root.currency.getConvertion(tx.valueBalance)}}
|
||||
</div>
|
||||
<div class="ellipsis">
|
||||
<span>Public output</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" data-ng-if="(!tx.vjoinsplit || tx.vjoinsplit.length == 0) && !tx.bindingSig">
|
||||
<div class="col-md-12 transaction-vin-vout">
|
||||
<div class="ellipsis">
|
||||
<span translate>No JoinSplits</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" data-ng-if="tx.vjoinsplit && tx.vjoinsplit.length != 0">
|
||||
|
||||
<!-- <<< Simple view -->
|
||||
<div data-ng-if="!itemsExpanded" data-ng-init="currentJSNoExpanded=0; sizeJSNoExpanded=5">
|
||||
<div class="panel panel-default" data-ng-repeat="vjs in tx.vjoinsplit| startFrom:currentJSNoExpanded*sizeJSNoExpanded | limitTo:sizeJSNoExpanded">
|
||||
<div class="panel-body transaction-vin-vout">
|
||||
<div class="col-md-3 col-xs-12">
|
||||
<div class="pull-right btc-value">
|
||||
{{$root.currency.getConvertion(vjs.vpub_old)}}
|
||||
</div>
|
||||
<div class="ellipsis">
|
||||
<span>Public input</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1 col-xs-12">
|
||||
<div class="hidden-xs hidden-sm text-center">
|
||||
<span class="glyphicon glyphicon-chevron-right text-muted"></span>
|
||||
</div>
|
||||
<div class="hidden-md hidden-lg text-center">
|
||||
<span class="glyphicon glyphicon-chevron-down text-muted"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 col-xs-12">
|
||||
<div class="ellipsis text-center">
|
||||
<span>JoinSplit [{{vjs.n}}]</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1 col-xs-12">
|
||||
<div class="hidden-xs hidden-sm text-center">
|
||||
<span class="glyphicon glyphicon-chevron-right text-muted"></span>
|
||||
</div>
|
||||
<div class="hidden-md hidden-lg text-center">
|
||||
<span class="glyphicon glyphicon-chevron-down text-muted"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 col-xs-12">
|
||||
<div class="pull-right btc-value">
|
||||
{{$root.currency.getConvertion(vjs.vpub_new)}}
|
||||
</div>
|
||||
<div class="ellipsis">
|
||||
<span>Public output</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="showmore_collapse text-left" data-ng-show="tx.vjoinsplit.length > 5" data-ng-class="{ 'hidden': itemsExpanded}">
|
||||
<button type="button" class="btn btn-info btn-sm" ng-hide="sizeJSNoExpanded != tx.vjoinsplit.length" ng-click="currentJSNoExpanded=0; sizeJSNoExpanded=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="currentJSNoExpanded >= tx.vjoinsplit.length/sizeJSNoExpanded - 1" ng-click="currentJSNoExpanded=0; sizeJSNoExpanded=tx.vjoinsplit.length"><i class="glyphicon glyphicon-chevron-down"></i>
|
||||
<span translate>Show more</span></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <<< Full view -->
|
||||
<div data-ng-if="itemsExpanded" data-ng-init="currentJSExpanded=0; sizeJSExpanded=(from_vjs) ? tx.vjoinsplit.length : 5; fromVjsCollapsed=(from_vjs)">
|
||||
<div data-ng-repeat="vjs in tx.vjoinsplit| startFrom:currentJSExpanded*sizeJSExpanded | limitTo:sizeJSExpanded" data-ng-if="fromVjsCollapsed ? v_index == vjs.n : 1">
|
||||
<div class="panel panel-default transaction-vin-vout">
|
||||
<div class="panel-body">
|
||||
<div class="col-md-3 col-xs-12">
|
||||
<div class="pull-right btc-value">
|
||||
{{$root.currency.getConvertion(vjs.vpub_old)}}
|
||||
</div>
|
||||
<div class="ellipsis">
|
||||
<span translate>Public input</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1 col-xs-12">
|
||||
<div class="hidden-xs hidden-sm text-center">
|
||||
<span class="glyphicon glyphicon-chevron-right text-muted"></span>
|
||||
</div>
|
||||
<div class="hidden-md hidden-lg text-center">
|
||||
<span class="glyphicon glyphicon-chevron-down text-muted"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 col-xs-12">
|
||||
<div class="ellipsis text-center">
|
||||
<span>JoinSplit [{{vjs.n}}]</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1 col-xs-12">
|
||||
<div class="hidden-xs hidden-sm text-center">
|
||||
<span class="glyphicon glyphicon-chevron-right text-muted"></span>
|
||||
</div>
|
||||
<div class="hidden-md hidden-lg text-center">
|
||||
<span class="glyphicon glyphicon-chevron-down text-muted"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 col-xs-12">
|
||||
<div class="pull-right btc-value">
|
||||
{{$root.currency.getConvertion(vjs.vpub_new)}}
|
||||
</div>
|
||||
<div class="ellipsis">
|
||||
<span translate>Public output</span>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- END OF PANEL BODY -->
|
||||
</div> <!-- END OF PANEL-DEFAULT -->
|
||||
</div>
|
||||
<div class="text-left">
|
||||
<button type="button" class="btn btn-default btn-sm" data-ng-show="(from_vjs) && tx.vjoinsplit.length > 1" data-ng-disabled="fromVjsCollapsed" data-ng-click="currentJSExpanded=0; sizeJSExpanded=tx.vjoinsplit.length;fromVjsCollapsed=1">
|
||||
<span translate>Show input</span> #{{ v_index }}</button>
|
||||
<button type="button" class="btn btn-default btn-sm" data-ng-show="(from_vjs) && tx.vjoinsplit.length > 1" data-ng-disabled="!fromVinCollapsed" data-ng-click="currentJSExpanded=0; sizeJSExpanded=tx.vjoinsplit.length;fromVjsCollapsed=0">
|
||||
<span translate>Show all</span></button>
|
||||
</div>
|
||||
<div class="showmore_collapse text-left" data-ng-show="tx.vjoinsplit.length > 5 && !fromVjsCollapsed" data-ng-class="{ 'hidden': !itemsExpanded}">
|
||||
<button type="button" class="btn btn-info btn-sm" ng-hide="sizeJSExpanded != tx.vjoinsplit.length" ng-click="currentJSExpanded=0; sizeJSExpanded=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="currentJSExpanded >= tx.vjoinsplit.length/sizeJSExpanded - 1" ng-click="currentJSExpanded=0; sizeJSExpanded=tx.vjoinsplit.length"><i class="glyphicon glyphicon-chevron-down"></i>
|
||||
<span translate>Show more</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="hidden-xs hidden-sm text-center">
|
||||
<span class="lead glyphicon glyphicon-chevron-up text-muted"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="hidden-xs hidden-sm text-center">
|
||||
<span class="lead glyphicon glyphicon-chevron-down text-muted"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row line-mid">
|
||||
<div class="col-md-5">
|
||||
<div class="row" data-ng-if="tx.isCoinBase">
|
||||
<div class="row" data-ng-if="tx.vin.length == 0">
|
||||
<div class="col-md-12 transaction-vin-vout">
|
||||
<div class="ellipsis">
|
||||
<span translate>No Inputs</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" data-ng-if="tx.vin.length != 0 && 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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" data-ng-if="!tx.isCoinBase">
|
||||
<div class="row" data-ng-if="tx.vin.length != 0 && !tx.isCoinBase">
|
||||
|
||||
<!-- <<< Simple view -->
|
||||
<div data-ng-if="!itemsExpanded" data-ng-init="currentInNoExpanded=0; sizeInNoExpanded=5">
|
||||
<div class="panel panel-default" data-ng-repeat="vin in tx.vinSimple| startFrom:currentInNoExpanded*sizeInNoExpanded | limitTo:sizeInNoExpanded">
|
||||
<div class="panel-body transaction-vin-vout">
|
||||
<div class="pull-right btc-value" data-ng-class="{'text-danger': $root.currentAddr == vin.addr}">
|
||||
{{$root.currency.getConvertion(vin.value) || vin.value + ' BTC'}}
|
||||
{{$root.currency.getConvertion(vin.value)}}
|
||||
</div>
|
||||
<div class="ellipsis">
|
||||
<span data-ng-show="vin.notAddr">{{vin.addr}}</span>
|
||||
<span class="text-muted" title="Current Bitcoin Address" data-ng-show="vin.addr == $root.currentAddr">{{vin.addr}}</span>
|
||||
<span class="text-muted" title="Current Zcash Address" data-ng-show="vin.addr == $root.currentAddr">{{vin.addr}}</span>
|
||||
<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>
|
||||
|
@ -68,7 +264,7 @@
|
|||
<div class="panel panel-default transaction-vin-vout">
|
||||
<div class="panel-body">
|
||||
<div class="pull-right btc-value">
|
||||
{{$root.currency.getConvertion(vin.value) || vin.value + ' BTC'}}
|
||||
{{$root.currency.getConvertion(vin.value)}}
|
||||
</div>
|
||||
<div class="ellipsis">
|
||||
<a class="glyphicon glyphicon-chevron-right" href="tx/{{vin.txid}}/>/{{vin.vout}}" title="Outpoint: {{vin.txid}},{{vin.vout}}"></a>
|
||||
|
@ -123,21 +319,28 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="row">
|
||||
<div class="row" data-ng-if="tx.vout.length == 0">
|
||||
<div class="col-md-12 transaction-vin-vout">
|
||||
<div class="ellipsis">
|
||||
<span translate>No Outputs</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" data-ng-if="tx.vout.length != 0">
|
||||
<!-- Simple view >>> -->
|
||||
<div data-ng-if="!itemsExpanded" data-ng-init="currentOutNoExpanded=0; sizeOutNoExpanded=5">
|
||||
<div data-ng-repeat="vout in tx.voutSimple| startFrom:currentOutNoExpanded*sizeOutNoExpanded | limitTo:sizeOutNoExpanded">
|
||||
<div class="transaction-vin-vout panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div class="pull-right btc-value" data-ng-class="{'text-success': $root.currentAddr == vout.addr}">
|
||||
{{$root.currency.getConvertion(vout.value) || vout.value + ' BTC' }}
|
||||
{{$root.currency.getConvertion(vout.value)}}
|
||||
<span class="text-danger" data-ng-show="vout.isSpent" tooltip="Output is spent" tooltip-placement="left">(S)</span>
|
||||
<span class="text-success" data-ng-show="!vout.isSpent" tooltip="Output is unspent" tooltip-placement="left">(U)</span>
|
||||
</div>
|
||||
|
||||
<div class="ellipsis">
|
||||
<span data-ng-show="vout.notAddr">{{vout.addr}}</span>
|
||||
<span class="text-muted" title="Current Bitcoin Address" data-ng-show="address == $root.currentAddr" data-ng-repeat="address in vout.addr.split(',')">{{vout.addr}}</span>
|
||||
<span class="text-muted" title="Current Zcash Address" data-ng-show="address == $root.currentAddr" data-ng-repeat="address in vout.addr.split(',')">{{vout.addr}}</span>
|
||||
<a href="address/{{address}}" data-ng-show="!vout.notAddr && address != $root.currentAddr" data-ng-repeat="address in vout.addr.split(',')">{{address}}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -157,7 +360,7 @@
|
|||
<div class="panel panel-default transaction-vin-vout">
|
||||
<div class="panel-body">
|
||||
<div class="pull-right btc-value">
|
||||
<span>{{$root.currency.getConvertion(vout.value) || vout.value + ' BTC'}}
|
||||
<span>{{$root.currency.getConvertion(vout.value)}}
|
||||
<span class="text-success" data-ng-show="!vout.spentTxId" tooltip="Output is unspent" tooltip-placement="left">(U)</span>
|
||||
<a class="glyphicon glyphicon-chevron-right" data-ng-show="vout.spentTxId" href="tx/{{vout.spentTxId}}/</{{vout.spentIndex}}" title="Spent at: {{vout.spentTxId}},{{vout.spentIndex}}"></a>
|
||||
</span>
|
||||
|
@ -200,12 +403,12 @@
|
|||
<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>
|
||||
class="txvalues txvalues-default"><span translate>Fee</span>: {{$root.currency.getConvertion(tx.fees)}} </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 class="txvalues txvalues-primary">{{$root.currency.getConvertion(tx.valueOut) || tx.valueOut + ' BTC' }}</span>
|
||||
<span class="txvalues txvalues-primary">{{$root.currency.getConvertion(tx.valueOut)}}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
<div class="col-xs-12 col-md-4 col-gray">
|
||||
<p translate>
|
||||
This form can be used to broadcast a raw transaction in hex format over
|
||||
the Bitcoin network.
|
||||
the Zcash network.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue