Skip to content

Commit

Permalink
feat: Made links editable (#213)
Browse files Browse the repository at this point in the history
  • Loading branch information
Metawolve authored Sep 4, 2024
1 parent bd4cdcc commit aaaff8a
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,10 @@
<PropertyColumn Title="Target" Property="link => link.Target" />
<TemplateColumn CellClass="d-flex justify-end">
<CellTemplate>
<MudIconButton Icon="@Icons.Material.Filled.Edit"
OnClick="@(() => UpdateLink(context.Item))" />
<MudIconButton Icon="@Icons.Material.Filled.Delete"
OnClick="@(() => DeleteLink(@context.Item.Id))" />
OnClick="@(() => DeleteLink(@context.Item.Id))"/>
</CellTemplate>
</TemplateColumn>
</Columns>
Expand Down Expand Up @@ -168,19 +170,39 @@

private async Task AddLink()
{
var parameters = new DialogParameters<KnowledgeEntryDialog> { { x => x.Record, null } };
var parameters = new DialogParameters<LinkFragmentDialog> { { x => x.Record, null } };

var dialog = await DialogService.ShowAsync<LinkFragmentDialog>("New link", parameters);
var result = await dialog.Result;

if (!result?.Canceled ?? false && result.Data != null)
if (result is { Canceled: false })
{
var link = result?.Data as LinkFragment;
var link = result.Data as LinkFragment;

Record?.Links.Add(link);
}
}

private async Task UpdateLink(LinkFragment record)
{
var parameters = new DialogParameters<LinkFragmentDialog> { { x => x.Record, record } };

var dialog = await DialogService.ShowAsync<LinkFragmentDialog>("New link", parameters);
var result = await dialog.Result;

if (result is { Canceled: false })
{
var link = result.Data as LinkFragment;

var currentLinkIndex = Record?.Links.FindIndex(l => l.Id == link?.Id);

if (Record != null && currentLinkIndex != null)
{
Record.Links[(int)currentLinkIndex] = link;
}
}
}

private void DeleteLink(Guid id)
{
Record?.Links.Remove(Record.Links.FirstOrDefault(link => link.Id == id));
Expand Down
29 changes: 16 additions & 13 deletions src/Eurofurence.App.Backoffice/Components/LinkFragmentDialog.razor
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
@using Eurofurence.App.Domain.Model.Knowledge
@using Eurofurence.App.Backoffice.Services
@using Eurofurence.App.Backoffice.Services
@using Eurofurence.App.Domain.Model.Fragments
@inject ISnackbar Snackbar
@inject IKnowledgeService KnowledgeService

<MudDialog>
<DialogContent>
@if (Record != null)
@if (RecordInternal != null)
{
<MudTextField T="string" @bind-Value="Record.Name" Label="Name" />
<MudSelect @bind-Value="Record.FragmentType" Label="Type">
<MudTextField T="string" @bind-Value="RecordInternal.Name" Label="Name" />
<MudSelect @bind-Value="RecordInternal.FragmentType" Label="Type">
@foreach (LinkFragment.FragmentTypeEnum item in Enum.GetValues(typeof(LinkFragment.FragmentTypeEnum)))
{
<MudSelectItem Value="@item">@item</MudSelectItem>
}
</MudSelect>
<MudTextField T="string" @bind-Value="Record.Target" Label="Target" />
<MudTextField T="string" @bind-Value="RecordInternal.Target" Label="Target" />
}
</DialogContent>
<DialogActions>
Expand All @@ -29,32 +28,36 @@

[Parameter] public LinkFragment? Record { get; set; }

private LinkFragment? RecordInternal { get; set; }

private bool Update { get; set; }

protected override void OnInitialized()
{
if (Record == null)
{
Record = new LinkFragment()
RecordInternal = new LinkFragment()
{
Id = Guid.NewGuid()
};
}
else
{
Update = true;
RecordInternal = new LinkFragment()
{
Id = Record.Id,
Name = Record.Name,
FragmentType = Record.FragmentType,
Target = Record.Target
};
}
}

private void Cancel() => MudDialog?.Cancel();

private void Save()
{
if (Record == null)
{
return;
}

MudDialog?.Close(DialogResult.Ok(Record));
MudDialog?.Close(DialogResult.Ok(RecordInternal));
}
}

0 comments on commit aaaff8a

Please sign in to comment.