Just a few changes
This commit is contained in:
		@@ -27,13 +27,14 @@
 | 
			
		||||
    <!-- Input for selecting holdings -->
 | 
			
		||||
    <div class="p-3">
 | 
			
		||||
        <mat-form-field class="w-50" appearance="fill">
 | 
			
		||||
            <mat-label>Add Holding</mat-label>
 | 
			
		||||
            <mat-chip-list #chipList>
 | 
			
		||||
                <mat-chip *ngFor="let holding of graphHoldings; let i = index" [removable]="true" (removed)="graphHoldings.splice(i, 1); updateGraph()">
 | 
			
		||||
                    {{holding}}
 | 
			
		||||
                    <mat-icon matChipRemove>cancel</mat-icon>
 | 
			
		||||
                </mat-chip>
 | 
			
		||||
                <input #holdingInput class="w-100"
 | 
			
		||||
                       placeholder="Add Holdings"
 | 
			
		||||
                       placeholder="Search"
 | 
			
		||||
                       [matAutocomplete]="auto"
 | 
			
		||||
                       [matChipInputFor]="chipList"
 | 
			
		||||
                       (keyup)="search($event.target.value)">
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +1,17 @@
 | 
			
		||||
import {Component, ElementRef, EventEmitter, ViewChild} from '@angular/core';
 | 
			
		||||
import {Component, ElementRef, NgZone, ViewChild} from '@angular/core';
 | 
			
		||||
import {timer} from './timer';
 | 
			
		||||
import {colorScheme} from './colorScheme';
 | 
			
		||||
import {BehaviorSubject} from 'rxjs';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'app-root',
 | 
			
		||||
    templateUrl: './app.component.html'
 | 
			
		||||
})
 | 
			
		||||
export class AppComponent {
 | 
			
		||||
    @ViewChild('fileUploader') fileUploader: ElementRef;
 | 
			
		||||
    @ViewChild('holdingInput') holdingInput: ElementRef;
 | 
			
		||||
 | 
			
		||||
    autoCompleteList = new EventEmitter<string[]>(); // Async pipe to provide autocomplete list after being filtered by the text input
 | 
			
		||||
    autoCompleteList = new BehaviorSubject<string[]>([]); // Async pipe to provide autocomplete list after being filtered by the text input
 | 
			
		||||
    colorScheme = colorScheme; // colors
 | 
			
		||||
    chartResults = []; // This is where the chart reads the data from
 | 
			
		||||
    holdings: string[] = []; // All the merged holdings
 | 
			
		||||
@@ -39,7 +41,7 @@ export class AppComponent {
 | 
			
		||||
        this.autoCompleteList.next(this.holdings);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    constructor() {
 | 
			
		||||
    constructor(private ngZone: NgZone) {
 | 
			
		||||
        // Hack to connect angular context to the native one
 | 
			
		||||
        setInterval(() => this.timer = Math.round(window['timer'] * 10) / 10, 250);
 | 
			
		||||
    }
 | 
			
		||||
@@ -50,7 +52,7 @@ export class AppComponent {
 | 
			
		||||
        this.data = Object.assign({}, this.data);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    search(text: string) {
 | 
			
		||||
    search(text?: string) {
 | 
			
		||||
        // Filter the holdings list by the text and push it through the async pipe
 | 
			
		||||
        if(!text) this.autoCompleteList.next(this.holdings);
 | 
			
		||||
        this.autoCompleteList.next(this.holdings.filter(holding => holding.toLowerCase().indexOf(text) != -1));
 | 
			
		||||
@@ -58,6 +60,8 @@ export class AppComponent {
 | 
			
		||||
 | 
			
		||||
    @timer
 | 
			
		||||
    upload(fileList: FileList) {
 | 
			
		||||
        if(!fileList || !fileList.length) return;
 | 
			
		||||
 | 
			
		||||
        // Because we enabled uploading multiple fileNames at once we need to process each one individually
 | 
			
		||||
        const files: File[] = Array.from(fileList);
 | 
			
		||||
        files.forEach(file => {
 | 
			
		||||
@@ -84,9 +88,11 @@ export class AppComponent {
 | 
			
		||||
            };
 | 
			
		||||
            reader.readAsText(file);
 | 
			
		||||
        });
 | 
			
		||||
        this.fileUploader.nativeElement.value = "";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    updateGraph(holding?: string) {
 | 
			
		||||
        // Add holding to chart
 | 
			
		||||
        if(holding) {
 | 
			
		||||
            this.graphHoldings.push(holding);
 | 
			
		||||
            this.holdingInput.nativeElement.value = '';
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,11 @@
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
    <meta charset="utf-8">
 | 
			
		||||
    <title>ETFDemo</title>
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
			
		||||
 | 
			
		||||
    <title>ETF Demo</title>
 | 
			
		||||
    <base href="/">
 | 
			
		||||
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
			
		||||
    <link rel="icon" type="image/x-icon" href="assets/logo.png">
 | 
			
		||||
    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet">
 | 
			
		||||
</head>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user