cduss commited on
Commit
66e0694
·
1 Parent(s): 030090b
Files changed (1) hide show
  1. app.py +22 -22
app.py CHANGED
@@ -291,9 +291,9 @@ def create_app():
291
 
292
  # Head pose slider handlers - individual handlers like in working control panel
293
  def create_pose_handler(key):
294
- return wrap_js(f"""
295
  async (value) => {{
296
- if (!window.reachyApi.connected) return;
297
  if (window.reachyApi.isRefreshing) return;
298
  window.reachyApi.controlling = true;
299
  window.reachyApi.currentHeadPose.{key} = value;
@@ -307,23 +307,23 @@ def create_app():
307
  console.error('Set target error:', error);
308
  }}
309
  }}
310
- """)
311
 
312
- head_x.input(fn=None, inputs=[head_x], outputs=[], js=create_pose_handler('x'))
313
- head_y.input(fn=None, inputs=[head_y], outputs=[], js=create_pose_handler('y'))
314
- head_z.input(fn=None, inputs=[head_z], outputs=[], js=create_pose_handler('z'))
315
- head_roll.input(fn=None, inputs=[head_roll], outputs=[], js=create_pose_handler('roll'))
316
- head_pitch.input(fn=None, inputs=[head_pitch], outputs=[], js=create_pose_handler('pitch'))
317
- head_yaw.input(fn=None, inputs=[head_yaw], outputs=[], js=create_pose_handler('yaw'))
318
 
319
  # Body yaw handler
320
- body_yaw.input(
321
  fn=None,
322
  inputs=[body_yaw],
323
  outputs=[],
324
- js=wrap_js("""
325
  async (value) => {
326
- if (!window.reachyApi.connected) return;
327
  if (window.reachyApi.isRefreshing) return;
328
  window.reachyApi.controlling = true;
329
  window.reachyApi.currentBodyYaw = value;
@@ -337,17 +337,17 @@ def create_app():
337
  console.error('Set target error:', error);
338
  }
339
  }
340
- """)
341
  )
342
 
343
  # Antenna handlers
344
- antenna_left.input(
345
  fn=None,
346
  inputs=[antenna_left],
347
  outputs=[],
348
- js=wrap_js("""
349
  async (value) => {
350
- if (!window.reachyApi.connected) return;
351
  if (window.reachyApi.isRefreshing) return;
352
  window.reachyApi.controlling = true;
353
  window.reachyApi.currentAntennas[0] = value;
@@ -361,16 +361,16 @@ def create_app():
361
  console.error('Set target error:', error);
362
  }
363
  }
364
- """)
365
  )
366
 
367
- antenna_right.input(
368
  fn=None,
369
  inputs=[antenna_right],
370
  outputs=[],
371
- js=wrap_js("""
372
  async (value) => {
373
- if (!window.reachyApi.connected) return;
374
  if (window.reachyApi.isRefreshing) return;
375
  window.reachyApi.controlling = true;
376
  window.reachyApi.currentAntennas[1] = value;
@@ -384,7 +384,7 @@ def create_app():
384
  console.error('Set target error:', error);
385
  }
386
  }
387
- """)
388
  )
389
 
390
  # Release handler to stop controlling
@@ -394,7 +394,7 @@ def create_app():
394
  fn=None,
395
  inputs=[],
396
  outputs=[],
397
- js=wrap_js("async () => { window.reachyApi.controlling = false; }")
398
  )
399
 
400
  # Polling timer - updates state at 5Hz (every 200ms)
 
291
 
292
  # Head pose slider handlers - individual handlers like in working control panel
293
  def create_pose_handler(key):
294
+ return f"""
295
  async (value) => {{
296
+ if (!window.reachyApi || !window.reachyApi.connected) return;
297
  if (window.reachyApi.isRefreshing) return;
298
  window.reachyApi.controlling = true;
299
  window.reachyApi.currentHeadPose.{key} = value;
 
307
  console.error('Set target error:', error);
308
  }}
309
  }}
310
+ """
311
 
312
+ head_x.change(fn=None, inputs=[head_x], outputs=[], js=create_pose_handler('x'))
313
+ head_y.change(fn=None, inputs=[head_y], outputs=[], js=create_pose_handler('y'))
314
+ head_z.change(fn=None, inputs=[head_z], outputs=[], js=create_pose_handler('z'))
315
+ head_roll.change(fn=None, inputs=[head_roll], outputs=[], js=create_pose_handler('roll'))
316
+ head_pitch.change(fn=None, inputs=[head_pitch], outputs=[], js=create_pose_handler('pitch'))
317
+ head_yaw.change(fn=None, inputs=[head_yaw], outputs=[], js=create_pose_handler('yaw'))
318
 
319
  # Body yaw handler
320
+ body_yaw.change(
321
  fn=None,
322
  inputs=[body_yaw],
323
  outputs=[],
324
+ js="""
325
  async (value) => {
326
+ if (!window.reachyApi || !window.reachyApi.connected) return;
327
  if (window.reachyApi.isRefreshing) return;
328
  window.reachyApi.controlling = true;
329
  window.reachyApi.currentBodyYaw = value;
 
337
  console.error('Set target error:', error);
338
  }
339
  }
340
+ """
341
  )
342
 
343
  # Antenna handlers
344
+ antenna_left.change(
345
  fn=None,
346
  inputs=[antenna_left],
347
  outputs=[],
348
+ js="""
349
  async (value) => {
350
+ if (!window.reachyApi || !window.reachyApi.connected) return;
351
  if (window.reachyApi.isRefreshing) return;
352
  window.reachyApi.controlling = true;
353
  window.reachyApi.currentAntennas[0] = value;
 
361
  console.error('Set target error:', error);
362
  }
363
  }
364
+ """
365
  )
366
 
367
+ antenna_right.change(
368
  fn=None,
369
  inputs=[antenna_right],
370
  outputs=[],
371
+ js="""
372
  async (value) => {
373
+ if (!window.reachyApi || !window.reachyApi.connected) return;
374
  if (window.reachyApi.isRefreshing) return;
375
  window.reachyApi.controlling = true;
376
  window.reachyApi.currentAntennas[1] = value;
 
384
  console.error('Set target error:', error);
385
  }
386
  }
387
+ """
388
  )
389
 
390
  # Release handler to stop controlling
 
394
  fn=None,
395
  inputs=[],
396
  outputs=[],
397
+ js="async () => { if (window.reachyApi) window.reachyApi.controlling = false; }"
398
  )
399
 
400
  # Polling timer - updates state at 5Hz (every 200ms)