diff options
| author | Gunther6070 <haydenhartman10@yahoo.com> | 2025-04-05 23:26:23 -0400 | 
|---|---|---|
| committer | Gunther6070 <haydenhartman10@yahoo.com> | 2025-04-05 23:26:23 -0400 | 
| commit | 0fa67503787b0080c6d398a4d8239eeb469ac107 (patch) | |
| tree | cdab898c9357a4abf4dad4b7509694e06a2e145f /ufund-ui | |
| parent | 1d4073c04aac11226fa3394ba84a745ed427d1cd (diff) | |
| parent | 95798c2b81da7f950850a6bb3c5be28e0323d5ba (diff) | |
| download | JellySolutions-0fa67503787b0080c6d398a4d8239eeb469ac107.tar.gz JellySolutions-0fa67503787b0080c6d398a4d8239eeb469ac107.tar.bz2 JellySolutions-0fa67503787b0080c6d398a4d8239eeb469ac107.zip | |
Merge remote-tracking branch 'origin/main'
Diffstat (limited to 'ufund-ui')
7 files changed, 52 insertions, 54 deletions
| diff --git a/ufund-ui/src/app/components/cupboard/cupboard.component.html b/ufund-ui/src/app/components/cupboard/cupboard.component.html index cd8fec2..4eebc2d 100644 --- a/ufund-ui/src/app/components/cupboard/cupboard.component.html +++ b/ufund-ui/src/app/components/cupboard/cupboard.component.html @@ -25,7 +25,7 @@                  <span class="icon">{{sortMode === 'Ascending' ? 'arrow_upward': 'arrow_downward'}}</span>              </button>              <label>Needs per page: </label> -            <input type ="number" [(ngModel)]="itemsPerPage" min="1" max="{{searchResults.length}}"> +            <input type ="number" [(ngModel)]="itemsPerPage" (change)="editItemsPerPage()" min="1" max="{{searchResults.length}}">          </div>      </div>      <h2 *ngIf="searchResults.length < needs.length && searchResults.length != 0"> Search Results({{needs.length - searchResults.length}} needs filtered): </h2> @@ -46,5 +46,5 @@              <span class="icon">delete</span>Delete Need          </button>      </ng-template> -    <app-need-list [actionArea]="NLActions" *ngIf="searchResults.length > 0" [needs]="searchResults" [itemsPerPage]="itemsPerPage" #needList/> +    <app-need-list [uid]="0" [actionArea]="NLActions" *ngIf="searchResults.length > 0" [needs]="searchResults" [itemsPerPage]="itemsPerPage" #needList/>  </div> diff --git a/ufund-ui/src/app/components/cupboard/cupboard.component.ts b/ufund-ui/src/app/components/cupboard/cupboard.component.ts index b03b77e..aca1397 100644 --- a/ufund-ui/src/app/components/cupboard/cupboard.component.ts +++ b/ufund-ui/src/app/components/cupboard/cupboard.component.ts @@ -26,7 +26,7 @@ export class CupboardComponent implements OnInit {      needs: Need[] = [];      searchResults: Need[] = [];      sortMode: 'Ascending' | 'Descending' = 'Ascending' -    itemsPerPage = 5; +    itemsPerPage = parseInt(localStorage.getItem('itemsPerPage') ?? '5') ?? 5;      currentSortAlgo = 'sortByPriority';      constructor( @@ -135,6 +135,17 @@ export class CupboardComponent implements OnInit {          }      } +    editItemsPerPage() { +        if (this.itemsPerPage > this.searchResults.length) { +            this.itemsPerPage = this.searchResults.length +        } +        if (this.itemsPerPage < 1) { +            this.itemsPerPage = 1 +        } +        localStorage.setItem('itemsPerPage', this.itemsPerPage.toString()) +        this.refresh(); +    } +      protected readonly SortingAlgorithms = SortingAlgoArrays;      protected readonly Object = Object;  } diff --git a/ufund-ui/src/app/components/funding-basket/funding-basket.component.html b/ufund-ui/src/app/components/funding-basket/funding-basket.component.html index 7b1a933..7158194 100644 --- a/ufund-ui/src/app/components/funding-basket/funding-basket.component.html +++ b/ufund-ui/src/app/components/funding-basket/funding-basket.component.html @@ -8,7 +8,7 @@                      <span class="icon">delete</span>Remove from Basket                  </button>              </ng-template> -            <app-need-list [actionArea]="NLActions" [needs]="(usersService.getBasket() | async)!"/> +            <app-need-list [uid]="1" [actionArea]="NLActions" [needs]="(usersService.getBasket() | async)!"/>              <br>              <div id="footer">                  <button class="button2" title="checkout" (click)="checkout()">Checkout</button> diff --git a/ufund-ui/src/app/components/need-list/need-list.component.ts b/ufund-ui/src/app/components/need-list/need-list.component.ts index 40af9f5..7ca0ae7 100644 --- a/ufund-ui/src/app/components/need-list/need-list.component.ts +++ b/ufund-ui/src/app/components/need-list/need-list.component.ts @@ -10,42 +10,46 @@ import {GoalType, Need} from '../../models/Need';  export class NeedListComponent implements OnChanges {      @Input({required: true}) needs!: Need[] +    @Input({required: true}) uid!: number      @Input() itemsPerPage: number = 5;      @Input() actionArea: TemplateRef<any> | null = null      visibleNeeds: Need[] = []; -    currentPage: number = 0; +    currentPage: number = parseInt(localStorage.getItem('currentPage'+this.uid) ?? '0') ?? 0;      totalPages: number = 0; -    constructor( - -    ) {} -      ngOnChanges() {          this.updateVisibleNeeds() +        this.currentPage = parseInt(localStorage.getItem('currentPage'+this.uid) ?? '0') ?? 0;      }      getPrefix(need: Need) {          return (need.type === GoalType.MONETARY) ? "$" : "";      } +    //increment/decrement      decrementPage() {          this.currentPage--; +        localStorage.setItem('currentPage'+this.uid, this.currentPage.toString());          this.updateVisibleNeeds();      }      incrementPage() {          this.currentPage++; +        localStorage.setItem('currentPage'+this.uid, this.currentPage.toString());          this.updateVisibleNeeds();      } +    //skipping pages      lastPage() {          this.currentPage = this.totalPages - 1 +        localStorage.setItem('currentPage'+this.uid, this.currentPage.toString());          this.updateVisibleNeeds()      }      firstPage() {          this.currentPage = 0 +        localStorage.setItem('currentPage'+this.uid, this.currentPage.toString());          this.updateVisibleNeeds()      } diff --git a/ufund-ui/src/app/components/need-page/need-page.component.css b/ufund-ui/src/app/components/need-page/need-page.component.css index f1b7f1f..6ca1350 100644 --- a/ufund-ui/src/app/components/need-page/need-page.component.css +++ b/ufund-ui/src/app/components/need-page/need-page.component.css @@ -4,11 +4,13 @@  }  #box { +    /*padding-top: 7.5%;*/      display: flex;      flex-direction: column;      width: 800px;      justify-content: start;      gap: 10px; +    padding: 0 10px;  }  .needName { @@ -22,32 +24,19 @@      /*margin-bottom: 20px;*/  } -.split { -    display: flex; -    flex-direction: row; -    justify-content: space-between; - - -    .left { -        display: flex; -        flex-direction: column; -        width : 50%; -    } - -    .right { -        display: flex; -        flex-direction: column; -        align-items: end; -    } -}  .need-image { -    width: 400px; -    height: auto; +    width: calc(100% + 40px); +    height: 40%; +    /*position: absolute;*/ +    left: 22.5%;      aspect-ratio: 16/9;      object-fit: cover; +    mask-image: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(255,255,255,.2) 80%, rgba(255,255,255,.1) 90%, transparent 100%);      border-radius: 10px; -    box-shadow: rgb(0, 40, 70) 0 0 50px; +    margin-left: -20px; +    margin-right: -20px; +    margin-bottom: -80px;  }  .urgent { diff --git a/ufund-ui/src/app/components/need-page/need-page.component.html b/ufund-ui/src/app/components/need-page/need-page.component.html index ff5990f..2629346 100644 --- a/ufund-ui/src/app/components/need-page/need-page.component.html +++ b/ufund-ui/src/app/components/need-page/need-page.component.html @@ -1,5 +1,6 @@  <div id="box">      @if (need) { +        <img *ngIf="need.image" alt="Need image" class="need-image" [src]="need.image"/>          <h1>{{need.name}}</h1>          <span class="needType">{{need.type}} GOAL</span>          <p>{{need.description}}</p> @@ -8,35 +9,26 @@              <span>This goal is <strong>{{(((need.current)*100) / (need.maxGoal)).toFixed(0)}}%</strong> complete!</span>          </div> +        <span><strong>Target Goal:</strong> {{(need.type === GoalType.MONETARY) ? "$" : ""}}{{need.maxGoal}}</span> -        <div class="split"> -          <div class="left"> -            <span><strong>Target Goal:</strong> {{(need.type === GoalType.MONETARY) ? "$" : ""}}{{need.maxGoal}}</span> +        <span><strong>Amount Currently Collected:</strong> {{need.type.toString() == 'MONETARY' ? '$' : ''}}{{need.current}}</span> -            <span><strong>Amount Currently Collected:</strong> {{need.type.toString() == 'MONETARY' ? '$' : ''}}{{need.current}}</span> +        <span><strong>Location:</strong> {{need.location}}</span> -            <span><strong>Location:</strong> {{need.location}}</span> +        <span><strong>Urgency: </strong> +            <span *ngIf="!need.urgent">Not urgent</span> +            <span *ngIf="need.urgent" class="urgent">URGENT</span> +        </span> -                <span><strong>Urgency: </strong> -                    <span *ngIf="!need.urgent">Not urgent</span> -                    <span *ngIf="need.urgent" class="urgent">URGENT</span> -                </span> - -            <div *ngIf="need.filterAttributes?.length"> -                    <strong>Tags:</strong> -                    <ul style="display: flex; column-gap: 24px;"> -                        <li *ngFor="let tag of need?.filterAttributes"> -                            <p>{{tag}}</p> -                        </li> -                    </ul> -                </div> -            </div> -            <div class="right"> -              <img *ngIf="need.image" alt="Need image" class="need-image" [src]="need.image"/> -            </div> +        <div *ngIf="need.filterAttributes?.length"> +            <strong>Tags:</strong> +            <ul style="display: flex; column-gap: 24px;"> +                <li *ngFor="let tag of need?.filterAttributes"> +                    <p>{{tag}}</p> +                </li> +            </ul>          </div> -          <div class="actionArea">              <button *ngIf="usersService.isHelper()" (click)="add(need)" [disabled]="usersService.inBasket(usersService.getBasket() | async, need)">                  <span class="icon">{{usersService.inBasket(usersService.getBasket() | async, need)? "check": "add" }}</span>Add To Basket diff --git a/ufund-ui/src/app/services/users.service.ts b/ufund-ui/src/app/services/users.service.ts index 35d080d..688d6e4 100644 --- a/ufund-ui/src/app/services/users.service.ts +++ b/ufund-ui/src/app/services/users.service.ts @@ -60,7 +60,9 @@ export class UsersService {      }      refreshBasket() { -        let promiseArr = this.authService.getCurrentUser()!.basket.map(async needID => { +        let usr = this.authService.getCurrentUser(); +        if (!usr) return; +        let promiseArr = usr.basket.map(async needID => {              return await firstValueFrom(this.cupboardService.getNeed(needID));          })          Promise.all(promiseArr).then(r => this.basket.next(r)); | 
