btcpayserver/BTCPayServer/Views/Shared/PosDataEntry.cshtml
Chukwuleta Tobechi f59751853a
Fx pos data additional info (#6172)
* Resolve Additional Information from posData

* code formatting

* Minor adjustments

* Update ChromeDriver

* Revert and improve PosData partial

---------

Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
Co-authored-by: Nicolas Dorier <nicolas.dorier@gmail.com>
2024-09-12 12:27:02 +09:00

57 lines
1.9 KiB
Plaintext

@model (string Key, object Value, int Level)
@functions {
private bool IsValidURL(string source)
{
return Uri.TryCreate(source, UriKind.Absolute, out var uriResult) &&
(uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
}
}
@if (Model.Value is string str)
{
if (!string.IsNullOrEmpty(Model.Key))
{
<th>@Model.Key</th>
}
<td style="white-space:pre-wrap" class="@(string.IsNullOrEmpty(Model.Key) ? null : "text-end")">@* Explicitely remove whitespace at front here *@@if (IsValidURL(str)){<a href="@str" target="_blank" rel="noreferrer noopener">@str</a>}else {@str.Trim()}</td>
}
else if (Model.Value is Dictionary<string, object> { Count: > 0 } subItems)
{
<td colspan="2">
@{
@if (!string.IsNullOrEmpty(Model.Key))
{
Write(Html.Raw($"<h{Model.Level + 3} class=\"mb-3 fw-semibold\">"));
Write(Model.Key);
Write(Html.Raw($"</h{Model.Level + 3}>"));
}
}
<partial name="PosData" model="@((subItems, Model.Level + 1))" />
</td>
}
else if (Model.Value is IEnumerable<object> valueArray)
{
<td colspan="2">
@{
@if (!string.IsNullOrEmpty(Model.Key))
{
Write(Html.Raw($"<h{Model.Level + 3} class=\"mb-3 fw-semibold\">"));
Write(Model.Key);
Write(Html.Raw($"</h{Model.Level + 3}>"));
}
}
@foreach (var item in valueArray)
{
@if (item is Dictionary<string, object> { Count: > 0 } subItems2)
{
<partial name="PosData" model="@((subItems2, Model.Level + 1))" />
}
else
{
<partial name="PosData" model="@((new Dictionary<string, object> { { "", item } }, Model.Level + 1))" />
}
}
</td>
}