Browse Source

Created UiPageProgress component and service

pull/6853/head
Mladen Macanovic 5 years ago
parent
commit
348d1cbda8
  1. 1
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/MainLayout.razor
  2. 10
      framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/IUiPageProgressService.cs
  3. 14
      framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/NullUiPageProgressService.cs
  4. 17
      framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressEventArgs.cs
  5. 13
      framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressOptions.cs
  6. 11
      framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressType.cs
  7. 32
      framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiPageProgressService.cs
  8. 1
      framework/src/Volo.Abp.BlazoriseUI/Components/UiPageProgress.razor
  9. 58
      framework/src/Volo.Abp.BlazoriseUI/Components/UiPageProgress.razor.cs

1
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/MainLayout.razor

@ -21,4 +21,5 @@
<UiMessageAlert />
<UiNotificationAlert />
<UiPageProgress />
</div>

10
framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/IUiPageProgressService.cs

@ -0,0 +1,10 @@
using System;
using System.Threading.Tasks;
namespace Volo.Abp.AspNetCore.Components.Progression
{
public interface IUiPageProgressService
{
Task Go(int? percentage, Action<UiPageProgressOptions> options = null);
}
}

14
framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/NullUiPageProgressService.cs

@ -0,0 +1,14 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Components.Progression
{
public class NullUiPageProgressService : IUiPageProgressService, ITransientDependency
{
public Task Go(int? percentage, Action<UiPageProgressOptions> options = null)
{
return Task.CompletedTask;
}
}
}

17
framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressEventArgs.cs

@ -0,0 +1,17 @@
using System;
namespace Volo.Abp.AspNetCore.Components.Progression
{
public class UiPageProgressEventArgs : EventArgs
{
public UiPageProgressEventArgs(int? percentage, UiPageProgressOptions options)
{
Percentage = percentage;
Options = options;
}
public int? Percentage { get; }
public UiPageProgressOptions Options { get; }
}
}

13
framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressOptions.cs

@ -0,0 +1,13 @@
namespace Volo.Abp.AspNetCore.Components.Progression
{
/// <summary>
/// Options to override page progress appearance.
/// </summary>
public class UiPageProgressOptions
{
/// <summary>
/// Type or color, of the page progress.
/// </summary>
public UiPageProgressType Type { get; set; }
}
}

11
framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressType.cs

@ -0,0 +1,11 @@
namespace Volo.Abp.AspNetCore.Components.Progression
{
public enum UiPageProgressType
{
Default,
Info,
Success,
Warning,
Error,
}
}

32
framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiPageProgressService.cs

@ -0,0 +1,32 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Components.Progression;
using Volo.Abp.AspNetCore.Components.WebAssembly;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BlazoriseUI
{
[Dependency(ReplaceServices = true)]
public class BlazoriseUiPageProgressService : IUiPageProgressService, IScopedDependency
{
/// <summary>
/// An event raised after the notification is received.
/// </summary>
public event EventHandler<UiPageProgressEventArgs> ProgressChanged;
public Task Go(int? percentage, Action<UiPageProgressOptions> options = null)
{
var uiPageProgressOptions = CreateDefaultOptions();
options?.Invoke(uiPageProgressOptions);
ProgressChanged?.Invoke(this, new UiPageProgressEventArgs(percentage, uiPageProgressOptions));
return Task.CompletedTask;
}
protected virtual UiPageProgressOptions CreateDefaultOptions()
{
return new UiPageProgressOptions();
}
}
}

1
framework/src/Volo.Abp.BlazoriseUI/Components/UiPageProgress.razor

@ -0,0 +1 @@
<PageProgress @ref="@PageProgressRef" Visible="@Visible" Color="@Color" />

58
framework/src/Volo.Abp.BlazoriseUI/Components/UiPageProgress.razor.cs

@ -0,0 +1,58 @@
using System;
using Blazorise;
using Microsoft.AspNetCore.Components;
using Volo.Abp.AspNetCore.Components.Progression;
namespace Volo.Abp.BlazoriseUI.Components
{
public partial class UiPageProgress : ComponentBase, IDisposable
{
protected PageProgress PageProgressRef { get; set; }
protected int? Percentage { get; set; }
protected bool Visible { get; set; }
protected Color Color { get; set; }
[Inject] protected BlazoriseUiPageProgressService UiPageProgressService { get; set; }
protected override void OnInitialized()
{
base.OnInitialized();
UiPageProgressService.ProgressChanged += OnProgressChanged;
}
private async void OnProgressChanged(object sender, UiPageProgressEventArgs e)
{
Percentage = e.Percentage;
Visible = e.Percentage == null || (e.Percentage >= 0 && e.Percentage <= 100);
Color = GetColor(e.Options.Type);
await PageProgressRef.SetValueAsync(e.Percentage);
await InvokeAsync(StateHasChanged);
}
public virtual void Dispose()
{
if (UiPageProgressService != null)
{
UiPageProgressService.ProgressChanged -= OnProgressChanged;
}
}
protected virtual Color GetColor(UiPageProgressType pageProgressType)
{
return pageProgressType switch
{
UiPageProgressType.Info => Color.Info,
UiPageProgressType.Success => Color.Success,
UiPageProgressType.Warning => Color.Warning,
UiPageProgressType.Error => Color.Danger,
_ => Color.None,
};
}
}
}
Loading…
Cancel
Save