Browse Source

Convert to table layout with less padding for better UI

pull/4044/head
JoryHogeveen 9 months ago
parent
commit
b2f094602c
  1. 71
      libs/ui/src/lib/top-holdings/top-holdings.component.html
  2. 19
      libs/ui/src/lib/top-holdings/top-holdings.component.scss
  3. 8
      libs/ui/src/lib/top-holdings/top-holdings.component.ts

71
libs/ui/src/lib/top-holdings/top-holdings.component.html

@ -85,31 +85,52 @@
} }
</div> </div>
<mat-list> <table mat-table [dataSource]="element.parents">
@for (parentHolding of element.parents; track parentHolding) { <ng-container matColumnDef="name">
<mat-list-item> <th *matHeaderCellDef mat-header-cell>Name</th>
<span matListItemTitle style="font-size: inherit" <td *matCellDef="let parentHolding" mat-cell>
>{{ parentHolding.name }} ({{ <span
parentHolding.symbol class="colorBadge"
}}):</span [style.background-color]="getColor(parentHolding?.symbol)"
> ></span>
<span matListItemMeta> {{ parentHolding?.name }}
<gf-value </td>
[isCurrency]="true" </ng-container>
[locale]="locale" <ng-container matColumnDef="symbol">
[value]="parentHolding?.valueInBaseCurrency" <th *matHeaderCellDef mat-header-cell>Symbol</th>
/> <td *matCellDef="let parentHolding" mat-cell>
</span> {{ parentHolding?.symbol }}
<span matListItemMeta> </td>
<gf-value </ng-container>
[isPercent]="true" <ng-container matColumnDef="valueInBaseCurrency">
[locale]="locale" <th *matHeaderCellDef mat-header-cell>Value</th>
[value]="parentHolding?.allocationInPercentage" <td *matCellDef="let parentHolding" mat-cell>
/> <gf-value
</span> [isCurrency]="true"
</mat-list-item> [locale]="locale"
} [value]="parentHolding?.valueInBaseCurrency"
</mat-list> />
</td>
</ng-container>
<ng-container matColumnDef="allocationInPercentage">
<th *matHeaderCellDef mat-header-cell>Allocation</th>
<td *matCellDef="let parentHolding" mat-cell>
<gf-value
[isPercent]="true"
[locale]="locale"
[value]="parentHolding?.allocationInPercentage"
/>
</td>
</ng-container>
<tr
*matHeaderRowDef="displayedHoldingParentColumns"
mat-header-row
></tr>
<tr
*matRowDef="let row; columns: displayedHoldingParentColumns"
mat-row
></tr>
</table>
</div> </div>
</div> </div>
</td> </td>

19
libs/ui/src/lib/top-holdings/top-holdings.component.scss

@ -21,6 +21,7 @@
.holdingParents { .holdingParents {
padding: 1em 0; padding: 1em 0;
--table-padding: 0.5em;
.holdingParentProportionChart { .holdingParentProportionChart {
height: 2em; height: 2em;
@ -28,15 +29,31 @@
div { div {
box-sizing: border-box; box-sizing: border-box;
line-height: 2em; line-height: 2em;
padding: 0 0.5em; padding: 0 var(--table-padding);
overflow: hidden; overflow: hidden;
} }
} }
.colorBadge {
width: 0.75em;
height: 0.75em;
border-radius: 100%;
display: inline-block;
}
table, table,
tr, tr,
th,
td { td {
background-color: transparent; background-color: transparent;
} }
tr {
height: auto;
}
th,
td {
padding: var(--table-padding);
}
} }
} }

8
libs/ui/src/lib/top-holdings/top-holdings.component.ts

@ -20,7 +20,6 @@ import {
ViewChild ViewChild
} from '@angular/core'; } from '@angular/core';
import { MatButtonModule } from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button';
import { MatListModule } from '@angular/material/list';
import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator'; import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
import { MatSort, MatSortModule } from '@angular/material/sort'; import { MatSort, MatSortModule } from '@angular/material/sort';
import { MatTableDataSource, MatTableModule } from '@angular/material/table'; import { MatTableDataSource, MatTableModule } from '@angular/material/table';
@ -60,7 +59,6 @@ const {
CommonModule, CommonModule,
GfValueComponent, GfValueComponent,
MatButtonModule, MatButtonModule,
MatListModule,
MatPaginatorModule, MatPaginatorModule,
MatSortModule, MatSortModule,
MatTableModule, MatTableModule,
@ -92,6 +90,12 @@ export class GfTopHoldingsComponent implements OnChanges, OnDestroy {
'valueInBaseCurrency', 'valueInBaseCurrency',
'allocationInPercentage' 'allocationInPercentage'
]; ];
public displayedHoldingParentColumns: string[] = [
'name',
'symbol',
'valueInBaseCurrency',
'allocationInPercentage'
];
public isLoading = true; public isLoading = true;
private unsubscribeSubject = new Subject<void>(); private unsubscribeSubject = new Subject<void>();

Loading…
Cancel
Save