ProgressBar.razor 923 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. @inherits FnzComponentBase
  2. @code {
  3. [Parameter, Required] public int Throttle { get; set; }
  4. }
  5. <div @attributes="@InputAttributes">
  6. @Display.NullOrEmptyEscape("Processing...")
  7. <div class="progress">
  8. <div class="progress-bar progress-bar-striped progress-bar-animated" style="width: @(Percent)%"></div>
  9. </div>
  10. </div>
  11. @code {
  12. private float Percent;
  13. private string Display;
  14. private DateTime _point = DateTime.Now;
  15. public async Task SetProgress(float ratio, string display, bool forceUpdate = false)
  16. {
  17. Percent = ratio * 100;
  18. Display = display;
  19. if (forceUpdate || (DateTime.Now - _point).TotalMilliseconds >= Throttle)
  20. {
  21. StateHasChanged();
  22. await Task.Delay(5);
  23. _point = DateTime.Now;
  24. }
  25. }
  26. public async Task ForceUpdate()
  27. {
  28. StateHasChanged();
  29. await Task.Delay(10);
  30. }
  31. }