146 lines
4.0 KiB
TypeScript
146 lines
4.0 KiB
TypeScript
import { Component } from '@angular/core';
|
|
import { Input } from '@angular/core';
|
|
import { NavController } from 'ionic-angular';
|
|
import { Http } from '@angular/http';
|
|
import { ApiProvider } from '../../providers/api/api';
|
|
import { CurrencyProvider } from '../../providers/currency/currency';
|
|
import { ActionSheetController } from 'ionic-angular';
|
|
|
|
/**
|
|
* Generated class for the HeadNavComponent component.
|
|
*
|
|
* See https://angular.io/docs/ts/latest/api/core/index/ComponentMetadata-class.html
|
|
* for more info on Angular Components.
|
|
*/
|
|
@Component({
|
|
selector: 'head-nav',
|
|
templateUrl: 'head-nav.html'
|
|
})
|
|
export class HeadNavComponent {
|
|
|
|
public showSearch: boolean = false;
|
|
public loading: boolean;
|
|
@Input() public title: string;
|
|
public q: string;
|
|
public badQuery: boolean = false;
|
|
|
|
constructor(private navCtrl: NavController, private http: Http, private api: ApiProvider, public currency: CurrencyProvider, public actionSheetCtrl: ActionSheetController) {
|
|
}
|
|
|
|
public search(): void {
|
|
this.showSearch = false;
|
|
let apiPrefix: string = this.api.apiPrefix;
|
|
|
|
this.http.get(apiPrefix + 'block/' + this.q).subscribe(
|
|
function (data: any): void {
|
|
this.resetSearch();
|
|
console.log('block', data);
|
|
let parsedData: any = JSON.parse(data._body);
|
|
this.navCtrl.push('block-detail', {
|
|
'blockHash': parsedData.hash
|
|
});
|
|
}.bind(this),
|
|
() => {
|
|
this.http.get(apiPrefix + 'tx/' + this.q).subscribe(
|
|
function (data: any): void {
|
|
this.resetSearch();
|
|
console.log('tx', data);
|
|
let parsedData: any = JSON.parse(data._body);
|
|
this.navCtrl.push('transaction', {
|
|
'txId': parsedData.txid
|
|
});
|
|
}.bind(this),
|
|
() => {
|
|
this.http.get(apiPrefix + 'addr/' + this.q).subscribe(
|
|
function (data: any): void {
|
|
this.resetSearch();
|
|
console.log('addr', data);
|
|
let parsedData: any = JSON.parse(data._body);
|
|
this.navCtrl.push('address', {
|
|
'addrStr': parsedData.addrStr
|
|
});
|
|
}.bind(this),
|
|
() => {
|
|
this.http.get(apiPrefix + 'block-index/' + this.q).subscribe(
|
|
function (data: any): void {
|
|
this.resetSearch();
|
|
let parsedData: any = JSON.parse(data._body);
|
|
this.navCtrl.push('block-detail', {
|
|
'blockHash': parsedData.blockHash
|
|
});
|
|
}.bind(this),
|
|
function (): void {
|
|
this.loading = false;
|
|
this.reportBadQuery();
|
|
}.bind(this)
|
|
);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
|
|
/* tslint:disable:no-unused-variable */
|
|
private reportBadQuery(): void {
|
|
this.badQuery = true;
|
|
console.log('badQuery', this.badQuery);
|
|
|
|
setTimeout(
|
|
function (): void {
|
|
this.badQuery = false;
|
|
console.log('badQuery', this.badQuery);
|
|
}.bind(this),
|
|
2000
|
|
);
|
|
};
|
|
|
|
private resetSearch(): void {
|
|
this.q = '';
|
|
this.loading = false;
|
|
}
|
|
/* tslint:enable:no-unused-variable */
|
|
|
|
public changeCurrency(): void {
|
|
let actionSheet: any = this.actionSheetCtrl.create({
|
|
title: 'Change Denomination',
|
|
buttons: [
|
|
{
|
|
text: 'USD',
|
|
handler: () => {
|
|
this.currency.setCurrency('USD');
|
|
}
|
|
},
|
|
{
|
|
text: 'BTC',
|
|
handler: () => {
|
|
this.currency.setCurrency('BTC');
|
|
}
|
|
},
|
|
{
|
|
text: 'mBTC',
|
|
handler: () => {
|
|
this.currency.setCurrency('mBTC');
|
|
}
|
|
},
|
|
{
|
|
text: 'bits',
|
|
handler: () => {
|
|
this.currency.setCurrency('bits');
|
|
}
|
|
},
|
|
{
|
|
text: 'Cancel',
|
|
role: 'cancel'
|
|
}
|
|
]
|
|
});
|
|
actionSheet.present();
|
|
}
|
|
|
|
public toggleSearch() {
|
|
this.showSearch = !this.showSearch;
|
|
}
|
|
}
|