Commit ce03cf34 authored by Pieterjan Vanhoof's avatar Pieterjan Vanhoof Committed by GitHub

Merge pull request #119 from stratisproject/ui

Spawn API when in production mode
parents 896fcfa5 14dca061
......@@ -241,6 +241,7 @@ ModelManifest.xml
# UI ignores
# compiled output
**/app-builds
**/assets/daemon
**/dist
**/tmp
**/build
......
......@@ -33,6 +33,8 @@ npm install -g @angular/cli
## To build for development
- **in a terminal window** -> npm start
This will compile the Angular code and spawn the Electron process in parallel.
After compilation has completed the Electron UI will refresh.
If you want to seperate the build process from the Electron process you can use:
- **in a terminal window** -> npm start:webpack
......
......@@ -51,7 +51,12 @@ function createWindow() {
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', function () {
//startApi();
if (serve) {
console.log("Breeze UI was started in development mode. This requires the user to be running the Breeze Daemon himself.")
}
else {
startApi();
}
createTray();
createWindow();
})
......@@ -74,16 +79,16 @@ app.on('activate', function () {
});
function startApi() {
let apiProcess;
var spawn = require('child_process').spawn;
var apiProcess;
const spawn = require('child_process').spawn;
//Start Breeze Daemon
apipath = path.join(__dirname, '');
let apipath = path.join(__dirname, '..//..//daemon//Breeze.Daemon');
if (os.platform() === 'win32') {
var apipath = path.join(__dirname, '');
apipath = path.join(__dirname, '.\\assets\\daemon\\Breeze.Daemon.exe');
}
apiProcess = spawn(apipath, {
apiProcess = spawn(apipath + ' light -testnet', {
detached: true
});
......
......@@ -30,9 +30,9 @@
"electron:test": "electron ./dist",
"electron:dev": "npm run build && electron ./dist",
"electron:prod": "npm run build:prod && electron ./dist",
"package:linux": "npm run build:prod && node package.js --asar --platform=linux --arch=x64",
"package:windows": "npm run build:prod && node package.js --asar --platform=win32 --arch=ia32",
"package:mac": "npm run build:prod && node package.js --asar --platform=darwin --arch=x64",
"package:linux": "npm run build:prod && node package.js --platform=linux --arch=x64",
"package:windows": "npm run build:prod && node package.js --platform=win32 --arch=ia32",
"package:mac": "npm run build:prod && node package.js --platform=darwin --arch=x64",
"test": "karma start ./karma.conf.js",
"pree2e": "webdriver-manager update --standalone false --gecko false --quiet && npm run build",
"e2e": "protractor ./protractor.conf.js"
......
......@@ -16,25 +16,5 @@ export class AppComponent implements OnInit {
ngOnInit() {
this.router.navigate(['/login']);
//this.checkWalletStatus();
}
// private checkWalletStatus(){
// this.apiService.getWalletStatus()
// .subscribe(
// response => {
// if (response.status >= 200 && response.status < 400) {
// this.responseMessage = response;
// this.router.navigate(['/login']);
// }
// },
// error => {
// this.errorMessage = <any>error;
// if (error.status === 400 || error.status === 404) {
// this.router.navigate(['/setup']);
// console.log(this.errorMessage);
// }
// }
// );
// }
}
\ No newline at end of file
}
......@@ -11,10 +11,11 @@ import { WalletLoad } from '../shared/classes/wallet-load';
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
constructor(private globalService: GlobalService, private apiService: ApiService, private router: Router, private fb: FormBuilder) {
this.buildDecryptForm();
}
}
private openWalletForm: FormGroup;
private hasWallet: boolean = false;
......@@ -109,7 +110,8 @@ export class LoginComponent implements OnInit {
console.log(errorMessage);
}
}
);
)
;
}
private loadWallet(walletLoad: WalletLoad) {
......@@ -131,6 +133,7 @@ export class LoginComponent implements OnInit {
console.log(errorMessage);
}
}
);
)
;
}
}
......@@ -21,7 +21,6 @@ export class CreateComponent {
private createWalletForm: FormGroup;
private newWallet: WalletCreation;
private mnemonic: string;
private buildCreateForm(): void {
......@@ -104,6 +103,7 @@ export class CreateComponent {
console.log(errorMessage);
}
}
);
)
;
}
}
import { CoinAbbreviationPipe } from './coin-abbreviation.pipe';
describe('CoinAbbreviationPipe', () => {
it('create an instance', () => {
const pipe = new CoinAbbreviationPipe();
expect(pipe).toBeTruthy();
});
});
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'coinAbbreviation'
})
export class CoinAbbreviationPipe implements PipeTransform {
transform(value: any): any {
if (!value) return value;
let abbreviationAdded = value + " BTC"
return abbreviationAdded;
}
}
......@@ -7,22 +7,28 @@ export class CoinNotationPipe implements PipeTransform {
private coinUnit = "BTC";
private coinNotation: number;
private decimalLimit = 8;
transform(value: any): any {
if (!value) return value;
this.coinNotation = value;
switch (this.coinUnit) {
case "BTC":
this.coinNotation = Number(value.toFixed(8));
return this.coinNotation = this.coinNotation / 100000000;
case "mBTC":
this.coinNotation = Number(value.toFixed(8));
return this.coinNotation = this.coinNotation / 100000;
case "uBTC":
this.coinNotation = Number(value.toFixed(8));
return this.coinNotation = this.coinNotation / 100;
let temp;
if (typeof value === 'number') {
switch (this.getCoinUnit()) {
case "BTC":
temp = value / 100000000;
return temp.toFixed(this.decimalLimit) + " TBTC";
case "mBTC":
temp = value / 100000;
return temp.toFixed(this.decimalLimit) + " TmBTC";
case "uBTC":
temp = value / 100;
return temp.toFixed(this.decimalLimit) + " TuBTC";
}
}
}
getCoinUnit() {
return this.coinUnit;
}
}
......@@ -2,33 +2,33 @@ import {Injectable} from "@angular/core";
@Injectable()
export class GlobalService {
constructor() {}
constructor() {}
private walletPath: string;
private currentWalletName: string;
private coinType: number;
private walletPath: string;
private currentWalletName: string;
private coinType: number;
getWalletPath() {
return this.walletPath;
}
getWalletPath() {
return this.walletPath;
}
setWalletPath(walletPath: string) {
this.walletPath = walletPath;
}
setWalletPath(walletPath: string) {
this.walletPath = walletPath;
}
getWalletName() {
return this.currentWalletName;
}
getWalletName() {
return this.currentWalletName;
}
setWalletName(currentWalletName: string) {
this.currentWalletName = currentWalletName;
}
setWalletName(currentWalletName: string) {
this.currentWalletName = currentWalletName;
}
getCoinType () {
return this.coinType;
}
getCoinType () {
return this.coinType;
}
setCoinType (coinType: number) {
this.coinType = coinType;
}
setCoinType (coinType: number) {
this.coinType = coinType;
}
}
import { NgModule, ModuleWithProviders } from '@angular/core';
import { CommonModule } from '@angular/common';
import { CoinNotationPipe } from './pipes/coin-notation.pipe';
import { CoinAbbreviationPipe } from './pipes/coin-abbreviation.pipe';
@NgModule({
imports: [CommonModule],
declarations: [CoinNotationPipe, CoinAbbreviationPipe],
exports: [CoinNotationPipe, CoinAbbreviationPipe]
declarations: [CoinNotationPipe],
exports: [CoinNotationPipe]
})
export class SharedModule {
......
......@@ -2,8 +2,8 @@
<div class="d-flex flex-row align-items-center nopadding" id="dashboard">
<div class="d-flex flex-column">
<div class="p">Active Balance</div>
<div class="p">Balance: {{confirmedBalance | coinNotation | coinAbbreviation}}</div>
<div class="p">Unconfirmed Balance: {{unconfirmedBalance | coinNotation | coinAbbreviation}}</div>
<div class="p">Balance: {{confirmedBalance | coinNotation }}</div>
<div class="p">Unconfirmed Balance: {{unconfirmedBalance | coinNotation }}</div>
</div>
<div class="d-flex flex-column">
<!--<div>Current Value</div>
......@@ -28,13 +28,13 @@
<th>Timestamp</th>
</thead>
<tr *ngFor="let transaction of transactions; let i=index">
<!--<td *ngIf="{{ transaction.amount }} < 0">SENT</td>
<td *ngIf="{{ transaction.amount }} > 0">RECEIVED</td>-->
<td *ngIf="i<5">{{ transaction.type }}</td>
<td *ngIf="i<5">{{ transaction.amount | coinNotation | coinAbbreviation }}</td>
<td *ngIf="i<5">{{ transaction.id }}</td>
<td *ngIf="i<5">{{ transaction.confirmedInBlock }}</td>
<td *ngIf="i<5">{{ transaction.timestamp * 1000 | date:'medium' }}</td>
<!--<td *ngIf="{{ transaction.amount }} < 0">SENT</td>
<td *ngIf="{{ transaction.amount }} > 0">RECEIVED</td>-->
<td *ngIf="i<5">{{ transaction.type }}</td>
<td *ngIf="i<5">{{ transaction.amount | coinNotation }}</td>
<td *ngIf="i<5">{{ transaction.id }}</td>
<td *ngIf="i<5">{{ transaction.confirmedInBlock }}</td>
<td *ngIf="i<5">{{ transaction.timestamp * 1000 | date:'medium' }}</td>
</tr>
</table>
<ng-template #noTransactions>Looks like you haven't made any transactions yet</ng-template>
......
......@@ -49,20 +49,21 @@ export class DashboardComponent {
let walletInfo = new WalletInfo(this.globalService.getWalletName(), this.globalService.getCoinType())
this.walletBalanceSubscription = this.apiService.getWalletBalance(walletInfo)
.subscribe(
response => {
if (response.status >= 200 && response.status < 400) {
let balanceResponse = response.json();
this.confirmedBalance = balanceResponse.balances[0].amountConfirmed;
this.unconfirmedBalance = balanceResponse.balances[0].amountUnconfirmed;
}
},
error => {
if (error.status >= 400) {
let errorMessage = <any>error;
console.log(errorMessage);
}
response => {
if (response.status >= 200 && response.status < 400) {
let balanceResponse = response.json();
this.confirmedBalance = balanceResponse.balances[0].amountConfirmed;
this.unconfirmedBalance = balanceResponse.balances[0].amountUnconfirmed;
}
);
},
error => {
if (error.status >= 400) {
let errorMessage = <any>error;
console.log(errorMessage);
}
}
)
;
};
private getHistory() {
......@@ -82,6 +83,7 @@ export class DashboardComponent {
console.log(errorMessage);
}
}
);
)
;
};
}
......@@ -13,7 +13,7 @@
<!--<td *ngIf="{{ transaction.amount }} < 0; else received">SENT</td>
<td #received>RECEIVED</td>-->
<td>{{ transaction.type }}</td>
<td>{{ transaction.amount | coinNotation | coinAbbreviation }}</td>
<td>{{ transaction.amount | coinNotation }}</td>
<td>{{ transaction.id }}</td>
<td>{{ transaction.confirmedInBlock }}</td>
<td>{{ transaction.timestamp * 1000 | date:'medium' }}</td>
......
......@@ -46,6 +46,7 @@ export class HistoryComponent {
console.log(this.errorMessage);
}
}
);
)
;
}
}
......@@ -23,10 +23,6 @@ export class ReceiveComponent {
this.getUnusedReceiveAddresses();
}
private copyAddress() {
}
private getUnusedReceiveAddresses() {
let walletInfo = new WalletInfo(this.globalService.getWalletName(), this.globalService.getCoinType())
this.apiService.getUnusedReceiveAddress(walletInfo)
......@@ -42,6 +38,7 @@ export class ReceiveComponent {
console.log(this.errorMessage);
}
}
);
)
;
}
}
......@@ -103,7 +103,8 @@ export class SendComponent {
}
},
() => this.sendTransaction(this.responseMessage.hex)
);
)
;
};
private getFeeType(){
......@@ -136,6 +137,7 @@ export class SendComponent {
console.log(this.errorMessage);
}
}
);
)
;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment