@using Sandbox; @using Sandbox.UI; @namespace Sandbox.UI @inherits Panel @{ var aspect = this.Box.RectOuter.Size.x / this.Box.RectOuter.Size.y; var bg = Package.Thumb; if (aspect < 0.8f) bg = Package.ThumbTall; if (aspect > 1.2f) bg = Package.ThumbWide; if (this.HasHovered) { bg = Package.VideoThumb ?? bg; } }
@if ( Decorated ) { if (Package.Public == false) {
Hidden
} if ( UsersNow > 0 ) {
sports_esports @UsersNow.KiloFormat()
} else if ( Package.Usage.UsersNow > 0 ) {
sports_esports @Package.Usage.UsersNow.KiloFormat()
} }
@code { [Parameter] public Package Package { get; set; } /// /// Called when the icon part of the card is pressed /// [Parameter] public System.Action OnLaunch { get; set; } /// /// Called when the icon part of the card is right clicked /// [Parameter] public System.Action OnMenu { get; set; } [Parameter] public bool Decorated { get; set; } = true; public int UsersNow { get; set; } protected override int BuildHash() => HashCode.Combine(Package, this.HasHovered, this.Box.RectOuter.Size); string FavouriteClass => Package.Interaction.Favourite ? "is-favourite" : ""; string RatingClass { get { if (Package.Interaction.Rating == null) return ""; if (Package.Interaction.Rating == 0) return "is-rated-up"; if (Package.Interaction.Rating == 1) return "is-rated-down"; return ""; } } public string FormatHoursPlayed() { double minutes = Package.Interaction.Seconds / 60.0; if ( minutes < 60 ) return minutes.ToString("0m"); double hours = Package.Interaction.Seconds / 60.0 / 60.0; if (hours > 10) return hours.ToString("0h"); return hours.ToString("0.#h"); } public string UpdatedString() { return Package.Updated.LocalDateTime.ToRelativeTimeString(); } void OnCardClicked() { OnLaunch?.Invoke(); } void OnCardRightClicked() { OnMenu?.Invoke(); } [Event("package.update.users")] public void UpdateUsers( string ident, long value ) { if (ident != Package.FullIdent) return; var u = Package.Usage; u.UsersNow = value; Package.Usage = u; StateHasChanged(); } [Event("package.update.favourites")] public void UpdateFaves(string ident, long value) { if (ident != Package.FullIdent) return; Package.Favourited = (int) value; StateHasChanged(); } }