@wandelbots/wandelbots-js-react-components 2.54.5-pr.feat-jogging-blocked.406.e0dd489 → 2.54.5-pr.feat-upgrade-safety-bar-to-v2.405.d92d77f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,7 +32,6 @@ export declare class JoggerConnection {
32
32
  tcp: string;
33
33
  orientation: JoggerOrientation;
34
34
  onError?: (err: unknown) => void;
35
- onBlocked?: () => void;
36
35
  /**
37
36
  * Initialize the jogging connection using jogging endpoint or trajectory endpoint depending on the selected mode.
38
37
  *
@@ -94,7 +93,7 @@ export declare class JoggerConnection {
94
93
  * axis, either rotating or translating relative to the TCP.
95
94
  * Promise resolves only after the motion has completed.
96
95
  */
97
- runIncrementalCartesianMotion({ currentTcpPose, currentJoints, velocityInRelevantUnits, axis, direction, motion, }: {
96
+ runIncrementalCartesianMotion({ currentTcpPose, currentJoints, coordSystemId, velocityInRelevantUnits, axis, direction, motion, }: {
98
97
  currentTcpPose: Pose;
99
98
  currentJoints: Vector3Simple;
100
99
  coordSystemId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"JoggerConnection.d.ts","sourceRoot":"","sources":["../../src/lib/JoggerConnection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JoggerConnection.d.ts","sourceRoot":"","sources":["../../src/lib/JoggerConnection.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wandelbots/wandelbots-js-react-components",
3
- "version": "2.54.5-pr.feat-jogging-blocked.406.e0dd489",
3
+ "version": "2.54.5-pr.feat-upgrade-safety-bar-to-v2.405.d92d77f",
4
4
  "description": "React UI toolkit for building applications on top of the Wandelbots platform",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -10,7 +10,6 @@ import { useTranslation } from "react-i18next"
10
10
  import { externalizeComponent } from "../../externalizeComponent"
11
11
  import { JoggerConnection } from "../../lib/JoggerConnection"
12
12
  import { LoadingCover } from "../LoadingCover"
13
- import { JoggingBlocked } from "./JoggingBlocked"
14
13
  import { JoggingCartesianTab } from "./JoggingCartesianTab"
15
14
  import { JoggingJointTab } from "./JoggingJointTab"
16
15
  import { JoggingStore } from "./JoggingStore"
@@ -183,6 +182,7 @@ const JoggingPanelInner = observer(
183
182
  )
184
183
  })}
185
184
  </Tabs>
185
+
186
186
  {/* Current tab content */}
187
187
  <Stack
188
188
  flexGrow={1}
@@ -191,8 +191,6 @@ const JoggingPanelInner = observer(
191
191
  >
192
192
  {renderTabContent()}
193
193
  </Stack>
194
- {/* Overlay when jogging connection is blocked */}
195
- {store.blocked && <JoggingBlocked store={store} />}
196
194
  </Stack>
197
195
  )
198
196
  },
@@ -59,9 +59,6 @@ export class JoggingStore {
59
59
  /** Locks to prevent UI interactions during certain operations */
60
60
  locks = new Set<string>()
61
61
 
62
- /** Block jogging UI interactions when connection is taken by another jogger */
63
- blocked: boolean = false
64
-
65
62
  /**
66
63
  * Id of selected coordinate system from among those defined on the API side
67
64
  */
@@ -186,21 +183,13 @@ export class JoggingStore {
186
183
  this.selectedCoordSystemId = coordSystems[0]?.coordinate_system || "world"
187
184
  this.selectedTcpId = tcps[0]?.id || ""
188
185
 
189
- // Make all properties observable and actions auto-bound
190
186
  makeAutoObservable(this, {}, { autoBind: true })
191
187
 
192
- // Register blocked watching
193
- this.jogger.onBlocked = () => {
194
- this.block()
195
- }
196
-
197
188
  // Load user settings from local storage if available
198
189
  this.loadFromLocalStorage()
199
190
 
200
191
  // Automatically save user settings to local storage when save changes
201
192
  this.disposers.push(autorun(() => this.saveToLocalStorage()))
202
-
203
- // Assign joggingStore to window
204
193
  ;(window as any).joggingStore = this
205
194
  }
206
195
 
@@ -449,17 +438,6 @@ export class JoggingStore {
449
438
  this.locks.delete(id)
450
439
  }
451
440
 
452
- block() {
453
- this.blocked = true
454
- }
455
-
456
- unblock() {
457
- this.blocked = false
458
- if (this.jogger.mode === "jogging") {
459
- this.jogger.initializeJoggingWebsocket()
460
- }
461
- }
462
-
463
441
  /** Lock the UI until the given async callback resolves */
464
442
  async withMotionLock(fn: () => Promise<void>) {
465
443
  const lockId = uniqueId()
@@ -1,5 +1,5 @@
1
1
  import { useTheme, type PopoverOrigin } from "@mui/material"
2
- import type { RobotControllerStateOperationModeEnum } from "@wandelbots/nova-js/v1"
2
+ import type { OperationMode } from "@wandelbots/nova-js/v2"
3
3
  import { observer } from "mobx-react-lite"
4
4
  import { Trans, useTranslation } from "react-i18next"
5
5
  import OperationModeAutomaticIcon from "./icons/operation-mode-automatic.svg"
@@ -8,7 +8,7 @@ import OperationModeManualIcon from "./icons/operation-mode-manual.svg"
8
8
  import { IndicatorWithExplanation } from "./IndicatorWithExplanation"
9
9
 
10
10
  interface OperationModeIndicatorProps {
11
- operationMode: RobotControllerStateOperationModeEnum
11
+ operationMode: OperationMode
12
12
  anchorOrigin?: PopoverOrigin
13
13
  transformOrigin?: PopoverOrigin
14
14
  compact: boolean
@@ -1,8 +1,5 @@
1
1
  import { Divider, Stack, type PopoverOrigin } from "@mui/material"
2
- import type {
3
- RobotControllerStateOperationModeEnum,
4
- RobotControllerStateSafetyStateEnum,
5
- } from "@wandelbots/nova-js/v1"
2
+ import type { OperationMode, SafetyStateType } from "@wandelbots/nova-js/v2"
6
3
  import { observer } from "mobx-react-lite"
7
4
  import { externalizeComponent } from "../../externalizeComponent"
8
5
  import { ControllerTypeIndicator } from "./ControllerTypeIndicator"
@@ -12,8 +9,8 @@ import { SafetyStateIndicator } from "./SafetyStateIndicator"
12
9
  export interface SafetyBarProps {
13
10
  isVirtual: boolean
14
11
  motionGroupId: string
15
- operationMode: RobotControllerStateOperationModeEnum
16
- safetyState: RobotControllerStateSafetyStateEnum
12
+ operationMode: OperationMode
13
+ safetyState: SafetyStateType
17
14
  anchorOrigin?: PopoverOrigin
18
15
  transformOrigin?: PopoverOrigin
19
16
  compact?: boolean
@@ -1,5 +1,5 @@
1
1
  import { useTheme, type PopoverOrigin } from "@mui/material"
2
- import type { RobotControllerStateSafetyStateEnum } from "@wandelbots/nova-js/v1"
2
+ import type { SafetyStateType } from "@wandelbots/nova-js/v2"
3
3
  import { observer } from "mobx-react-lite"
4
4
  import { Trans, useTranslation } from "react-i18next"
5
5
  import { assertUnreachable } from "../utils/errorHandling"
@@ -11,7 +11,7 @@ import SafetyStateStopIcon from "./icons/safety-state-stop.svg"
11
11
  import { IndicatorWithExplanation } from "./IndicatorWithExplanation"
12
12
 
13
13
  interface SafetyStateIndicatorProps {
14
- safetyState: RobotControllerStateSafetyStateEnum
14
+ safetyState: SafetyStateType
15
15
  anchorOrigin?: PopoverOrigin
16
16
  transformOrigin?: PopoverOrigin
17
17
  compact: boolean
@@ -4,9 +4,6 @@
4
4
  "Jogging.Velocity.lb": "Geschwindigkeit",
5
5
  "General.degree.variable": "{{amount}}°",
6
6
  "General.mm.variable": "{{amount}} mm",
7
- "Jogging.Blocked.ti": "Verbindung blockiert",
8
- "Jogging.Blocked.lb": "Ein anderer Client kontrolliert das Jogging.",
9
- "Jogging.Blocked.Reenable.bt": "Wiederherstellen",
10
7
  "Jogging.Cartesian.MotionType.lb": "Bewegungstyp",
11
8
  "Jogging.Cartesian.Translation.bt": "Translation",
12
9
  "Jogging.Cartesian.Rotation.bt": "Rotation",
@@ -4,9 +4,6 @@
4
4
  "Jogging.Velocity.lb": "Velocity",
5
5
  "General.degree.variable": "{{amount}}°",
6
6
  "General.mm.variable": "{{amount}} mm",
7
- "Jogging.Blocked.ti": "Connection blocked",
8
- "Jogging.Blocked.lb": "Another client is currently controlling the jogging.",
9
- "Jogging.Blocked.Reenable.bt": "Restore Panel",
10
7
  "Jogging.Cartesian.MotionType.lb": "Motion type",
11
8
  "Jogging.Cartesian.Translation.bt": "Translation",
12
9
  "Jogging.Cartesian.Rotation.bt": "Rotation",
@@ -66,7 +66,6 @@ export class JoggerConnection {
66
66
  // coordinateSystem?: string
67
67
  orientation: JoggerOrientation
68
68
  onError?: (err: unknown) => void
69
- onBlocked?: () => void
70
69
 
71
70
  /**
72
71
  * Initialize the jogging connection using jogging endpoint or trajectory endpoint depending on the selected mode.
@@ -249,18 +248,12 @@ export class JoggerConnection {
249
248
  return
250
249
  }
251
250
 
252
- if (data?.result?.kind === "MOTION_ERROR") {
251
+ if (
252
+ (data && "error" in data) ||
253
+ data?.result?.kind === "MOTION_ERROR"
254
+ ) {
253
255
  clearTimeout(connectionFailedTimeout)
254
- if (
255
- this.onBlocked &&
256
- data?.result?.message.includes(
257
- `Movement request rejected. Another client is currently executing a 'Jogging' motion!`,
258
- )
259
- ) {
260
- this.joggingSocket?.dispose()
261
- this.onBlocked()
262
- return
263
- } else if (this.onError) {
256
+ if (this.onError) {
264
257
  this.onError(ev.data)
265
258
  } else {
266
259
  reject(new Error(ev.data))
@@ -377,7 +370,7 @@ export class JoggerConnection {
377
370
  async runIncrementalCartesianMotion({
378
371
  currentTcpPose,
379
372
  currentJoints,
380
- // coordSystemId,
373
+ coordSystemId,
381
374
  velocityInRelevantUnits,
382
375
  axis,
383
376
  direction,
@@ -632,16 +625,6 @@ export class JoggerConnection {
632
625
  )
633
626
  }
634
627
 
635
- if (
636
- this.onBlocked &&
637
- data.result.message.includes(
638
- `Movement request rejected. Another client is currently executing a 'Jogging' motion!`,
639
- )
640
- ) {
641
- this.onBlocked()
642
- return
643
- }
644
-
645
628
  if (data.result.kind === "INITIALIZE_RECEIVED") {
646
629
  messageInitializeMovementResponse(data.result)
647
630
  } else if (data.result.kind === "START_RECEIVED") {
@@ -1,7 +0,0 @@
1
- import { type JoggingStore } from "./JoggingStore";
2
- export declare const JoggingBlocked: (({ store }: {
3
- store: JoggingStore;
4
- }) => import("react/jsx-runtime").JSX.Element) & {
5
- displayName: string;
6
- };
7
- //# sourceMappingURL=JoggingBlocked.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingBlocked.d.ts","sourceRoot":"","sources":["../../../src/components/jogging/JoggingBlocked.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,eAAO,MAAM,cAAc,eAAwB;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE;;CA+BxE,CAAA"}
@@ -1,37 +0,0 @@
1
- import { Alert, AlertTitle, Backdrop, Button, Stack } from "@mui/material"
2
- import { observer } from "mobx-react-lite"
3
- import { useTranslation } from "react-i18next"
4
- import { type JoggingStore } from "./JoggingStore"
5
-
6
- export const JoggingBlocked = observer(({ store }: { store: JoggingStore }) => {
7
- const { t } = useTranslation()
8
-
9
- return (
10
- <Backdrop
11
- open={true}
12
- sx={{
13
- position: "absolute",
14
- zIndex: (theme) => theme.zIndex.drawer + 1,
15
- color: "#fff",
16
- background: "rgba(15, 15, 15, 0.78)",
17
- justifyContent: "flex-start",
18
- alignItems: "flex-start",
19
- }}
20
- >
21
- <Stack sx={{ m: 2, width: "100%" }}>
22
- <Alert severity="error" sx={{ mb: 2 }}>
23
- <AlertTitle>{t("Jogging.Blocked.ti")}</AlertTitle>
24
- {t("Jogging.Blocked.lb")}
25
- </Alert>
26
-
27
- <Button
28
- variant="contained"
29
- color="error"
30
- onClick={() => store.unblock()}
31
- >
32
- {t("Jogging.Blocked.Reenable.bt")}
33
- </Button>
34
- </Stack>
35
- </Backdrop>
36
- )
37
- })