Merge pull request #800 from SonicWizard/next
Added Home page with latest blocks and latest transactions (placeholder)
This commit is contained in:
commit
a66573dbc1
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +1,4 @@
|
|||||||
node_modules
|
node_modules
|
||||||
package-lock.json
|
package-lock.json
|
||||||
*.log
|
*.log
|
||||||
|
.DS_Store
|
||||||
|
|||||||
@ -7,17 +7,13 @@ describe('InsightApp', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should have a title', () => {
|
it('should have a title', () => {
|
||||||
expect(browser.getTitle()).toEqual('Blocks');
|
expect(browser.getTitle()).toEqual('Home');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should have {nav}', () => {
|
it('should have {nav}', () => {
|
||||||
expect(element(by.css('ion-navbar')).isPresent()).toEqual(true);
|
expect(element(by.css('ion-navbar')).isPresent()).toEqual(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should have correct nav text for Home', () => {
|
|
||||||
expect(element(by.css('ion-navbar:first-child')).getText()).toContain('Blocks');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('has a menu button that displays the left menu', () => {
|
it('has a menu button that displays the left menu', () => {
|
||||||
element(by.css('.bar-button-menutoggle')).click()
|
element(by.css('.bar-button-menutoggle')).click()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
@ -26,11 +22,11 @@ describe('InsightApp', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('the left menu has a link with title Blocks', () => {
|
it('the left menu has a link with title Home', () => {
|
||||||
element(by.css('.bar-button-menutoggle')).click()
|
element(by.css('.bar-button-menutoggle')).click()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
browser.driver.sleep(2000); // wait for the animation
|
browser.driver.sleep(2000); // wait for the animation
|
||||||
expect(element.all(by.css('ion-label')).first().getText()).toEqual('Blocks');
|
expect(element.all(by.css('ion-label')).first().getText()).toEqual('Home');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -10,7 +10,7 @@ describe('BroadcastTxPage', () => {
|
|||||||
element(by.css('.bar-button-menutoggle')).click().then(() => {
|
element(by.css('.bar-button-menutoggle')).click().then(() => {
|
||||||
browser.driver.sleep(2000); // wait for the animation
|
browser.driver.sleep(2000); // wait for the animation
|
||||||
element.all(by.className('input-wrapper')).then((items) => {
|
element.all(by.className('input-wrapper')).then((items) => {
|
||||||
items[1].click();
|
items[2].click();
|
||||||
browser.driver.sleep(2000); // wait for the animation
|
browser.driver.sleep(2000); // wait for the animation
|
||||||
let theElem = element.all(by.css('ion-label')).first;
|
let theElem = element.all(by.css('ion-label')).first;
|
||||||
console.log(theElem);
|
console.log(theElem);
|
||||||
|
|||||||
@ -2,5 +2,7 @@
|
|||||||
"name": "insight-ui",
|
"name": "insight-ui",
|
||||||
"app_id": "",
|
"app_id": "",
|
||||||
"type": "ionic-angular",
|
"type": "ionic-angular",
|
||||||
"integrations": {}
|
"integrations": {
|
||||||
|
"cordova": {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,7 @@
|
|||||||
"@ionic-native/splash-screen": "3.10.2",
|
"@ionic-native/splash-screen": "3.10.2",
|
||||||
"@ionic-native/status-bar": "3.10.2",
|
"@ionic-native/status-bar": "3.10.2",
|
||||||
"@ionic/storage": "2.0.1",
|
"@ionic/storage": "2.0.1",
|
||||||
|
"angular2-moment": "^1.6.0",
|
||||||
"angular2-qrcode": "^2.0.1",
|
"angular2-qrcode": "^2.0.1",
|
||||||
"ionic-angular": "3.4.2",
|
"ionic-angular": "3.4.2",
|
||||||
"ionicons": "3.0.0",
|
"ionicons": "3.0.0",
|
||||||
@ -42,7 +43,7 @@
|
|||||||
"@types/jasmine": "2.5.41",
|
"@types/jasmine": "2.5.41",
|
||||||
"@types/node": "7.0.4",
|
"@types/node": "7.0.4",
|
||||||
"codecov": "2.2.0",
|
"codecov": "2.2.0",
|
||||||
"ionic": "3.8.1",
|
"ionic": "3.9.1",
|
||||||
"jasmine-core": "2.5.2",
|
"jasmine-core": "2.5.2",
|
||||||
"jasmine-spec-reporter": "3.2.0",
|
"jasmine-spec-reporter": "3.2.0",
|
||||||
"karma": "1.4.1",
|
"karma": "1.4.1",
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import { Platform, MenuController, Nav } from 'ionic-angular';
|
|||||||
import { StatusBar } from '@ionic-native/status-bar';
|
import { StatusBar } from '@ionic-native/status-bar';
|
||||||
import { SplashScreen } from '@ionic-native/splash-screen';
|
import { SplashScreen } from '@ionic-native/splash-screen';
|
||||||
import {
|
import {
|
||||||
|
HomePage,
|
||||||
BlocksPage,
|
BlocksPage,
|
||||||
BroadcastTxPage,
|
BroadcastTxPage,
|
||||||
NodeStatusPage,
|
NodeStatusPage,
|
||||||
@ -31,11 +32,12 @@ export class InsightApp {
|
|||||||
this.splash = splash;
|
this.splash = splash;
|
||||||
this.status = status;
|
this.status = status;
|
||||||
|
|
||||||
this.rootPage = BlocksPage;
|
this.rootPage = HomePage;
|
||||||
this.initializeApp();
|
this.initializeApp();
|
||||||
|
|
||||||
// set our app's pages
|
// set our app's pages
|
||||||
this.pages = [
|
this.pages = [
|
||||||
|
{ title: 'Home', component: HomePage },
|
||||||
{ title: 'Blocks', component: BlocksPage },
|
{ title: 'Blocks', component: BlocksPage },
|
||||||
{ title: 'Broadcast Transaction', component: BroadcastTxPage },
|
{ title: 'Broadcast Transaction', component: BroadcastTxPage },
|
||||||
{ title: 'Verify Signed Message', component: VerifyMessagePage },
|
{ title: 'Verify Signed Message', component: VerifyMessagePage },
|
||||||
|
|||||||
@ -5,10 +5,11 @@ import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
|
|||||||
import { StatusBar } from '@ionic-native/status-bar';
|
import { StatusBar } from '@ionic-native/status-bar';
|
||||||
import { SplashScreen } from '@ionic-native/splash-screen';
|
import { SplashScreen } from '@ionic-native/splash-screen';
|
||||||
import { InsightApp } from './app.component';
|
import { InsightApp } from './app.component';
|
||||||
import { PagesModule, BlocksPage, BroadcastTxPage, NodeStatusPage, VerifyMessagePage } from '../pages';
|
import { PagesModule, HomePage, BlocksPage, BroadcastTxPage, NodeStatusPage, VerifyMessagePage } from '../pages';
|
||||||
import { BlocksService, StorageService } from '../services';
|
import { BlocksService, StorageService } from '../services';
|
||||||
import { ApiProvider } from '../providers/api/api';
|
import { ApiProvider } from '../providers/api/api';
|
||||||
import { CurrencyProvider } from '../providers/currency/currency';
|
import { CurrencyProvider } from '../providers/currency/currency';
|
||||||
|
import { BlocksProvider } from '../providers/blocks/blocks';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
@ -23,6 +24,7 @@ import { CurrencyProvider } from '../providers/currency/currency';
|
|||||||
bootstrap: [IonicApp],
|
bootstrap: [IonicApp],
|
||||||
entryComponents: [
|
entryComponents: [
|
||||||
InsightApp,
|
InsightApp,
|
||||||
|
HomePage,
|
||||||
BlocksPage,
|
BlocksPage,
|
||||||
BroadcastTxPage,
|
BroadcastTxPage,
|
||||||
NodeStatusPage,
|
NodeStatusPage,
|
||||||
@ -35,7 +37,8 @@ import { CurrencyProvider } from '../providers/currency/currency';
|
|||||||
BlocksService,
|
BlocksService,
|
||||||
{provide: ErrorHandler, useClass: IonicErrorHandler},
|
{provide: ErrorHandler, useClass: IonicErrorHandler},
|
||||||
ApiProvider,
|
ApiProvider,
|
||||||
CurrencyProvider
|
CurrencyProvider,
|
||||||
|
BlocksProvider
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
BIN
app/src/assets/img/angularjs.png
Normal file
BIN
app/src/assets/img/angularjs.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
29
app/src/assets/img/bitcore.svg
Normal file
29
app/src/assets/img/bitcore.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 15 KiB |
BIN
app/src/assets/img/leveldb.png
Normal file
BIN
app/src/assets/img/leveldb.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
BIN
app/src/assets/img/nodejs.png
Normal file
BIN
app/src/assets/img/nodejs.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
45
app/src/components/latest-blocks/latest-blocks.html
Normal file
45
app/src/components/latest-blocks/latest-blocks.html
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<!-- Generated template for the LatestBlocksComponent component -->
|
||||||
|
<div>
|
||||||
|
<div *ngIf="loading">
|
||||||
|
<ion-spinner name="crescent"></ion-spinner>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div *ngIf="!loading">
|
||||||
|
<ion-grid>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col><b>Height</b></ion-col>
|
||||||
|
<ion-col *ngIf="showTimeAs === 'age'"><b>Age</b></ion-col>
|
||||||
|
<ion-col *ngIf="showTimeAs === 'timestamp'"><b>Timestamp</b></ion-col>
|
||||||
|
<ion-col text-right><b>Transactions</b></ion-col>
|
||||||
|
<ion-col hideWhen="portrait"><b>Mined By</b></ion-col>
|
||||||
|
<ion-col text-right><b>Size</b></ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row *ngFor="let block of getBlocks()">
|
||||||
|
<ion-col>
|
||||||
|
<a (click)="goToBlock(block.hash)">{{block.height}}</a>
|
||||||
|
</ion-col>
|
||||||
|
<ion-col *ngIf="showTimeAs === 'age'">
|
||||||
|
{{ block.time | amFromUnix | amTimeAgo }}
|
||||||
|
</ion-col>
|
||||||
|
<ion-col *ngIf="showTimeAs === 'timestamp'">
|
||||||
|
{{ block.time * 1000 | date:'medium' }}
|
||||||
|
</ion-col>
|
||||||
|
<ion-col text-right>
|
||||||
|
{{block.txlength}}
|
||||||
|
</ion-col>
|
||||||
|
<ion-col hideWhen="portrait">
|
||||||
|
<a *ngIf="block.poolInfo.poolName" href="{{block.poolInfo.url}}">{{block.poolInfo.poolName}}</a>
|
||||||
|
</ion-col>
|
||||||
|
<ion-col text-right>
|
||||||
|
{{ block.size }}
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row *ngIf="showAllBlocksButton">
|
||||||
|
<ion-col text-center>
|
||||||
|
<button ion-button (click)="goToBlocks()">See all blocks</button>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
</ion-grid>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
18
app/src/components/latest-blocks/latest-blocks.module.ts
Normal file
18
app/src/components/latest-blocks/latest-blocks.module.ts
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
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,
|
||||||
|
MomentModule
|
||||||
|
],
|
||||||
|
exports: [
|
||||||
|
LatestBlocksComponent
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class LatestBlocksComponentModule {}
|
||||||
23
app/src/components/latest-blocks/latest-blocks.scss
Normal file
23
app/src/components/latest-blocks/latest-blocks.scss
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
latest-blocks {
|
||||||
|
ion-grid {
|
||||||
|
// border: 2px solid green;
|
||||||
|
margin: 10px 0 20px;
|
||||||
|
|
||||||
|
ion-row {
|
||||||
|
border-top: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
ion-row:nth-child(even) {
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
}
|
||||||
|
|
||||||
|
ion-row:first-child {
|
||||||
|
background-color: white;
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
ion-row:last-child {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
65
app/src/components/latest-blocks/latest-blocks.ts
Normal file
65
app/src/components/latest-blocks/latest-blocks.ts
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
import { Component, NgZone, Input } from '@angular/core';
|
||||||
|
import { BlocksProvider } from '../../providers/blocks/blocks';
|
||||||
|
import { NavController } from 'ionic-angular';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generated class for the LatestBlocksComponent component.
|
||||||
|
*
|
||||||
|
* See https://angular.io/docs/ts/latest/api/core/index/ComponentMetadata-class.html
|
||||||
|
* for more info on Angular Components.
|
||||||
|
*/
|
||||||
|
@Component({
|
||||||
|
selector: 'latest-blocks',
|
||||||
|
templateUrl: 'latest-blocks.html'
|
||||||
|
})
|
||||||
|
export class LatestBlocksComponent {
|
||||||
|
|
||||||
|
public loading: boolean = true;
|
||||||
|
public blocks: Array<any> = [];
|
||||||
|
@Input() public numBlocks: number;
|
||||||
|
@Input() public showAllBlocksButton: boolean;
|
||||||
|
@Input() public showTimeAs: string;
|
||||||
|
|
||||||
|
constructor(private blocksProvider: BlocksProvider, private navCtrl: NavController, ngZone: NgZone) {
|
||||||
|
this.loadBlocks();
|
||||||
|
ngZone.runOutsideAngular(() => {
|
||||||
|
setInterval(
|
||||||
|
function (): void {
|
||||||
|
ngZone.run(function (): void {
|
||||||
|
this.loadBlocks.call(this);
|
||||||
|
}.bind(this));
|
||||||
|
}.bind(this),
|
||||||
|
1000 * 30
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private loadBlocks(): void {
|
||||||
|
this.blocksProvider.getBlocks().subscribe(
|
||||||
|
(data) => {
|
||||||
|
this.blocks = JSON.parse(data['_body']).blocks;
|
||||||
|
this.loading = false;
|
||||||
|
},
|
||||||
|
(err) => {
|
||||||
|
console.log('err', err);
|
||||||
|
this.loading = false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public goToBlock(blockHash: string): void {
|
||||||
|
this.navCtrl.push('block-detail', {
|
||||||
|
'blockHash': blockHash
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public getBlocks(): Array<any> {
|
||||||
|
/* tslint:disable:no-unused-variable */
|
||||||
|
return this.blocks.filter((block, index) => index < this.numBlocks);
|
||||||
|
/* tslint:enable:no-unused-variable */
|
||||||
|
}
|
||||||
|
|
||||||
|
public goToBlocks(): void {
|
||||||
|
this.navCtrl.push('blocks');
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
<!-- Generated template for the LatestTransactionsComponent component -->
|
||||||
|
<div>
|
||||||
|
{{text}}
|
||||||
|
</div>
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { IonicModule } from 'ionic-angular';
|
||||||
|
import { LatestTransactionsComponent } from './latest-transactions';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [
|
||||||
|
LatestTransactionsComponent
|
||||||
|
],
|
||||||
|
imports: [
|
||||||
|
IonicModule
|
||||||
|
],
|
||||||
|
exports: [
|
||||||
|
LatestTransactionsComponent
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class LatestTransactionsComponentModule {}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
latest-transactions {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,52 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
// import { Http } from '@angular/http';
|
||||||
|
// import { ApiProvider } from '../../providers/api/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generated class for the LatestTransactionsComponent component.
|
||||||
|
*
|
||||||
|
* See https://angular.io/docs/ts/latest/api/core/index/ComponentMetadata-class.html
|
||||||
|
* for more info on Angular Components.
|
||||||
|
*/
|
||||||
|
@Component({
|
||||||
|
selector: 'latest-transactions',
|
||||||
|
templateUrl: 'latest-transactions.html'
|
||||||
|
})
|
||||||
|
export class LatestTransactionsComponent {
|
||||||
|
|
||||||
|
private text: string;
|
||||||
|
|
||||||
|
constructor(/*private http: Http, private api: ApiProvider*/) {
|
||||||
|
console.log('Hello LatestTransactionsComponent Component');
|
||||||
|
this.text = 'Hello Latest Transactions';
|
||||||
|
|
||||||
|
/*
|
||||||
|
let url: string = this.api.apiPrefix + 'txs?' + this.queryType + '=' + this.queryValue;
|
||||||
|
|
||||||
|
this.http.get(url).subscribe(
|
||||||
|
(data) => {
|
||||||
|
this.transactions = JSON.parse(data['_body']);
|
||||||
|
this.loading = false;
|
||||||
|
},
|
||||||
|
(err) => {
|
||||||
|
console.log('err is', err);
|
||||||
|
this.loading = false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
this.http.get(this.api.apiPrefix + 'tx/' + this.txId).subscribe(
|
||||||
|
(data) => {
|
||||||
|
this.tx = JSON.parse(data['_body']);
|
||||||
|
this.loading = false;
|
||||||
|
},
|
||||||
|
(err) => {
|
||||||
|
console.log('err is', err);
|
||||||
|
this.loading = false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,4 +1,7 @@
|
|||||||
transaction {
|
transaction {
|
||||||
|
// TODO Customize the grid to have 13 columns so that we have 6-col inputs, 6-col outputs, 1 col arrow
|
||||||
|
// See http://ionicframework.com/docs/api/components/grid/Grid/#customizing-the-grid
|
||||||
|
|
||||||
ion-grid {
|
ion-grid {
|
||||||
background-color: #F4F4F4;
|
background-color: #F4F4F4;
|
||||||
border: 1px solid #eee;
|
border: 1px solid #eee;
|
||||||
|
|||||||
14
app/src/pages/blocks/blocks.html
Normal file
14
app/src/pages/blocks/blocks.html
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<ion-header>
|
||||||
|
<head-nav [title]="'Blocks'"></head-nav>
|
||||||
|
</ion-header>
|
||||||
|
|
||||||
|
<ion-content padding>
|
||||||
|
<div *ngIf="loading">
|
||||||
|
<ion-spinner name="crescent"></ion-spinner>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div *ngIf="!loading">
|
||||||
|
<h1>Blocks</h1>
|
||||||
|
<latest-blocks [numBlocks]="100" [showTimeAs]="'timestamp'" [showAllBlocksButton]="false"></latest-blocks>
|
||||||
|
</div>
|
||||||
|
</ion-content>
|
||||||
20
app/src/pages/blocks/blocks.module.ts
Normal file
20
app/src/pages/blocks/blocks.module.ts
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { IonicPageModule } from 'ionic-angular';
|
||||||
|
import { BlocksPage } from './blocks';
|
||||||
|
import { HeadNavComponentModule } from '../../components/head-nav/head-nav.module';
|
||||||
|
import { LatestBlocksComponentModule } from '../../components/latest-blocks/latest-blocks.module';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [
|
||||||
|
BlocksPage
|
||||||
|
],
|
||||||
|
imports: [
|
||||||
|
IonicPageModule.forChild(BlocksPage),
|
||||||
|
HeadNavComponentModule,
|
||||||
|
LatestBlocksComponentModule
|
||||||
|
],
|
||||||
|
exports: [
|
||||||
|
BlocksPage
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class BlocksPageModule {}
|
||||||
23
app/src/pages/blocks/blocks.scss
Normal file
23
app/src/pages/blocks/blocks.scss
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
page-blocks {
|
||||||
|
ion-grid {
|
||||||
|
// border: 2px solid green;
|
||||||
|
margin: 10px 0 20px;
|
||||||
|
|
||||||
|
ion-row {
|
||||||
|
border-top: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
ion-row:nth-child(even) {
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
}
|
||||||
|
|
||||||
|
ion-row:first-child {
|
||||||
|
background-color: white;
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
ion-row:last-child {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
37
app/src/pages/blocks/blocks.ts
Normal file
37
app/src/pages/blocks/blocks.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
import { IonicPage, NavController, NavParams } from 'ionic-angular';
|
||||||
|
import { BlocksProvider } from '../../providers/blocks/blocks';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generated class for the BlocksPage page.
|
||||||
|
*
|
||||||
|
* See http://ionicframework.com/docs/components/#navigation for more info
|
||||||
|
* on Ionic pages and navigation.
|
||||||
|
*/
|
||||||
|
@IonicPage({
|
||||||
|
name: 'blocks',
|
||||||
|
segment: 'blocks/'
|
||||||
|
})
|
||||||
|
@Component({
|
||||||
|
selector: 'page-blocks',
|
||||||
|
templateUrl: 'blocks.html'
|
||||||
|
})
|
||||||
|
export class BlocksPage {
|
||||||
|
|
||||||
|
public loading: boolean = true;
|
||||||
|
public blocks: Array<any> = [];
|
||||||
|
|
||||||
|
constructor(public navCtrl: NavController, public navParams: NavParams, private blocksProvider: BlocksProvider) {
|
||||||
|
this.blocksProvider.getBlocks().subscribe(
|
||||||
|
(data) => {
|
||||||
|
this.blocks = JSON.parse(data['_body']).blocks;
|
||||||
|
console.log('this.blocks', this.blocks);
|
||||||
|
this.loading = false;
|
||||||
|
},
|
||||||
|
(err) => {
|
||||||
|
console.log('err', err);
|
||||||
|
this.loading = false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -4,16 +4,20 @@ import { Observable } from 'rxjs';
|
|||||||
import { Block } from '../../models';
|
import { Block } from '../../models';
|
||||||
import { BlocksService } from '../../services';
|
import { BlocksService } from '../../services';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use BlocksPage from ../blocks/blocks
|
||||||
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
templateUrl: './blocksPage.html'
|
templateUrl: './blocksPage.html'
|
||||||
})
|
})
|
||||||
|
|
||||||
export class BlocksPage {
|
export class BlocksPage {
|
||||||
|
|
||||||
public title: string;
|
public title: string;
|
||||||
public blocks: Observable<Block[]>;
|
public blocks: Observable<Block[]>;
|
||||||
|
|
||||||
constructor(private navCtrl: NavController, private blocksService: BlocksService) {
|
constructor(private navCtrl: NavController, private blocksService: BlocksService) {
|
||||||
|
// TODO Put loading spinner on page
|
||||||
|
|
||||||
this.title = 'Blocks';
|
this.title = 'Blocks';
|
||||||
this.blocks = blocksService.latestBlocks;
|
this.blocks = blocksService.latestBlocks;
|
||||||
this.blocks.subscribe((blocks) => {
|
this.blocks.subscribe((blocks) => {
|
||||||
|
|||||||
39
app/src/pages/home/home.html
Normal file
39
app/src/pages/home/home.html
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<!--
|
||||||
|
Generated template for the HomePage page.
|
||||||
|
|
||||||
|
See http://ionicframework.com/docs/components/#navigation for more info on
|
||||||
|
Ionic pages and navigation.
|
||||||
|
-->
|
||||||
|
<ion-header>
|
||||||
|
<head-nav [title]="'Home'"></head-nav>
|
||||||
|
</ion-header>
|
||||||
|
|
||||||
|
|
||||||
|
<ion-content padding>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h1>Latest Blocks</h1>
|
||||||
|
<latest-blocks [numBlocks]="6" [showTimeAs]="'age'" [showAllBlocksButton]="true"></latest-blocks>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h1>Latest Transactions</h1>
|
||||||
|
<latest-transactions></latest-transactions>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="about">
|
||||||
|
<h2>About</h2>
|
||||||
|
<p><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><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>
|
||||||
|
<div id="powered" class="row">
|
||||||
|
<div class="powered-text">
|
||||||
|
<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>
|
||||||
|
<a href="https://code.google.com/p/leveldb/" target="_blank" class="leveldb" title="LevelDB"></a>
|
||||||
|
<a href="http://nodejs.org" target="_blank" class="nodejs" title="NodeJs"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ion-content>
|
||||||
20
app/src/pages/home/home.module.ts
Normal file
20
app/src/pages/home/home.module.ts
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { IonicPageModule } from 'ionic-angular';
|
||||||
|
import { HomePage } from './home';
|
||||||
|
import { HeadNavComponentModule } from '../../components/head-nav/head-nav.module';
|
||||||
|
import { LatestTransactionsComponentModule } from '../../components/latest-transactions/latest-transactions.module';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [
|
||||||
|
HomePage
|
||||||
|
],
|
||||||
|
imports: [
|
||||||
|
IonicPageModule.forChild(HomePage),
|
||||||
|
HeadNavComponentModule,
|
||||||
|
LatestTransactionsComponentModule
|
||||||
|
],
|
||||||
|
exports: [
|
||||||
|
HomePage
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class HomePageModule {}
|
||||||
50
app/src/pages/home/home.scss
Normal file
50
app/src/pages/home/home.scss
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
page-home {
|
||||||
|
.about {
|
||||||
|
background-color: #F4F4F4;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#powered .powered-text {
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
margin: 30px auto 0;
|
||||||
|
text-align: center;
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
#powered .powered-text small {
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
padding: 4px;
|
||||||
|
position: relative;
|
||||||
|
top: -12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#powered a {
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center center;
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
height: 45px;
|
||||||
|
}
|
||||||
|
#powered a.bitcore {
|
||||||
|
background-image: url('../../assets/img/bitcore.svg');
|
||||||
|
background-size: 80px;
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
#powered a.nodejs {
|
||||||
|
background-image: url('../../assets/img/nodejs.png');
|
||||||
|
background-size: 80px;
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
#powered a.angularjs {
|
||||||
|
background-image: url('../../assets/img/angularjs.png');
|
||||||
|
background-size: 50px;
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
#powered a.leveldb {
|
||||||
|
background-image: url('../../assets/img/leveldb.png');
|
||||||
|
background-size: 50px;
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
27
app/src/pages/home/home.ts
Normal file
27
app/src/pages/home/home.ts
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
import { IonicPage, NavController, NavParams } from 'ionic-angular';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generated class for the HomePage page.
|
||||||
|
*
|
||||||
|
* See http://ionicframework.com/docs/components/#navigation for more info
|
||||||
|
* on Ionic pages and navigation.
|
||||||
|
*/
|
||||||
|
@IonicPage({
|
||||||
|
name: 'home',
|
||||||
|
segment: 'home'
|
||||||
|
})
|
||||||
|
@Component({
|
||||||
|
selector: 'page-home',
|
||||||
|
templateUrl: 'home.html'
|
||||||
|
})
|
||||||
|
export class HomePage {
|
||||||
|
|
||||||
|
constructor(public navCtrl: NavController, public navParams: NavParams) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public ionViewDidLoad(): void {
|
||||||
|
console.log('ionViewDidLoad HomePage');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,5 +1,6 @@
|
|||||||
export * from './blocksPage/blocksPage';
|
|
||||||
export * from './broadcastTxPage/broadcastTxPage';
|
export * from './broadcastTxPage/broadcastTxPage';
|
||||||
export * from './nodeStatusPage/nodeStatusPage';
|
export * from './nodeStatusPage/nodeStatusPage';
|
||||||
export * from './verifyMessagePage/verifyMessagePage';
|
export * from './verifyMessagePage/verifyMessagePage';
|
||||||
|
export * from './home/home';
|
||||||
|
export * from './blocks/blocks';
|
||||||
export * from './pages.module';
|
export * from './pages.module';
|
||||||
|
|||||||
@ -1,9 +1,12 @@
|
|||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import { IonicModule } from 'ionic-angular';
|
import { IonicModule } from 'ionic-angular';
|
||||||
import { ComponentsModule } from '../components';
|
import { ComponentsModule } from '../components';
|
||||||
|
import { BlocksPageModule } from '../pages/blocks/blocks.module';
|
||||||
import { HeadNavComponentModule } from '../components/head-nav/head-nav.module';
|
import { HeadNavComponentModule } from '../components/head-nav/head-nav.module';
|
||||||
|
import { LatestTransactionsComponentModule } from '../components/latest-transactions/latest-transactions.module';
|
||||||
|
import { LatestBlocksComponentModule } from '../components/latest-blocks/latest-blocks.module';
|
||||||
import {
|
import {
|
||||||
BlocksPage,
|
HomePage,
|
||||||
BroadcastTxPage,
|
BroadcastTxPage,
|
||||||
NodeStatusPage,
|
NodeStatusPage,
|
||||||
VerifyMessagePage
|
VerifyMessagePage
|
||||||
@ -11,12 +14,19 @@ import {
|
|||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
BlocksPage,
|
HomePage,
|
||||||
BroadcastTxPage,
|
BroadcastTxPage,
|
||||||
NodeStatusPage,
|
NodeStatusPage,
|
||||||
VerifyMessagePage
|
VerifyMessagePage
|
||||||
],
|
],
|
||||||
imports: [ IonicModule, ComponentsModule, HeadNavComponentModule ],
|
imports: [
|
||||||
|
IonicModule,
|
||||||
|
ComponentsModule,
|
||||||
|
BlocksPageModule,
|
||||||
|
HeadNavComponentModule,
|
||||||
|
LatestTransactionsComponentModule,
|
||||||
|
LatestBlocksComponentModule
|
||||||
|
],
|
||||||
exports: [
|
exports: [
|
||||||
// CustomComponent,
|
// CustomComponent,
|
||||||
],
|
],
|
||||||
|
|||||||
23
app/src/providers/blocks/blocks.ts
Normal file
23
app/src/providers/blocks/blocks.ts
Normal file
@ -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');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
203
app/yarn.lock
203
app/yarn.lock
@ -200,6 +200,39 @@
|
|||||||
uuid "^3.0.1"
|
uuid "^3.0.1"
|
||||||
wrap-ansi "^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":
|
"@ionic/storage@2.0.1":
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@ionic/storage/-/storage-2.0.1.tgz#bb1a8c276007d008d7acdda426b56065b0fd3c0b"
|
resolved "https://registry.yarnpkg.com/@ionic/storage/-/storage-2.0.1.tgz#bb1a8c276007d008d7acdda426b56065b0fd3c0b"
|
||||||
@ -221,6 +254,14 @@
|
|||||||
magic-string "^0.19.0"
|
magic-string "^0.19.0"
|
||||||
source-map "^0.5.6"
|
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":
|
"@types/jasmine@2.5.41":
|
||||||
version "2.5.41"
|
version "2.5.41"
|
||||||
resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.5.41.tgz#d5e86161a0af80d52062b310a33ed65b051a0713"
|
resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.5.41.tgz#d5e86161a0af80d52062b310a33ed65b051a0713"
|
||||||
@ -229,6 +270,10 @@
|
|||||||
version "0.0.30"
|
version "0.0.30"
|
||||||
resolved "https://registry.yarnpkg.com/@types/localforage/-/localforage-0.0.30.tgz#3d60a6bf6dda38e3f8a469611598379f1f649509"
|
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":
|
"@types/node@7.0.4":
|
||||||
version "7.0.4"
|
version "7.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.4.tgz#9aabc135979ded383325749f508894c662948c8b"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.4.tgz#9aabc135979ded383325749f508894c662948c8b"
|
||||||
@ -237,6 +282,17 @@
|
|||||||
version "6.0.79"
|
version "6.0.79"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.79.tgz#5efe7d4a6d8c453c7e9eaf55d931f4a22fac5169"
|
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":
|
"@types/q@^0.0.32":
|
||||||
version "0.0.32"
|
version "0.0.32"
|
||||||
resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5"
|
resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5"
|
||||||
@ -245,6 +301,12 @@
|
|||||||
version "2.53.42"
|
version "2.53.42"
|
||||||
resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-2.53.42.tgz#74cb77fb6052edaff2a8984ddafd88d419f25cac"
|
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:
|
abbrev@1:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
|
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
|
||||||
@ -335,6 +397,12 @@ amdefine@>=0.0.4:
|
|||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
|
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:
|
angular2-qrcode@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/angular2-qrcode/-/angular2-qrcode-2.0.1.tgz#1b4e65c302694b5078ca06f71138f7e4367754dc"
|
resolved "https://registry.yarnpkg.com/angular2-qrcode/-/angular2-qrcode-2.0.1.tgz#1b4e65c302694b5078ca06f71138f7e4367754dc"
|
||||||
@ -1256,7 +1324,7 @@ chokidar@1.6.1:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents "^1.0.0"
|
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"
|
version "1.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
|
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -1800,7 +1868,7 @@ date-now@^0.1.4:
|
|||||||
version "0.1.4"
|
version "0.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
|
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"
|
version "2.6.8"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -1880,6 +1948,10 @@ depd@1.1.0, depd@~1.1.0:
|
|||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3"
|
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:
|
des.js@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
|
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"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
|
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:
|
diffie-hellman@^5.0.0:
|
||||||
version "5.0.2"
|
version "5.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
|
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"
|
utils-merge "1.0.0"
|
||||||
vary "~1.1.1"
|
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:
|
extend@3, extend@^3.0.0, extend@~3.0.0:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
|
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"
|
statuses "~1.3.1"
|
||||||
unpipe "~1.0.0"
|
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:
|
find-up@^1.0.0:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
|
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"
|
setprototypeof "1.0.3"
|
||||||
statuses ">= 1.3.1 < 2"
|
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:
|
http-proxy-middleware@~0.17.4:
|
||||||
version "0.17.4"
|
version "0.17.4"
|
||||||
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
|
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"
|
version "3.4.2"
|
||||||
resolved "https://registry.yarnpkg.com/ionic-angular/-/ionic-angular-3.4.2.tgz#762631f1af78a5ae1c0aa0f4d23b31435142abe1"
|
resolved "https://registry.yarnpkg.com/ionic-angular/-/ionic-angular-3.4.2.tgz#762631f1af78a5ae1c0aa0f4d23b31435142abe1"
|
||||||
|
|
||||||
ionic@3.7.0:
|
ionic@3.9.1:
|
||||||
version "3.7.0"
|
version "3.9.1"
|
||||||
resolved "https://registry.yarnpkg.com/ionic/-/ionic-3.7.0.tgz#a3c32174c6d5455c3bc74b6b9152e0f97dce23c8"
|
resolved "https://registry.yarnpkg.com/ionic/-/ionic-3.9.1.tgz#be50eea2f55bad40574772ecaeaf5a460fd16330"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@ionic/cli-utils" "1.7.0"
|
"@ionic/cli-utils" "1.9.1"
|
||||||
chalk "^2.0.0"
|
chalk "^2.0.0"
|
||||||
diff "^3.2.0"
|
|
||||||
minimist "^1.2.0"
|
|
||||||
opn "^5.1.0"
|
opn "^5.1.0"
|
||||||
os-name "^2.0.1"
|
os-name "^2.0.1"
|
||||||
rimraf "^2.6.1"
|
rimraf "^2.6.1"
|
||||||
semver "^5.3.0"
|
semver "^5.3.0"
|
||||||
ssh-config "^1.0.1"
|
|
||||||
tar "^2.2.1"
|
|
||||||
tslib "^1.7.1"
|
tslib "^1.7.1"
|
||||||
|
|
||||||
ionicons@3.0.0:
|
ionicons@3.0.0:
|
||||||
@ -3121,6 +3247,10 @@ ipaddr.js@1.3.0:
|
|||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec"
|
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:
|
is-absolute-url@^2.0.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
|
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:
|
dependencies:
|
||||||
minimist "0.0.8"
|
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:
|
ms@0.7.1:
|
||||||
version "0.7.1"
|
version "0.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
|
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"
|
forwarded "~0.1.0"
|
||||||
ipaddr.js "1.3.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"
|
version "0.15.0"
|
||||||
resolved "https://registry.yarnpkg.com/proxy-middleware/-/proxy-middleware-0.15.0.tgz#a3fdf1befb730f951965872ac2f6074c61477a56"
|
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"
|
version "6.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
|
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"
|
version "6.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49"
|
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"
|
range-parser "~1.2.0"
|
||||||
statuses "~1.3.1"
|
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:
|
serve-index@^1.7.2:
|
||||||
version "1.9.0"
|
version "1.9.0"
|
||||||
resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.0.tgz#d2b280fc560d616ee81b48bf0fa82abed2485ce7"
|
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"
|
parseurl "~1.3.1"
|
||||||
send "0.15.3"
|
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:
|
serve-static@~1.11.2:
|
||||||
version "1.11.2"
|
version "1.11.2"
|
||||||
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.2.tgz#2cf9889bd4435a320cc36895c9aa57bd662e6ac7"
|
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"
|
object-assign "^4.1.0"
|
||||||
qs "^6.2.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:
|
tmp@0.0.24:
|
||||||
version "0.0.24"
|
version "0.0.24"
|
||||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12"
|
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user