Skip to content

Commit b6213a2

Browse files
committed
Improved NewPortfolio.razor page
Improved Index.razor page
1 parent e35d188 commit b6213a2

File tree

3 files changed

+79
-99
lines changed

3 files changed

+79
-99
lines changed

WebFrontend/Pages/Index.razor

Lines changed: 52 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
@using Services
44
@using Utils
55
@inject Microsoft.AspNetCore.Components.NavigationManager NavigationManager
6+
@inject IPortfolioService PortfolioService
67

78
<style>
89
.demo-mat-card {
@@ -29,55 +30,62 @@
2930

3031
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-3"></div>
3132
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-6">
32-
<MatCard class="demo-mat-card">
33-
<MatCardContent>
34-
<div class="demo-mat-card-content">
35-
<MatHeadline6 class="clear-margin">
36-
<MatChipSet Style="align-items: center">
37-
<MatH5 Class="clear-margin">@activePortfolio.Name</MatH5>
38-
<MatChip Style="vertical-align: center" Label="@CurrencyUtils.GetCurrencyLabel(activePortfolio.Currency)"/>
39-
</MatChipSet>
40-
</MatHeadline6>
41-
</div>
42-
43-
<MatBody2 class="demo-mat-card-content clear-margin">
44-
<div class="mat-layout-grid">
45-
<div class="mat-layout-grid-inner" style="align-items: center">
46-
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-6">
47-
<MatH4 Class="clear-margin">@(CurrencyUtils.Format(portfolioSummary.MarketValue, activePortfolio.Currency))</MatH4>
48-
</div>
49-
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-6" style="text-align: end">
50-
@(portfolioSummary.RelativeChange * 100m) %
33+
@if (activePortfolio != null)
34+
{
35+
<MatCard class="demo-mat-card">
36+
<MatCardContent>
37+
<div class="demo-mat-card-content">
38+
<MatHeadline6 class="clear-margin">
39+
<MatChipSet Style="align-items: center">
40+
<MatH5 Class="clear-margin">@activePortfolio.Name</MatH5>
41+
<MatChip Style="vertical-align: center" Label="@CurrencyUtils.GetCurrencyLabel(activePortfolio.Currency)"/>
42+
</MatChipSet>
43+
</MatHeadline6>
44+
</div>
45+
46+
<MatBody2 class="demo-mat-card-content clear-margin">
47+
<div class="mat-layout-grid">
48+
<div class="mat-layout-grid-inner" style="align-items: center">
49+
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-6">
50+
<MatH4 Class="clear-margin">@(CurrencyUtils.Format(portfolioSummary.MarketValue, activePortfolio.Currency))</MatH4>
51+
</div>
52+
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-6" style="text-align: end">
53+
@(portfolioSummary.RelativeChange * 100m) %
54+
</div>
5155
</div>
5256
</div>
53-
</div>
54-
</MatBody2>
55-
</MatCardContent>
56-
</MatCard>
57-
<MatTable Items="@portfolioEntryRows" Striped="true" AllowSelection="true" RowClass="tester" class="mat-elevation-z5" ShowPaging="false" PageSize="9999" SelectionChanged="SelectionChangedEvent">
58-
<MatTableHeader>
59-
<th>Coin</th>
60-
<th>Price</th>
61-
<th>Change (1h)</th>
62-
<th>Holdings</th>
63-
</MatTableHeader>
64-
<MatTableRow>
65-
<td>@context.symbol.ToUpper()</td>
66-
<td>@(CurrencyUtils.Format(context.currentPrice, activePortfolio.Currency))</td>
67-
<td style='color: @(context.relativeChange >= 0 ? "#17a104" : "#FF0000")'>@context.relativeChange%</td>
68-
<td>@context.percentage%</td>
69-
</MatTableRow>
70-
</MatTable>
57+
</MatBody2>
58+
</MatCardContent>
59+
</MatCard>
60+
<MatTable Items="@portfolioEntryRows" Striped="true" AllowSelection="true" RowClass="tester" class="mat-elevation-z5" ShowPaging="false" PageSize="9999" SelectionChanged="SelectionChangedEvent">
61+
<MatTableHeader>
62+
<th>Coin</th>
63+
<th>Price</th>
64+
<th>Change (1h)</th>
65+
<th>Holdings</th>
66+
</MatTableHeader>
67+
<MatTableRow>
68+
<td>@context.symbol.ToUpper()</td>
69+
<td>@(CurrencyUtils.Format(context.currentPrice, activePortfolio.Currency))</td>
70+
<td style='color: @(context.relativeChange >= 0 ? "#17a104" : "#FF0000")'>@context.relativeChange%</td>
71+
<td>@context.percentage%</td>
72+
</MatTableRow>
73+
</MatTable>
74+
}
75+
else
76+
{
77+
<MatProgressBar Indeterminate="true"></MatProgressBar>
78+
}
7179
</div>
7280
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-3"></div>
7381
</div>
7482
</div>
75-
<MatFAB Class="app-fab--absolute" Icon="@MatIconNames.Add" Label="Add a new entry"></MatFAB>
83+
<MatFAB Class="app-fab--absolute" Icon="@MatIconNames.Add" Label="Add a new entry" OnClick='() => { NavigationManager.NavigateTo($"newportfolioentry/{activePortfolio.Id}"); }'></MatFAB>
7684

7785

7886
@code
7987
{
80-
protected Portfolio activePortfolio = new Portfolio("Main Portfolio", "My main portfolio to be used", Currency.Usd);
88+
protected Portfolio activePortfolio;
8189

8290
protected ISummaryService.Summary portfolioSummary = new(1341m, 1.8m, 9982.489m, 1000m);
8391

@@ -110,6 +118,11 @@
110118

111119
protected record PortfolioEntryRow(string symbol, decimal currentPrice, decimal relativeChange, decimal percentage);
112120

121+
protected override void OnInitialized()
122+
{
123+
activePortfolio = PortfolioService.GetPortfolios()[0];
124+
}
125+
113126
protected override async Task OnInitializedAsync()
114127
{
115128
//_existingPortfolios = PortfolioService.GetPortfolios();

WebFrontend/Pages/NewMarketOrder.razor

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
@bind-Value=@FormModel.Fee>
5151
</MatTextField>
5252
<ValidationMessage For="@(() => FormModel.Fee)"/>
53-
5453
</p>
5554

5655
<p>

WebFrontend/Pages/NewPortfolio.razor

Lines changed: 27 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -27,72 +27,40 @@
2727
<div class="mat-layout-grid">
2828
<div class="mat-layout-grid-inner">
2929
<div class="mat-layout-grid-cell">
30-
<h2>Create a new portfolio</h2>
31-
<EditForm Model="FormModel" OnValidSubmit="SaveButtonClicked">
32-
<DataAnnotationsValidator/>
33-
<p>
34-
<MatTextField @bind-Value="@FormModel.Name" Label="Portfolio name"></MatTextField>
35-
<ValidationMessage For="@(() => FormModel.Name)"/>
36-
</p>
37-
38-
<p>
39-
<MatTextField @bind-Value="@FormModel.Description" Label="Description"></MatTextField>
40-
<ValidationMessage For="@(() => FormModel.Description)"/>
41-
</p>
42-
<MatRadioGroup @bind-Value="@FormModel.SelectedCurrency" Items="@AvailableCurrencies">
43-
<ItemTemplate Context="currencyContext">
44-
<div>
45-
<MatRadioButton Value="@currencyContext">@GetCurrencyLabel(@currencyContext)</MatRadioButton>
46-
</div>
47-
</ItemTemplate>
48-
</MatRadioGroup>
49-
<ValidationMessage For="@(() => FormModel.SelectedCurrency)"/>
50-
<p>
51-
<MatButton Raised="true" Type="submit">Create</MatButton>
52-
</p>
53-
</EditForm>
54-
</div>
55-
<div class="mat-layout-grid-cell">
56-
<h2>Existing portfolios</h2>
57-
@if (_existingPortfolios == null)
58-
{
59-
<MatProgressBar Indeterminate="true"></MatProgressBar>
60-
}
61-
else if (_existingPortfolios.Count > 0)
62-
{
63-
@foreach (var portfolio in _existingPortfolios)
64-
{
65-
<MatCard class="demo-mat-card">
66-
<MatCardContent>
67-
<div class="demo-mat-card-content">
68-
<MatHeadline6 class="demo-mat-card-clean-margin">
69-
<MatChipSet>
70-
@portfolio.Name
71-
<MatChip Label="@GetCurrencyLabel(portfolio.Currency)"/>
72-
</MatChipSet>
73-
</MatHeadline6>
74-
</div>
75-
76-
<MatBody2 class="demo-mat-card-content demo-mat-card-clean-margin">
77-
@portfolio.Description
78-
</MatBody2>
79-
</MatCardContent>
30+
<MatCard>
31+
<MatCardContent class="demo-mat-card-content">
32+
<h2>New portfolio</h2>
33+
<EditForm Model="FormModel" OnValidSubmit="SaveButtonClicked">
34+
<DataAnnotationsValidator/>
35+
<p>
36+
<MatTextField FullWidth="true" @bind-Value="@FormModel.Name" Label="Portfolio name"></MatTextField>
37+
<ValidationMessage For="@(() => FormModel.Name)"/>
38+
</p>
39+
40+
<p>
41+
<MatTextField FullWidth="true" @bind-Value="@FormModel.Description" Label="Description"></MatTextField>
42+
<ValidationMessage For="@(() => FormModel.Description)"/>
43+
</p>
44+
<MatRadioGroup @bind-Value="@FormModel.SelectedCurrency" Items="@AvailableCurrencies">
45+
<ItemTemplate Context="currencyContext">
46+
<div>
47+
<MatRadioButton Value="@currencyContext">@GetCurrencyLabel(@currencyContext)</MatRadioButton>
48+
</div>
49+
</ItemTemplate>
50+
</MatRadioGroup>
51+
<ValidationMessage For="@(() => FormModel.SelectedCurrency)"/>
8052
<MatCardActions>
8153
<MatCardActionButtons>
82-
<MatButton OnClick='() => { NavigationManager.NavigateTo($"newportfolioentry/{portfolio.Id}");}'>View</MatButton>
54+
<MatButton Type="submit">Create</MatButton>
8355
</MatCardActionButtons>
8456

8557
<MatCardActionIcons>
86-
<MatIconButton Icon="@MatIconNames.Delete" OnClick="(_) => DeletePortfolio(portfolio)"></MatIconButton>
58+
<MatIconButton Icon="@MatIconNames.Refresh" OnClick="(_) => FormModel.Reset()"></MatIconButton>
8759
</MatCardActionIcons>
8860
</MatCardActions>
89-
</MatCard>
90-
}
91-
}
92-
else
93-
{
94-
<MatSubtitle2>No portfolios found</MatSubtitle2>
95-
}
61+
</EditForm>
62+
</MatCardContent>
63+
</MatCard>
9664
</div>
9765
</div>
9866
</div>

0 commit comments

Comments
 (0)