SensorButton.razor 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. 
  2. <div >
  3. <button class="custom-button green"
  4. @onclick="OnClick">
  5. @SensorName
  6. </button>
  7. </div>
  8. @* <div class="sensor-button-container">
  9. <button class="w-full h-32 rounded-xl shadow-lg font-bold text-lg transition-all duration-300 transform hover:scale-105 hover:shadow-xl focus:outline-none focus:ring-4 focus:ring-opacity-50
  10. @(AlertLevel == 0 ? "bg-green-100 text-green-800 hover:bg-green-200 focus:ring-green-300" :
  11. AlertLevel == 1 ? "bg-yellow-100 text-yellow-800 animate-pulse hover:bg-yellow-200 focus:ring-yellow-300" :
  12. "bg-red-100 text-red-800 animate-pulse hover:bg-red-200 focus:ring-red-300")"
  13. @onclick="OnClick">
  14. @SensorName
  15. </button>
  16. </div> *@
  17. @code {
  18. [Parameter]
  19. public string SensorName { get; set; }
  20. [Parameter]
  21. public int AlertLevel { get; set; }
  22. [Parameter]
  23. public EventCallback<MouseEventArgs> OnClick { get; set; }
  24. // 模拟传感器值变化(实际应用中由后台推送)
  25. protected override void OnInitialized()
  26. {
  27. // 每隔几秒随机更改告警级别以演示效果
  28. Timer timer = new Timer(async _ =>
  29. {
  30. Random random = new Random();
  31. int newLevel = random.Next(0, 3);
  32. if (newLevel != AlertLevel)
  33. {
  34. //await OnAlertChange.InvokeAsync((SensorName.ToLower().Replace(" ", ""), newLevel));
  35. }
  36. }, null, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(10));
  37. }
  38. }
  39. <style>
  40. .custom-button {
  41. padding: 5px 10px;
  42. border: none;
  43. width: 150px;
  44. height: 50px;
  45. border-radius: 8px;
  46. font-size: 16px;
  47. cursor: pointer;
  48. transition: transform 0.2s ease, box-shadow 0.2s ease;
  49. }
  50. .custom-button:hover {
  51. transform: translateY(-2px);
  52. box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  53. }
  54. .green {
  55. background-color: #4CAF50;
  56. color: white;
  57. }
  58. .yellow {
  59. background-color: #FFEB3B;
  60. color: black;
  61. }
  62. .red {
  63. background-color: #F44336;
  64. color: white;
  65. }
  66. .default {
  67. background-color: #e0e0e0;
  68. color: black;
  69. }
  70. </style>