@{ /****************************************************************************** // MARECHAI: Master repository of computing history artifacts information // ---------------------------------------------------------------------------- // // Filename : Search.razor // Author(s) : Natalia Portillo // // --[ Description ] ---------------------------------------------------------- // // Computers search // // --[ License ] -------------------------------------------------------------- // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // ---------------------------------------------------------------------------- // Copyright © 2003-2020 Natalia Portillo *******************************************************************************/ } @page "/computers/all" @page "/computers/year/{Year:int}" @page "/computers/{StartingCharacter}" @inherits OwningComponentBase @inject IStringLocalizer L @if (_computers is null) { @L["Loading..."] }

@L["Search results:"]

@if (_character.HasValue) { @string.Format(L["Computers starting with {0}"], _character)
} else if (Year.HasValue) { @string.Format(L["Computers introduced in {0}"], Year)
} @if (_computers?.Count > 0) {

@string.Format(L["{0} computers found in the database."], _computers.Count)
@foreach (var computer in _computers) { @computer.CompanyName @computer.Name
}

} else { @if (_character.HasValue) {

@L["There are no computers found in the database that start with this letter."]

} else if (Year.HasValue) {

@L["There are no computers found introduced this year."]

} }

@code { [Parameter] public int? Year { get; set; } [Parameter] public string StartingCharacter { get; set; } List _computers; char? _character; protected override async Task OnInitializedAsync() { _character = null; if (!string.IsNullOrWhiteSpace(StartingCharacter) && StartingCharacter.Length == 1) { _character = StartingCharacter[0]; // ToUpper() if (_character >= 'a' && _character <= 'z') _character -= (char)32; // Check if not letter or number if (_character < '0' || (_character > '9' && _character < 'A') || _character > 'Z') _character = null; } if (_character.HasValue) _computers = await Service.GetComputersByLetterAsync(_character.Value); if (Year.HasValue && _computers is null) _computers = await Service.GetComputersByYearAsync(Year.Value); _computers ??= await Service.GetComputersAsync(); } }