diff options
Diffstat (limited to 'ufund-ui/src/app/components/dashboard')
| -rw-r--r-- | ufund-ui/src/app/components/dashboard/dashboard.component.ts | 37 | 
1 files changed, 26 insertions, 11 deletions
diff --git a/ufund-ui/src/app/components/dashboard/dashboard.component.ts b/ufund-ui/src/app/components/dashboard/dashboard.component.ts index c94b5c6..8c397ff 100644 --- a/ufund-ui/src/app/components/dashboard/dashboard.component.ts +++ b/ufund-ui/src/app/components/dashboard/dashboard.component.ts @@ -1,10 +1,10 @@  import {Component, OnInit} from '@angular/core';  import {AuthService} from '../../services/auth.service';  import {Router} from '@angular/router'; -import {Need} from '../../models/Need';  import {CupboardService} from '../../services/cupboard.service'; -import {firstValueFrom} from 'rxjs';  import {UsersService} from '../../services/users.service'; +import {BehaviorSubject} from 'rxjs'; +import {GoalType, Need} from '../../models/Need';  @Component({      selector: 'app-dashboard', @@ -14,9 +14,10 @@ import {UsersService} from '../../services/users.service';  })  export class DashboardComponent implements OnInit{ -    topNeeds?: Need[] -    almostThere?: Need[] -    inBasket?: Need[] +    protected count = new BehaviorSubject<number | undefined>(undefined) +    protected totalDonations = new BehaviorSubject<number | undefined>(undefined) +    protected fulfilledNeeds = new BehaviorSubject<number | undefined>(undefined) +    protected mostFulfilledNeeds = new BehaviorSubject<Need[] | undefined>(undefined)      constructor(          protected authService: AuthService, @@ -32,14 +33,28 @@ export class DashboardComponent implements OnInit{              return          } -        firstValueFrom(this.cupboardService.getNeeds()).then(r => { -            this.topNeeds = r.sort((a, b) => b.current - a.current) -            this.almostThere = r.sort((a, b) => a.current/a.maxGoal - b.current/b.maxGoal) -        }) +        this.userService.getCount().subscribe(count => this.count.next(count)) +        this.cupboardService.getNeeds().subscribe(needs => { +            let fulfilledNeeds = 0 +            let totalValue = 0 +            for (let need of needs) { +                let needPercent = need.current / need.maxGoal +                if (needPercent >= 1) { +                    fulfilledNeeds++ +                    this.fulfilledNeeds.next(fulfilledNeeds) +                } +                if (need.type === GoalType.MONETARY) { +                    totalValue += need.current +                    this.totalDonations.next(totalValue) +                } -        this.userService.getBasket().subscribe(r => { -            this.inBasket = r; +            } +            needs.sort((a, b) => b.current/b.maxGoal - a.current/a.maxGoal) +            needs = needs.filter(a => a.current != 0) +            this.mostFulfilledNeeds.next(needs.slice(0, 5))          }) + +      }  }  | 
