table_control.html 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. {% extends "base.html" %}
  2. {% block title %}Table Control - Kinetic Sand Table{% endblock %}
  3. {% block additional_styles %}
  4. /* Dark mode styles for table control page */
  5. .dark .bg-white {
  6. background-color: #262626;
  7. }
  8. .dark .text-slate-900 {
  9. color: #e5e5e5;
  10. }
  11. .dark .text-slate-800 {
  12. color: #e5e5e5;
  13. }
  14. .dark .text-slate-700 {
  15. color: #d1d5db;
  16. }
  17. .dark .border-slate-200 {
  18. border-color: #404040;
  19. }
  20. .dark .border-slate-300 {
  21. border-color: #404040;
  22. }
  23. .dark .bg-slate-50 {
  24. background-color: #262626;
  25. }
  26. .dark .hover\:bg-slate-50:hover {
  27. background-color: #404040;
  28. }
  29. .dark .form-input {
  30. background-color: #262626;
  31. border-color: #404040;
  32. color: #e5e5e5;
  33. }
  34. .dark .form-input::placeholder {
  35. color: #9ca3af;
  36. }
  37. .dark .form-input:focus {
  38. border-color: #0c7ff2;
  39. ring-color: #0c7ff2;
  40. }
  41. .dark .focus\:ring-sky-500:focus {
  42. ring-color: #0c7ff2;
  43. }
  44. .dark .focus\:border-sky-500:focus {
  45. border-color: #0c7ff2;
  46. }
  47. .dark .focus\:ring-blue-400:focus {
  48. ring-color: #0c7ff2;
  49. }
  50. .dark .focus\:ring-red-400:focus {
  51. ring-color: #ef4444;
  52. }
  53. .dark .focus\:ring-slate-400:focus {
  54. ring-color: #525252;
  55. }
  56. .dark .focus\:ring-offset-2 {
  57. ring-offset-color: #262626;
  58. }
  59. {% endblock %}
  60. {% block content %}
  61. <div class="layout-content-container flex flex-col w-full max-w-4xl gap-8 pt-2 pb-[75px]">
  62. <div class="flex flex-wrap justify-between items-center gap-4 p-4 bg-white rounded-xl shadow-sm mt-8">
  63. <h1 class="text-slate-900 tracking-tight text-2xl sm:text-3xl font-bold leading-tight">
  64. Table Control
  65. </h1>
  66. </div>
  67. <section class="bg-white p-6 rounded-xl shadow-lg">
  68. <h2 class="text-xl font-semibold text-slate-800 mb-5 border-b border-slate-200 pb-3">
  69. Movement Controls
  70. </h2>
  71. <div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
  72. <button
  73. id="homeButton"
  74. 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"
  75. >
  76. <span class="material-icons-outlined text-lg">home</span>
  77. Home
  78. </button>
  79. <button
  80. id="stopButton"
  81. class="flex items-center justify-center gap-2 rounded-lg bg-red-500 px-4 py-3 text-sm font-semibold text-white shadow-md hover:bg-red-600 transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-red-400 focus:ring-offset-2"
  82. >
  83. <span class="material-icons-outlined text-lg">stop_circle</span>
  84. Stop
  85. </button>
  86. <button
  87. id="centerButton"
  88. class="flex items-center justify-center gap-2 rounded-lg bg-slate-600 px-4 py-3 text-sm font-semibold text-white shadow-md hover:bg-slate-700 transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2"
  89. >
  90. <span class="material-icons-outlined text-lg">filter_center_focus</span>
  91. Move to Center
  92. </button>
  93. <button
  94. id="perimeterButton"
  95. class="flex items-center justify-center gap-2 rounded-lg bg-slate-600 px-4 py-3 text-sm font-semibold text-white shadow-md hover:bg-slate-700 transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2"
  96. >
  97. <span class="material-icons-outlined text-lg">all_out</span>
  98. Move to Perimeter
  99. </button>
  100. </div>
  101. </section>
  102. <section class="bg-white p-6 rounded-xl shadow-lg">
  103. <h2 class="text-xl font-semibold text-slate-800 mb-5 border-b border-slate-200 pb-3">
  104. Speed Control
  105. </h2>
  106. <div class="flex items-center gap-4">
  107. <div class="flex items-center gap-2 bg-slate-50 rounded-lg px-3 py-2">
  108. <span class="text-sm font-medium text-slate-700">Current:</span>
  109. <span id="currentSpeedDisplay" class="text-sm font-semibold text-slate-900">-- mm/s</span>
  110. </div>
  111. <div class="flex-1">
  112. <input
  113. type="number"
  114. id="speedInput"
  115. class="form-input flex w-full min-w-0 flex-1 resize-none overflow-hidden rounded-lg text-slate-900 focus:outline-0 focus:ring-2 focus:ring-sky-500 border border-slate-300 bg-white focus:border-sky-500 h-10 placeholder:text-slate-400 px-3 text-sm font-normal leading-normal transition-colors"
  116. placeholder="Enter new speed..."
  117. min="1"
  118. step="1"
  119. />
  120. </div>
  121. <button
  122. id="setSpeedButton"
  123. class="flex items-center justify-center gap-2 rounded-lg bg-sky-600 px-4 py-2.5 text-sm font-semibold text-white shadow-md hover:bg-sky-700 transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-sky-400 focus:ring-offset-2 h-10"
  124. >
  125. <span class="material-icons-outlined text-lg">speed</span>
  126. Set Speed
  127. </button>
  128. </div>
  129. </section>
  130. <section class="bg-white p-6 rounded-xl shadow-lg">
  131. <h2 class="text-xl font-semibold text-slate-800 mb-5 border-b border-slate-200 pb-3">
  132. Clear Patterns
  133. </h2>
  134. <div class="grid grid-cols-1 sm:grid-cols-3 gap-4">
  135. <button
  136. id="clearCenterButton"
  137. class="flex items-center justify-center gap-2 rounded-lg border border-slate-300 bg-white px-4 py-2.5 text-sm font-medium text-slate-700 shadow-sm hover:bg-slate-50 transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-1"
  138. >
  139. <span class="material-icons-outlined text-lg">center_focus_strong</span>
  140. Clear from Center
  141. </button>
  142. <button
  143. id="clearPerimeterButton"
  144. class="flex items-center justify-center gap-2 rounded-lg border border-slate-300 bg-white px-4 py-2.5 text-sm font-medium text-slate-700 shadow-sm hover:bg-slate-50 transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-1"
  145. >
  146. <span class="material-icons-outlined text-lg">all_out</span>
  147. Clear from Perimeter
  148. </button>
  149. <button
  150. id="clearSidewaysButton"
  151. class="flex items-center justify-center gap-2 rounded-lg border border-slate-300 bg-white px-4 py-2.5 text-sm font-medium text-slate-700 shadow-sm hover:bg-slate-50 transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-1"
  152. >
  153. <span class="material-icons-outlined text-lg">swap_horiz</span>
  154. Clear Sideway
  155. </button>
  156. </div>
  157. </section>
  158. </div>
  159. {% endblock %}
  160. {% block scripts %}
  161. <script src="/static/js/table_control.js"></script>
  162. {% endblock %}