1
0

table_control.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. // Button click handlers
  2. document.addEventListener('DOMContentLoaded', function() {
  3. // Home button
  4. const homeButton = document.getElementById('homeButton');
  5. homeButton.addEventListener('click', async () => {
  6. try {
  7. const response = await fetch('/send_home', {
  8. method: 'POST',
  9. headers: {
  10. 'Content-Type': 'application/json'
  11. }
  12. });
  13. const data = await response.json();
  14. if (data.success) {
  15. updateStatus('Moving to home position...');
  16. }
  17. } catch (error) {
  18. console.error('Error sending home command:', error);
  19. updateStatus('Error: Failed to move to home position');
  20. }
  21. });
  22. // Stop button
  23. const stopButton = document.getElementById('stopButton');
  24. stopButton.addEventListener('click', async () => {
  25. try {
  26. const response = await fetch('/stop_execution', {
  27. method: 'POST',
  28. headers: {
  29. 'Content-Type': 'application/json'
  30. }
  31. });
  32. const data = await response.json();
  33. if (data.success) {
  34. updateStatus('Execution stopped');
  35. }
  36. } catch (error) {
  37. console.error('Error stopping execution:', error);
  38. updateStatus('Error: Failed to stop execution');
  39. }
  40. });
  41. // Move to Center button
  42. const centerButton = document.getElementById('centerButton');
  43. centerButton.addEventListener('click', async () => {
  44. try {
  45. const response = await fetch('/move_to_center', {
  46. method: 'POST',
  47. headers: {
  48. 'Content-Type': 'application/json'
  49. }
  50. });
  51. const data = await response.json();
  52. if (data.success) {
  53. updateStatus('Moving to center position...');
  54. }
  55. } catch (error) {
  56. console.error('Error moving to center:', error);
  57. updateStatus('Error: Failed to move to center');
  58. }
  59. });
  60. // Move to Perimeter button
  61. const perimeterButton = document.getElementById('perimeterButton');
  62. perimeterButton.addEventListener('click', async () => {
  63. try {
  64. const response = await fetch('/move_to_perimeter', {
  65. method: 'POST',
  66. headers: {
  67. 'Content-Type': 'application/json'
  68. }
  69. });
  70. const data = await response.json();
  71. if (data.success) {
  72. updateStatus('Moving to perimeter position...');
  73. }
  74. } catch (error) {
  75. console.error('Error moving to perimeter:', error);
  76. updateStatus('Error: Failed to move to perimeter');
  77. }
  78. });
  79. // Set Speed button
  80. const setSpeedButton = document.getElementById('setSpeedButton');
  81. const speedInput = document.getElementById('speedInput');
  82. setSpeedButton.addEventListener('click', async () => {
  83. const speed = parseFloat(speedInput.value);
  84. if (isNaN(speed) || speed <= 0) {
  85. updateStatus('Error: Please enter a valid speed value');
  86. return;
  87. }
  88. try {
  89. const response = await fetch('/set_speed', {
  90. method: 'POST',
  91. headers: {
  92. 'Content-Type': 'application/json'
  93. },
  94. body: JSON.stringify({ speed: speed })
  95. });
  96. const data = await response.json();
  97. if (data.success) {
  98. updateStatus(`Speed set to ${speed} mm/s`);
  99. }
  100. } catch (error) {
  101. console.error('Error setting speed:', error);
  102. updateStatus('Error: Failed to set speed');
  103. }
  104. });
  105. // Clear from Center button
  106. const clearCenterButton = document.getElementById('clearCenterButton');
  107. clearCenterButton.addEventListener('click', async () => {
  108. try {
  109. const response = await fetch('/run_theta_rho', {
  110. method: 'POST',
  111. headers: {
  112. 'Content-Type': 'application/json'
  113. },
  114. body: JSON.stringify({
  115. file_name: 'clear_from_in.thr',
  116. pre_execution: 'none'
  117. })
  118. });
  119. const data = await response.json();
  120. if (response.ok) {
  121. updateStatus('Running clear from center pattern...');
  122. } else {
  123. throw new Error(data.detail || 'Failed to run clear pattern');
  124. }
  125. } catch (error) {
  126. console.error('Error running clear from center pattern:', error);
  127. if (error.message.includes('409')) {
  128. updateStatus('Error: Another pattern is already running');
  129. } else {
  130. updateStatus('Error: Failed to run clear pattern');
  131. }
  132. }
  133. });
  134. // Clear from Perimeter button
  135. const clearPerimeterButton = document.getElementById('clearPerimeterButton');
  136. clearPerimeterButton.addEventListener('click', async () => {
  137. try {
  138. const response = await fetch('/run_theta_rho', {
  139. method: 'POST',
  140. headers: {
  141. 'Content-Type': 'application/json'
  142. },
  143. body: JSON.stringify({
  144. file_name: 'clear_from_out.thr',
  145. pre_execution: 'none'
  146. })
  147. });
  148. const data = await response.json();
  149. if (response.ok) {
  150. updateStatus('Running clear from perimeter pattern...');
  151. } else {
  152. throw new Error(data.detail || 'Failed to run clear pattern');
  153. }
  154. } catch (error) {
  155. console.error('Error running clear from perimeter pattern:', error);
  156. if (error.message.includes('409')) {
  157. updateStatus('Error: Another pattern is already running');
  158. } else {
  159. updateStatus('Error: Failed to run clear pattern');
  160. }
  161. }
  162. });
  163. // Clear Sideways button
  164. const clearSidewaysButton = document.getElementById('clearSidewaysButton');
  165. clearSidewaysButton.addEventListener('click', async () => {
  166. try {
  167. const response = await fetch('/run_theta_rho', {
  168. method: 'POST',
  169. headers: {
  170. 'Content-Type': 'application/json'
  171. },
  172. body: JSON.stringify({
  173. file_name: 'clear_sideway.thr',
  174. pre_execution: 'none'
  175. })
  176. });
  177. const data = await response.json();
  178. if (response.ok) {
  179. updateStatus('Running clear sideways pattern...');
  180. } else {
  181. throw new Error(data.detail || 'Failed to run clear pattern');
  182. }
  183. } catch (error) {
  184. console.error('Error running clear sideways pattern:', error);
  185. if (error.message.includes('409')) {
  186. updateStatus('Error: Another pattern is already running');
  187. } else {
  188. updateStatus('Error: Failed to run clear pattern');
  189. }
  190. }
  191. });
  192. });
  193. // Function to update status
  194. function updateStatus(message) {
  195. if (message.startsWith('Error:')) {
  196. showStatusMessage(message.substring(7), 'error');
  197. } else {
  198. showStatusMessage(message, 'success');
  199. }
  200. }