wled.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. {% extends "base.html" %} {% block title %}LED Control - {{ app_name or 'Dune Weaver' }}{% endblock %}
  2. {% block additional_styles %}
  3. /* Dark mode styles for LED page */
  4. .dark .bg-white {
  5. background-color: #262626;
  6. }
  7. .dark .border-slate-200 {
  8. border-color: #404040;
  9. }
  10. .dark .text-gray-500 {
  11. color: #9ca3af;
  12. }
  13. .dark .text-gray-700 {
  14. color: #d1d5db;
  15. }
  16. .dark .text-slate-800 {
  17. color: #e5e5e5;
  18. }
  19. .dark .border-slate-300 {
  20. border-color: #404040;
  21. }
  22. .dark input[type="range"] {
  23. background-color: #404040;
  24. }
  25. .dark input[type="color"] {
  26. background-color: #262626;
  27. border-color: #404040;
  28. }
  29. {% endblock %}
  30. {% block content %}
  31. <div class="layout-content-container flex flex-col w-full max-w-4xl gap-0 pt-2 pb-[75px]">
  32. <!-- Not Configured State -->
  33. <section id="led-not-configured" class="bg-white rounded-xl shadow-sm overflow-hidden pt-4 sm:pt-0 h-full hidden">
  34. <div class="flex flex-col items-center px-0 py-0 h-full">
  35. <div class="w-full h-full max-w-5xl flex flex-col overflow-hidden">
  36. <div class="w-full p-8 text-center">
  37. <div class="flex flex-col items-center gap-4">
  38. <span class="material-icons text-6xl text-gray-500">lightbulb</span>
  39. <h2 class="text-2xl font-semibold text-gray-700">LED Controller Not Configured</h2>
  40. <p class="text-gray-500 max-w-md">Please configure your LED controller (WLED or Hyperion) in the Settings page.</p>
  41. <a href="/settings" class="mt-4 flex items-center justify-center gap-2 rounded-lg bg-blue-600 px-4 py-3 text-sm font-semibold text-white shadow-md hover:bg-blue-700 transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-offset-2">
  42. <span class="material-icons">settings</span>
  43. Go to Settings
  44. </a>
  45. </div>
  46. </div>
  47. </div>
  48. </div>
  49. </section>
  50. <!-- WLED iframe -->
  51. <section id="wled-container" class="bg-white rounded-xl shadow-sm overflow-hidden pt-4 sm:pt-0 h-full hidden">
  52. <div class="flex flex-col items-center px-0 py-0 h-full">
  53. <div class="w-full h-full max-w-5xl flex flex-col overflow-hidden">
  54. <iframe id="wled-frame"
  55. src=""
  56. class="h-full w-full rounded-lg border border-slate-200"
  57. frameborder="0"
  58. allowfullscreen
  59. ></iframe>
  60. </div>
  61. </div>
  62. </section>
  63. <!-- Hyperion Controls -->
  64. <section id="hyperion-container" class="bg-white rounded-xl shadow-sm overflow-hidden hidden">
  65. <div class="px-6 py-5 space-y-6">
  66. <h2 class="text-slate-800 text-xl sm:text-2xl font-semibold leading-tight tracking-[-0.01em]">
  67. Hyperion Control
  68. </h2>
  69. <!-- Connection Status -->
  70. <div id="hyperion-status" class="p-4 rounded-lg bg-gray-100 border border-slate-200">
  71. <div class="flex items-center gap-2">
  72. <span class="material-icons text-gray-500">info</span>
  73. <span class="text-sm text-gray-700">Checking connection...</span>
  74. </div>
  75. </div>
  76. <!-- Power and Brightness Grid -->
  77. <div class="grid grid-cols-1 sm:grid-cols-2 gap-6">
  78. <!-- Power Control -->
  79. <div class="flex flex-col gap-3">
  80. <h3 class="text-slate-800 text-base font-semibold">Power</h3>
  81. <button id="hyperion-power-toggle" class="flex items-center justify-center gap-2 rounded-lg bg-green-600 px-4 py-3 text-sm font-semibold text-white shadow-md hover:bg-green-700 transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-green-400 focus:ring-offset-2">
  82. <span class="material-icons">power_settings_new</span>
  83. <span id="power-button-text">Turn ON</span>
  84. </button>
  85. </div>
  86. <!-- Brightness Control -->
  87. <div class="flex flex-col gap-3">
  88. <div class="flex items-center justify-between">
  89. <h3 class="text-slate-800 text-base font-semibold">Brightness</h3>
  90. <span id="brightness-value" class="text-sm font-medium text-slate-600">100%</span>
  91. </div>
  92. <input type="range" id="hyperion-brightness" min="0" max="100" value="100" class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer">
  93. </div>
  94. </div>
  95. <!-- Color Control -->
  96. <div class="flex flex-col gap-3">
  97. <h3 class="text-slate-800 text-base font-semibold">Color Picker</h3>
  98. <div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
  99. <div class="flex items-center gap-3">
  100. <input type="color" id="hyperion-color" value="#ff0000" class="w-20 h-20 rounded-lg border-2 border-slate-300 cursor-pointer">
  101. <div class="flex flex-col gap-1">
  102. <span id="color-hex-display" class="text-sm font-mono font-semibold text-slate-700">#FF0000</span>
  103. <button id="hyperion-set-color" class="flex items-center justify-center gap-2 rounded-lg bg-blue-600 px-3 py-2 text-sm font-semibold text-white shadow-md hover:bg-blue-700 transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-offset-2">
  104. <span class="material-icons text-base">palette</span>
  105. <span>Apply</span>
  106. </button>
  107. </div>
  108. </div>
  109. <!-- Quick Colors -->
  110. <div class="flex flex-col gap-2">
  111. <span class="text-sm font-medium text-slate-600">Quick Colors</span>
  112. <div class="grid grid-cols-4 gap-2">
  113. <button class="quick-color h-10 rounded-lg border-2 border-slate-300 hover:scale-105 transition-transform" data-color="#ff0000" style="background-color: #ff0000;" title="Red"></button>
  114. <button class="quick-color h-10 rounded-lg border-2 border-slate-300 hover:scale-105 transition-transform" data-color="#00ff00" style="background-color: #00ff00;" title="Green"></button>
  115. <button class="quick-color h-10 rounded-lg border-2 border-slate-300 hover:scale-105 transition-transform" data-color="#0000ff" style="background-color: #0000ff;" title="Blue"></button>
  116. <button class="quick-color h-10 rounded-lg border-2 border-slate-300 hover:scale-105 transition-transform" data-color="#ffff00" style="background-color: #ffff00;" title="Yellow"></button>
  117. <button class="quick-color h-10 rounded-lg border-2 border-slate-300 hover:scale-105 transition-transform" data-color="#ff00ff" style="background-color: #ff00ff;" title="Magenta"></button>
  118. <button class="quick-color h-10 rounded-lg border-2 border-slate-300 hover:scale-105 transition-transform" data-color="#00ffff" style="background-color: #00ffff;" title="Cyan"></button>
  119. <button class="quick-color h-10 rounded-lg border-2 border-slate-300 hover:scale-105 transition-transform" data-color="#ff8000" style="background-color: #ff8000;" title="Orange"></button>
  120. <button class="quick-color h-10 rounded-lg border-2 border-slate-300 hover:scale-105 transition-transform" data-color="#ffffff" style="background-color: #ffffff;" title="White"></button>
  121. </div>
  122. </div>
  123. </div>
  124. </div>
  125. <!-- Effects -->
  126. <div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
  127. <div class="flex flex-col gap-3">
  128. <h3 class="text-slate-800 text-base font-semibold">Effects</h3>
  129. <select id="hyperion-effect-select" class="form-select w-full rounded-lg border border-slate-300 bg-white px-4 py-3 text-slate-900 focus:outline-0 focus:ring-2 focus:ring-blue-500">
  130. <option value="">Loading effects...</option>
  131. </select>
  132. </div>
  133. <div class="flex flex-col gap-3">
  134. <h3 class="text-slate-800 text-base font-semibold opacity-0 pointer-events-none">Spacer</h3>
  135. <button id="hyperion-set-effect" class="flex items-center justify-center gap-2 rounded-lg bg-blue-600 px-4 py-3 text-sm font-semibold text-white shadow-md hover:bg-blue-700 transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-offset-2">
  136. <span class="material-icons">auto_awesome</span>
  137. <span>Apply Effect</span>
  138. </button>
  139. </div>
  140. </div>
  141. <!-- Effect Settings -->
  142. <div class="flex flex-col gap-4 pt-4 border-t border-slate-200">
  143. <h3 class="text-slate-800 text-base font-semibold">Automation Settings</h3>
  144. <p class="text-xs text-slate-500">Configure which effects to show when idle or playing patterns</p>
  145. <div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
  146. <!-- Idle Effect -->
  147. <div class="flex flex-col gap-2">
  148. <label class="text-sm font-medium text-slate-700">Idle Effect</label>
  149. <select id="hyperion-idle-effect" class="form-select w-full rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm text-slate-900 focus:outline-0 focus:ring-2 focus:ring-blue-500">
  150. <option value="">Default (Off)</option>
  151. </select>
  152. </div>
  153. <!-- Playing Effect -->
  154. <div class="flex flex-col gap-2">
  155. <label class="text-sm font-medium text-slate-700">Playing Effect</label>
  156. <select id="hyperion-playing-effect" class="form-select w-full rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm text-slate-900 focus:outline-0 focus:ring-2 focus:ring-blue-500">
  157. <option value="">Default (Off)</option>
  158. </select>
  159. </div>
  160. </div>
  161. <button id="save-hyperion-effects" class="flex items-center justify-center gap-2 rounded-lg bg-blue-600 px-4 py-2.5 text-sm font-semibold text-white shadow-md hover:bg-blue-700 transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-offset-2">
  162. <span class="material-icons text-base">save</span>
  163. <span>Save Effect Settings</span>
  164. </button>
  165. </div>
  166. <!-- Reset Control -->
  167. <div class="flex items-center gap-4 pt-4 border-t border-slate-200">
  168. <button id="hyperion-clear-priority" class="flex items-center justify-center gap-2 rounded-lg bg-blue-600 px-4 py-2.5 text-sm font-semibold text-white shadow-md hover:bg-blue-700 transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-offset-2">
  169. <span class="material-icons text-base">clear_all</span>
  170. <span>Default (Off)</span>
  171. </button>
  172. <p class="text-xs text-slate-500 flex-1">Clears Dune Weaver's control and returns to default state</p>
  173. </div>
  174. </div>
  175. </section>
  176. </div>
  177. <script src="/static/js/led-control.js"></script>
  178. {% endblock %}