diff --git a/app/package.json b/app/package.json
index ef5ad15..bb7407e 100644
--- a/app/package.json
+++ b/app/package.json
@@ -27,6 +27,7 @@
"@ionic-native/splash-screen": "3.10.2",
"@ionic-native/status-bar": "3.10.2",
"@ionic/storage": "2.0.1",
+ "angular2-moment": "^1.6.0",
"angular2-qrcode": "^2.0.1",
"ionic-angular": "3.4.2",
"ionicons": "3.0.0",
diff --git a/app/src/app/app.component.ts b/app/src/app/app.component.ts
index 99dcb4b..f089c75 100644
--- a/app/src/app/app.component.ts
+++ b/app/src/app/app.component.ts
@@ -32,7 +32,7 @@ export class InsightApp {
this.splash = splash;
this.status = status;
- this.rootPage = BlocksPage;
+ this.rootPage = HomePage;
this.initializeApp();
// set our app's pages
diff --git a/app/src/app/app.module.ts b/app/src/app/app.module.ts
index 9901a7b..7d0c351 100644
--- a/app/src/app/app.module.ts
+++ b/app/src/app/app.module.ts
@@ -9,6 +9,7 @@ import { PagesModule, HomePage, BlocksPage, BroadcastTxPage, NodeStatusPage, Ver
import { BlocksService, StorageService } from '../services';
import { ApiProvider } from '../providers/api/api';
import { CurrencyProvider } from '../providers/currency/currency';
+import { BlocksProvider } from '../providers/blocks/blocks';
@NgModule({
declarations: [
@@ -36,7 +37,8 @@ import { CurrencyProvider } from '../providers/currency/currency';
BlocksService,
{provide: ErrorHandler, useClass: IonicErrorHandler},
ApiProvider,
- CurrencyProvider
+ CurrencyProvider,
+ BlocksProvider
]
})
diff --git a/app/src/components/latest-blocks/latest-blocks.html b/app/src/components/latest-blocks/latest-blocks.html
index 5d363cc..6595647 100644
--- a/app/src/components/latest-blocks/latest-blocks.html
+++ b/app/src/components/latest-blocks/latest-blocks.html
@@ -1,4 +1,27 @@
{{text}}
+
+
+
+ Height
+ Age
+ Transactions
+ Size
+
+
+
+ {{block.height}}
+
+
+ {{ block.time | amFromUnix | amTimeAgo }}
+
+
+ {{block.txlength}}
+
+
+ {{ block.size }}
+
+
+
diff --git a/app/src/components/latest-blocks/latest-blocks.module.ts b/app/src/components/latest-blocks/latest-blocks.module.ts
index 535f515..f2086b9 100644
--- a/app/src/components/latest-blocks/latest-blocks.module.ts
+++ b/app/src/components/latest-blocks/latest-blocks.module.ts
@@ -1,13 +1,15 @@
import { NgModule } from '@angular/core';
import { IonicModule } from 'ionic-angular';
import { LatestBlocksComponent } from './latest-blocks';
+import { MomentModule } from 'angular2-moment';
@NgModule({
declarations: [
LatestBlocksComponent
],
imports: [
- IonicModule
+ IonicModule,
+ MomentModule
],
exports: [
LatestBlocksComponent
diff --git a/app/src/components/latest-blocks/latest-blocks.ts b/app/src/components/latest-blocks/latest-blocks.ts
index db25c56..cb7ae42 100644
--- a/app/src/components/latest-blocks/latest-blocks.ts
+++ b/app/src/components/latest-blocks/latest-blocks.ts
@@ -1,4 +1,5 @@
import { Component } from '@angular/core';
+import { BlocksProvider } from '../../providers/blocks/blocks';
/**
* Generated class for the LatestBlocksComponent component.
@@ -13,10 +14,29 @@ import { Component } from '@angular/core';
export class LatestBlocksComponent {
private text: string;
+ public blocks: Array = [];
- constructor() {
- console.log('Hello LatestBlocksComponent Component');
+ constructor(private blocksProvider: BlocksProvider) {
this.text = 'Hello Latest Blocks';
+
+ blocksProvider.getBlocks().subscribe(
+ (data) => {
+ this.blocks = JSON.parse(data['_body']).blocks;
+ console.log('blocks', this.blocks);
+ },
+ (err) => {
+ console.log('err', err);
+ }
+ );
}
+ public goToBlock(hash: string): void {
+ console.log('go to', hash);
+ }
+
+ public getBlocks(num: number = 10): Array {
+ /* tslint:disable:no-unused-variable */
+ return this.blocks.filter((block, index) => index < num);
+ /* tslint:enable:no-unused-variable */
+ }
}
diff --git a/app/src/providers/blocks/blocks.ts b/app/src/providers/blocks/blocks.ts
new file mode 100644
index 0000000..6ab163c
--- /dev/null
+++ b/app/src/providers/blocks/blocks.ts
@@ -0,0 +1,23 @@
+import { Injectable } from '@angular/core';
+import { Http } from '@angular/http';
+import 'rxjs/add/operator/map';
+import { ApiProvider } from '../../providers/api/api';
+
+/*
+ Generated class for the BlocksProvider provider.
+
+ See https://angular.io/docs/ts/latest/guide/dependency-injection.html
+ for more info on providers and Angular DI.
+*/
+@Injectable()
+export class BlocksProvider {
+
+ constructor(public http: Http, private api: ApiProvider) {
+ console.log('Hello BlocksProvider Provider');
+ }
+
+ public getBlocks(): any {
+ return this.http.get(this.api.apiPrefix + 'blocks');
+ }
+
+}
diff --git a/app/yarn.lock b/app/yarn.lock
index 53191d9..575bfc5 100644
--- a/app/yarn.lock
+++ b/app/yarn.lock
@@ -200,6 +200,39 @@
uuid "^3.0.1"
wrap-ansi "^3.0.1"
+"@ionic/cli-utils@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@ionic/cli-utils/-/cli-utils-1.9.1.tgz#a0118819cb8de1f3bc4bc5b401e5b61d7f41d5b5"
+ dependencies:
+ "@types/gulp" "^3.8.33"
+ archiver "^2.0.0"
+ chalk "^2.0.0"
+ chokidar "^1.7.0"
+ ci-info "^1.0.0"
+ cross-spawn "^5.1.0"
+ dargs "^5.1.0"
+ diff "^3.3.0"
+ elementtree "^0.1.7"
+ express "^4.15.4"
+ inquirer "^3.2.1"
+ leek "0.0.24"
+ lodash "^4.17.4"
+ minimist "^1.2.0"
+ ncp "^2.0.0"
+ opn "^5.1.0"
+ proxy-middleware "^0.15.0"
+ semver "^5.4.1"
+ slice-ansi "^1.0.0"
+ ssh-config "^1.0.1"
+ string-width "^2.1.1"
+ strip-ansi "^4.0.0"
+ superagent "^3.5.2"
+ tar "^2.2.1"
+ tiny-lr "^1.0.5"
+ tslib "^1.7.1"
+ uuid "^3.0.1"
+ wrap-ansi "^3.0.1"
+
"@ionic/storage@2.0.1":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@ionic/storage/-/storage-2.0.1.tgz#bb1a8c276007d008d7acdda426b56065b0fd3c0b"
@@ -221,6 +254,14 @@
magic-string "^0.19.0"
source-map "^0.5.6"
+"@types/gulp@^3.8.33":
+ version "3.8.33"
+ resolved "https://registry.yarnpkg.com/@types/gulp/-/gulp-3.8.33.tgz#b1b076820738c9c4eb7808cd926bff1683e1c2ab"
+ dependencies:
+ "@types/node" "*"
+ "@types/orchestrator" "*"
+ "@types/vinyl" "*"
+
"@types/jasmine@2.5.41":
version "2.5.41"
resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.5.41.tgz#d5e86161a0af80d52062b310a33ed65b051a0713"
@@ -229,6 +270,10 @@
version "0.0.30"
resolved "https://registry.yarnpkg.com/@types/localforage/-/localforage-0.0.30.tgz#3d60a6bf6dda38e3f8a469611598379f1f649509"
+"@types/node@*":
+ version "8.0.24"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.24.tgz#06c580084d9add1fb40c1510ef0b448961246fb1"
+
"@types/node@7.0.4":
version "7.0.4"
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.4.tgz#9aabc135979ded383325749f508894c662948c8b"
@@ -237,6 +282,17 @@
version "6.0.79"
resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.79.tgz#5efe7d4a6d8c453c7e9eaf55d931f4a22fac5169"
+"@types/orchestrator@*":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@types/orchestrator/-/orchestrator-0.3.0.tgz#bf84a1699c9330d4fe89cd81263e8fc09fb32978"
+ dependencies:
+ "@types/node" "*"
+ "@types/q" "^0"
+
+"@types/q@^0":
+ version "0.0.36"
+ resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.36.tgz#97d786389641bcbd0e22bfc729a534175976371d"
+
"@types/q@^0.0.32":
version "0.0.32"
resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5"
@@ -245,6 +301,12 @@
version "2.53.42"
resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-2.53.42.tgz#74cb77fb6052edaff2a8984ddafd88d419f25cac"
+"@types/vinyl@*":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@types/vinyl/-/vinyl-2.0.0.tgz#fd213bf7f4136dde21fe1895500b12c186f8c268"
+ dependencies:
+ "@types/node" "*"
+
abbrev@1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
@@ -335,6 +397,12 @@ amdefine@>=0.0.4:
version "1.0.1"
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
+angular2-moment@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/angular2-moment/-/angular2-moment-1.6.0.tgz#2be11b63d9cbdff8fee06f575c1beee2d863d62b"
+ dependencies:
+ moment "^2.16.0"
+
angular2-qrcode@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/angular2-qrcode/-/angular2-qrcode-2.0.1.tgz#1b4e65c302694b5078ca06f71138f7e4367754dc"
@@ -1256,7 +1324,7 @@ chokidar@1.6.1:
optionalDependencies:
fsevents "^1.0.0"
-chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0, chokidar@^1.6.1:
+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0, chokidar@^1.6.1, chokidar@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
dependencies:
@@ -1800,7 +1868,7 @@ date-now@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
-debug@*, debug@2, debug@2.6.8, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.6.3, debug@^2.6.8:
+debug@*, debug@2, debug@2.6.8, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.6.3, debug@^2.6.8, debug@~2.6.7:
version "2.6.8"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
dependencies:
@@ -1880,6 +1948,10 @@ depd@1.1.0, depd@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3"
+depd@1.1.1, depd@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
+
des.js@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
@@ -1917,6 +1989,10 @@ diff@^3.1.0, diff@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
+diff@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.0.tgz#056695150d7aa93237ca7e378ac3b1682b7963b9"
+
diffie-hellman@^5.0.0:
version "5.0.2"
resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
@@ -2327,6 +2403,39 @@ express@^4.13.3:
utils-merge "1.0.0"
vary "~1.1.1"
+express@^4.15.4:
+ version "4.15.4"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.15.4.tgz#032e2253489cf8fce02666beca3d11ed7a2daed1"
+ dependencies:
+ accepts "~1.3.3"
+ array-flatten "1.1.1"
+ content-disposition "0.5.2"
+ content-type "~1.0.2"
+ cookie "0.3.1"
+ cookie-signature "1.0.6"
+ debug "2.6.8"
+ depd "~1.1.1"
+ encodeurl "~1.0.1"
+ escape-html "~1.0.3"
+ etag "~1.8.0"
+ finalhandler "~1.0.4"
+ fresh "0.5.0"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "~2.3.0"
+ parseurl "~1.3.1"
+ path-to-regexp "0.1.7"
+ proxy-addr "~1.1.5"
+ qs "6.5.0"
+ range-parser "~1.2.0"
+ send "0.15.4"
+ serve-static "1.12.4"
+ setprototypeof "1.0.3"
+ statuses "~1.3.1"
+ type-is "~1.6.15"
+ utils-merge "1.0.0"
+ vary "~1.1.1"
+
extend@3, extend@^3.0.0, extend@~3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
@@ -2446,6 +2555,18 @@ finalhandler@1.0.3, finalhandler@~1.0.3:
statuses "~1.3.1"
unpipe "~1.0.0"
+finalhandler@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.4.tgz#18574f2e7c4b98b8ae3b230c21f201f31bdb3fb7"
+ dependencies:
+ debug "2.6.8"
+ encodeurl "~1.0.1"
+ escape-html "~1.0.3"
+ on-finished "~2.3.0"
+ parseurl "~1.3.1"
+ statuses "~1.3.1"
+ unpipe "~1.0.0"
+
find-up@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
@@ -2913,6 +3034,15 @@ http-errors@~1.6.1:
setprototypeof "1.0.3"
statuses ">= 1.3.1 < 2"
+http-errors@~1.6.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
+ dependencies:
+ depd "1.1.1"
+ inherits "2.0.3"
+ setprototypeof "1.0.3"
+ statuses ">= 1.3.1 < 2"
+
http-proxy-middleware@~0.17.4:
version "0.17.4"
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
@@ -3093,20 +3223,16 @@ ionic-angular@3.4.2:
version "3.4.2"
resolved "https://registry.yarnpkg.com/ionic-angular/-/ionic-angular-3.4.2.tgz#762631f1af78a5ae1c0aa0f4d23b31435142abe1"
-ionic@3.7.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/ionic/-/ionic-3.7.0.tgz#a3c32174c6d5455c3bc74b6b9152e0f97dce23c8"
+ionic@3.9.1:
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/ionic/-/ionic-3.9.1.tgz#be50eea2f55bad40574772ecaeaf5a460fd16330"
dependencies:
- "@ionic/cli-utils" "1.7.0"
+ "@ionic/cli-utils" "1.9.1"
chalk "^2.0.0"
- diff "^3.2.0"
- minimist "^1.2.0"
opn "^5.1.0"
os-name "^2.0.1"
rimraf "^2.6.1"
semver "^5.3.0"
- ssh-config "^1.0.1"
- tar "^2.2.1"
tslib "^1.7.1"
ionicons@3.0.0:
@@ -3121,6 +3247,10 @@ ipaddr.js@1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec"
+ipaddr.js@1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0"
+
is-absolute-url@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
@@ -4106,6 +4236,10 @@ mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkd
dependencies:
minimist "0.0.8"
+moment@^2.16.0:
+ version "2.18.1"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"
+
ms@0.7.1:
version "0.7.1"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
@@ -5004,7 +5138,14 @@ proxy-addr@~1.1.3, proxy-addr@~1.1.4:
forwarded "~0.1.0"
ipaddr.js "1.3.0"
-proxy-middleware@0.15.0:
+proxy-addr@~1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918"
+ dependencies:
+ forwarded "~0.1.0"
+ ipaddr.js "1.4.0"
+
+proxy-middleware@0.15.0, proxy-middleware@^0.15.0:
version "0.15.0"
resolved "https://registry.yarnpkg.com/proxy-middleware/-/proxy-middleware-0.15.0.tgz#a3fdf1befb730f951965872ac2f6074c61477a56"
@@ -5060,7 +5201,7 @@ qs@6.4.0, qs@~6.4.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
-qs@^6.1.0, qs@^6.2.0:
+qs@6.5.0, qs@^6.1.0, qs@^6.2.0, qs@^6.4.0:
version "6.5.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49"
@@ -5645,6 +5786,24 @@ send@0.15.3:
range-parser "~1.2.0"
statuses "~1.3.1"
+send@0.15.4:
+ version "0.15.4"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.15.4.tgz#985faa3e284b0273c793364a35c6737bd93905b9"
+ dependencies:
+ debug "2.6.8"
+ depd "~1.1.1"
+ destroy "~1.0.4"
+ encodeurl "~1.0.1"
+ escape-html "~1.0.3"
+ etag "~1.8.0"
+ fresh "0.5.0"
+ http-errors "~1.6.2"
+ mime "1.3.4"
+ ms "2.0.0"
+ on-finished "~2.3.0"
+ range-parser "~1.2.0"
+ statuses "~1.3.1"
+
serve-index@^1.7.2:
version "1.9.0"
resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.0.tgz#d2b280fc560d616ee81b48bf0fa82abed2485ce7"
@@ -5666,6 +5825,15 @@ serve-static@1.12.3:
parseurl "~1.3.1"
send "0.15.3"
+serve-static@1.12.4:
+ version "1.12.4"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.4.tgz#9b6aa98eeb7253c4eedc4c1f6fdbca609901a961"
+ dependencies:
+ encodeurl "~1.0.1"
+ escape-html "~1.0.3"
+ parseurl "~1.3.1"
+ send "0.15.4"
+
serve-static@~1.11.2:
version "1.11.2"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.2.tgz#2cf9889bd4435a320cc36895c9aa57bd662e6ac7"
@@ -6203,6 +6371,17 @@ tiny-lr@1.0.3:
object-assign "^4.1.0"
qs "^6.2.0"
+tiny-lr@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.0.5.tgz#21f40bf84ebd1f853056680375eef1670c334112"
+ dependencies:
+ body "^5.1.0"
+ debug "~2.6.7"
+ faye-websocket "~0.10.0"
+ livereload-js "^2.2.2"
+ object-assign "^4.1.0"
+ qs "^6.4.0"
+
tmp@0.0.24:
version "0.0.24"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12"