@wandelbots/wandelbots-js-react-components 5.4.1 → 5.4.2-pr.ci-pr-preview.586.f684aae
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.
- package/dist/3d.cjs.js +1 -1
- package/dist/3d.d.ts +1 -1
- package/dist/3d.d.ts.map +1 -1
- package/dist/3d.es.js +1 -1
- package/dist/MotionGroupVisualizer-B-e22qXF.cjs +2 -0
- package/dist/MotionGroupVisualizer-B-e22qXF.cjs.map +1 -0
- package/dist/MotionGroupVisualizer-CIASsBC6.js +1433 -0
- package/dist/MotionGroupVisualizer-CIASsBC6.js.map +1 -0
- package/dist/Setup.d.ts +1 -1
- package/dist/Setup.d.ts.map +1 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts +1 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +1 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.d.ts.map +1 -1
- package/dist/components/AppHeader.d.ts +1 -1
- package/dist/components/AppHeader.d.ts.map +1 -1
- package/dist/components/ConsoleFilter.d.ts +1 -1
- package/dist/components/ConsoleFilter.d.ts.map +1 -1
- package/dist/components/CopyableText.d.ts.map +1 -1
- package/dist/components/CycleTimer/DefaultVariant.d.ts.map +1 -1
- package/dist/components/CycleTimer/SmallVariant.d.ts.map +1 -1
- package/dist/components/DataGrid.d.ts +1 -1
- package/dist/components/DataGrid.d.ts.map +1 -1
- package/dist/components/LoadingCover.d.ts.map +1 -1
- package/dist/components/LogPanel.d.ts +1 -1
- package/dist/components/LogPanel.d.ts.map +1 -1
- package/dist/components/LogViewer.d.ts +1 -1
- package/dist/components/LogViewer.d.ts.map +1 -1
- package/dist/components/ProgramControl.d.ts.map +1 -1
- package/dist/components/ProgramStateIndicator.d.ts.map +1 -1
- package/dist/components/RobotCard.d.ts.map +1 -1
- package/dist/components/RobotListItem.d.ts.map +1 -1
- package/dist/components/RobotSetupReadinessIndicator.d.ts.map +1 -1
- package/dist/components/SelectableFab.d.ts +1 -1
- package/dist/components/SelectableFab.d.ts.map +1 -1
- package/dist/components/TabBar.d.ts +1 -1
- package/dist/components/TabBar.d.ts.map +1 -1
- package/dist/components/ThemeSelect.d.ts +1 -1
- package/dist/components/ThemeSelect.d.ts.map +1 -1
- package/dist/components/Timer/TimerDefaultVariant.d.ts.map +1 -1
- package/dist/components/Timer/TimerSmallVariant.d.ts.map +1 -1
- package/dist/components/TransparentOverlay.d.ts +2 -2
- package/dist/components/TransparentOverlay.d.ts.map +1 -1
- package/dist/components/VelocitySlider.d.ts +1 -1
- package/dist/components/VelocitySlider.d.ts.map +1 -1
- package/dist/components/experimental/utils/AdornedSelect.d.ts +1 -1
- package/dist/components/experimental/utils/AdornedSelect.d.ts.map +1 -1
- package/dist/components/jogging/JoggingBlocked.d.ts +1 -1
- package/dist/components/jogging/JoggingBlocked.d.ts.map +1 -1
- package/dist/components/jogging/JoggingCartesianAxisControl.d.ts.map +1 -1
- package/dist/components/jogging/JoggingCartesianTab.d.ts.map +1 -1
- package/dist/components/jogging/JoggingFreedriveTab.d.ts.map +1 -1
- package/dist/components/jogging/JoggingJointLimitDetector.d.ts +1 -1
- package/dist/components/jogging/JoggingJointLimitDetector.d.ts.map +1 -1
- package/dist/components/jogging/JoggingJointTab.d.ts +2 -2
- package/dist/components/jogging/JoggingJointTab.d.ts.map +1 -1
- package/dist/components/jogging/JoggingJointValueControl.d.ts.map +1 -1
- package/dist/components/jogging/JoggingOptions.d.ts.map +1 -1
- package/dist/components/jogging/JoggingPanel.d.ts +1 -1
- package/dist/components/jogging/JoggingPanel.d.ts.map +1 -1
- package/dist/components/jogging/JoggingStore.d.ts +1 -1
- package/dist/components/jogging/JoggingStore.d.ts.map +1 -1
- package/dist/components/jogging/JoggingToggleButtonGroup.d.ts +1 -1
- package/dist/components/jogging/JoggingToggleButtonGroup.d.ts.map +1 -1
- package/dist/components/jogging/JoggingVelocitySlider.d.ts +1 -1
- package/dist/components/jogging/JoggingVelocitySlider.d.ts.map +1 -1
- package/dist/components/jogging/PoseCartesianValues.d.ts.map +1 -1
- package/dist/components/jogging/PoseJointValues.d.ts.map +1 -1
- package/dist/components/modal/NoMotionGroupModal.d.ts.map +1 -1
- package/dist/components/robots/DHLinearAxis.d.ts.map +1 -1
- package/dist/components/robots/DHRobot.d.ts.map +1 -1
- package/dist/components/robots/GenericRobot.d.ts +1 -1
- package/dist/components/robots/GenericRobot.d.ts.map +1 -1
- package/dist/components/robots/LinearAxisAnimator.d.ts +1 -1
- package/dist/components/robots/LinearAxisAnimator.d.ts.map +1 -1
- package/dist/components/robots/MotionGroupVisualizer.d.ts +2 -2
- package/dist/components/robots/MotionGroupVisualizer.d.ts.map +1 -1
- package/dist/components/robots/RobotAnimator.d.ts +1 -1
- package/dist/components/robots/RobotAnimator.d.ts.map +1 -1
- package/dist/components/robots/SupportedLinearAxis.d.ts.map +1 -1
- package/dist/components/robots/SupportedRobot.d.ts.map +1 -1
- package/dist/components/robots/robotModelLogic.d.ts.map +1 -1
- package/dist/components/safetyBar/ControllerTypeIndicator.d.ts +1 -1
- package/dist/components/safetyBar/ControllerTypeIndicator.d.ts.map +1 -1
- package/dist/components/safetyBar/IndicatorWithExplanation.d.ts +2 -1
- package/dist/components/safetyBar/IndicatorWithExplanation.d.ts.map +1 -1
- package/dist/components/safetyBar/OperationModeIndicator.d.ts +1 -1
- package/dist/components/safetyBar/OperationModeIndicator.d.ts.map +1 -1
- package/dist/components/safetyBar/SafetyBar.d.ts +1 -1
- package/dist/components/safetyBar/SafetyBar.d.ts.map +1 -1
- package/dist/components/safetyBar/SafetyStateIndicator.d.ts +1 -1
- package/dist/components/safetyBar/SafetyStateIndicator.d.ts.map +1 -1
- package/dist/components/utils/converters.d.ts +2 -2
- package/dist/components/utils/converters.d.ts.map +1 -1
- package/dist/components/utils/hooks.d.ts.map +1 -1
- package/dist/components/utils/interpolation.d.ts.map +1 -1
- package/dist/core.cjs.js +1 -1
- package/dist/core.es.js +2 -2
- package/dist/externalizeComponent.d.ts.map +1 -1
- package/dist/icons/DropdownArrowIcon.d.ts +1 -1
- package/dist/icons/DropdownArrowIcon.d.ts.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +3 -3
- package/dist/interpolation-BIB6FC35.cjs +198 -0
- package/dist/interpolation-BIB6FC35.cjs.map +1 -0
- package/dist/interpolation-lSTX6ZXZ.js +14559 -0
- package/dist/interpolation-lSTX6ZXZ.js.map +1 -0
- package/dist/lib/JoggerConnection.d.ts +1 -1
- package/dist/lib/JoggerConnection.d.ts.map +1 -1
- package/dist/themes/createDarkTheme.d.ts +1 -1
- package/dist/themes/createDarkTheme.d.ts.map +1 -1
- package/dist/themes/createLightTheme.d.ts +1 -1
- package/dist/themes/createLightTheme.d.ts.map +1 -1
- package/dist/theming-D_pShDEg.js +32236 -0
- package/dist/theming-D_pShDEg.js.map +1 -0
- package/dist/theming-L5E8VSae.cjs +84 -0
- package/dist/theming-L5E8VSae.cjs.map +1 -0
- package/package.json +4 -3
- package/src/3d.ts +2 -2
- package/src/Setup.tsx +2 -6
- package/src/components/3d-viewport/PresetEnvironment.tsx +1 -0
- package/src/components/3d-viewport/SafetyZonesRenderer.tsx +43 -23
- package/src/components/3d-viewport/TrajectoryRenderer.tsx +1 -1
- package/src/components/3d-viewport/collider/ColliderCollection.tsx +3 -2
- package/src/components/AppHeader.tsx +9 -12
- package/src/components/ConsoleFilter.tsx +1 -1
- package/src/components/CopyableText.tsx +4 -1
- package/src/components/CycleTimer/DefaultVariant.tsx +8 -5
- package/src/components/CycleTimer/SmallVariant.tsx +3 -1
- package/src/components/DataGrid.tsx +4 -1
- package/src/components/LoadingCover.tsx +4 -1
- package/src/components/LogPanel.tsx +1 -1
- package/src/components/LogViewer.tsx +13 -17
- package/src/components/ProgramControl.tsx +7 -2
- package/src/components/ProgramStateIndicator.tsx +3 -2
- package/src/components/RobotCard.tsx +6 -1
- package/src/components/RobotListItem.tsx +4 -1
- package/src/components/RobotSetupReadinessIndicator.tsx +4 -2
- package/src/components/SelectableFab.tsx +2 -2
- package/src/components/TabBar.tsx +7 -3
- package/src/components/ThemeSelect.tsx +2 -1
- package/src/components/Timer/TimerDefaultVariant.tsx +9 -6
- package/src/components/Timer/TimerSmallVariant.tsx +2 -1
- package/src/components/Timer/useTimerLogic.ts +9 -9
- package/src/components/TransparentOverlay.tsx +2 -2
- package/src/components/VelocitySlider.tsx +3 -1
- package/src/components/experimental/utils/AdornedSelect.tsx +4 -8
- package/src/components/jogging/JoggingBlocked.tsx +6 -2
- package/src/components/jogging/JoggingCartesianAxisControl.tsx +5 -7
- package/src/components/jogging/JoggingCartesianTab.tsx +6 -8
- package/src/components/jogging/JoggingFreedriveTab.tsx +1 -2
- package/src/components/jogging/JoggingJointLimitDetector.tsx +41 -43
- package/src/components/jogging/JoggingJointTab.tsx +12 -20
- package/src/components/jogging/JoggingJointValueControl.tsx +44 -30
- package/src/components/jogging/JoggingOptions.tsx +143 -139
- package/src/components/jogging/JoggingPanel.test.tsx +77 -85
- package/src/components/jogging/JoggingPanel.tsx +10 -13
- package/src/components/jogging/JoggingStore.ts +18 -13
- package/src/components/jogging/JoggingToggleButtonGroup.tsx +3 -3
- package/src/components/jogging/JoggingVelocitySlider.tsx +2 -10
- package/src/components/jogging/PoseCartesianValues.tsx +2 -1
- package/src/components/jogging/PoseJointValues.tsx +2 -1
- package/src/components/jogging/__fixtures__/motionStreamMockData.ts +0 -1
- package/src/components/modal/NoMotionGroupModal.tsx +7 -10
- package/src/components/robots/DHLinearAxis.tsx +62 -45
- package/src/components/robots/DHRobot.tsx +47 -45
- package/src/components/robots/GenericRobot.tsx +24 -24
- package/src/components/robots/LinearAxis.tsx +0 -1
- package/src/components/robots/LinearAxisAnimator.tsx +4 -1
- package/src/components/robots/MotionGroupVisualizer.tsx +53 -53
- package/src/components/robots/RobotAnimator.test.tsx +2 -2
- package/src/components/robots/RobotAnimator.tsx +4 -1
- package/src/components/robots/SupportedLinearAxis.tsx +10 -3
- package/src/components/robots/SupportedRobot.tsx +10 -3
- package/src/components/robots/robotModelLogic.ts +22 -11
- package/src/components/safetyBar/ControllerTypeIndicator.tsx +2 -1
- package/src/components/safetyBar/IndicatorWithExplanation.tsx +13 -11
- package/src/components/safetyBar/OperationModeIndicator.tsx +2 -1
- package/src/components/safetyBar/SafetyBar.tsx +3 -1
- package/src/components/safetyBar/SafetyStateIndicator.tsx +2 -1
- package/src/components/utils/converters.ts +10 -7
- package/src/components/utils/errorHandling.ts +1 -1
- package/src/components/utils/hooks.tsx +1 -0
- package/src/components/utils/interpolation.test.ts +53 -38
- package/src/components/utils/interpolation.ts +1 -0
- package/src/externalizeComponent.tsx +3 -1
- package/src/icons/DropdownArrowIcon.tsx +1 -2
- package/src/lib/JoggerConnection.ts +24 -24
- package/src/themes/createDarkTheme.ts +2 -3
- package/dist/MotionGroupVisualizer-1twp8wG6.js +0 -1328
- package/dist/MotionGroupVisualizer-1twp8wG6.js.map +0 -1
- package/dist/MotionGroupVisualizer-Dq_KWGsa.cjs +0 -2
- package/dist/MotionGroupVisualizer-Dq_KWGsa.cjs.map +0 -1
- package/dist/interpolation-B3pbgXYX.cjs +0 -42
- package/dist/interpolation-B3pbgXYX.cjs.map +0 -1
- package/dist/interpolation-D4ATdkEg.js +0 -7912
- package/dist/interpolation-D4ATdkEg.js.map +0 -1
- package/dist/theming-BJ6pB6jG.cjs +0 -115
- package/dist/theming-BJ6pB6jG.cjs.map +0 -1
- package/dist/theming-LwkvEF-K.js +0 -22417
- package/dist/theming-LwkvEF-K.js.map +0 -1
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
styled,
|
|
6
|
-
type SelectProps,
|
|
7
|
-
} from "@mui/material"
|
|
8
|
-
|
|
1
|
+
import FormControl from "@mui/material/FormControl"
|
|
2
|
+
import InputLabel from "@mui/material/InputLabel"
|
|
3
|
+
import Select, { type SelectProps } from "@mui/material/Select"
|
|
4
|
+
import { styled } from "@mui/material/styles"
|
|
9
5
|
const AdornedFormControl = styled(FormControl)(({ theme }) => ({
|
|
10
6
|
"&.MuiFormControl-root": {
|
|
11
7
|
".MuiSelect-select": {
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Alert from "@mui/material/Alert"
|
|
2
|
+
import AlertTitle from "@mui/material/AlertTitle"
|
|
3
|
+
import Backdrop from "@mui/material/Backdrop"
|
|
4
|
+
import Button from "@mui/material/Button"
|
|
5
|
+
import Stack from "@mui/material/Stack"
|
|
2
6
|
import { observer } from "mobx-react-lite"
|
|
3
7
|
import { useTranslation } from "react-i18next"
|
|
4
|
-
import {
|
|
8
|
+
import type { JoggingStore } from "./JoggingStore"
|
|
5
9
|
|
|
6
10
|
export const JoggingBlocked = observer(({ store }: { store: JoggingStore }) => {
|
|
7
11
|
const { t } = useTranslation()
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useTheme } from "@mui/material/styles"
|
|
2
|
+
import IconButton from "@mui/material/IconButton"
|
|
3
|
+
import Typography from "@mui/material/Typography"
|
|
2
4
|
import Stack from "@mui/material/Stack"
|
|
3
5
|
import { observer } from "mobx-react-lite"
|
|
4
6
|
import React, { useEffect, useRef, useState, type ReactNode } from "react"
|
|
@@ -46,6 +48,7 @@ export const JoggingCartesianAxisControl = externalizeComponent(
|
|
|
46
48
|
useState<JoggingDirection | null>(null)
|
|
47
49
|
|
|
48
50
|
// Trigger pointer "release" events because e.g. firefox does not trigger pointer events as soon as a component is disabled
|
|
51
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: pre-biome code
|
|
49
52
|
useEffect(() => {
|
|
50
53
|
if (!disabled) {
|
|
51
54
|
return
|
|
@@ -137,12 +140,7 @@ export const JoggingCartesianAxisControl = externalizeComponent(
|
|
|
137
140
|
}
|
|
138
141
|
|
|
139
142
|
return (
|
|
140
|
-
<Stack
|
|
141
|
-
height="64px"
|
|
142
|
-
direction="row"
|
|
143
|
-
justifyContent="center"
|
|
144
|
-
{...rest}
|
|
145
|
-
>
|
|
143
|
+
<Stack height="64px" direction="row" justifyContent="center" {...rest}>
|
|
146
144
|
<IconButton
|
|
147
145
|
disabled={disabled}
|
|
148
146
|
disableRipple
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
useTheme,
|
|
7
|
-
type Theme,
|
|
8
|
-
} from "@mui/material"
|
|
1
|
+
import { useTheme, type Theme } from "@mui/material/styles"
|
|
2
|
+
import Divider from "@mui/material/Divider"
|
|
3
|
+
import Stack from "@mui/material/Stack"
|
|
4
|
+
import ToggleButton from "@mui/material/ToggleButton"
|
|
5
|
+
import Typography from "@mui/material/Typography"
|
|
9
6
|
import {
|
|
10
7
|
degreesToRadians,
|
|
11
8
|
radiansToDegrees,
|
|
@@ -65,6 +62,7 @@ export const JoggingCartesianTab = observer(
|
|
|
65
62
|
),
|
|
66
63
|
)
|
|
67
64
|
},
|
|
65
|
+
// biome-ignore lint/suspicious/noExplicitAny: pre-biome code
|
|
68
66
|
{ fireImmediately: true } as any,
|
|
69
67
|
)
|
|
70
68
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Typography from "@mui/material/Typography"
|
|
2
2
|
import { observer } from "mobx-react-lite"
|
|
3
3
|
import isEqual from "lodash-es/isEqual"
|
|
4
4
|
import { useRef, useState } from "react"
|
|
@@ -10,50 +10,48 @@ import type { JoggingStore } from "./JoggingStore"
|
|
|
10
10
|
* Monitors the active robot motion state and displays a message if
|
|
11
11
|
* any joint limits are reached.
|
|
12
12
|
*/
|
|
13
|
-
export const JoggingJointLimitDetector = observer(
|
|
14
|
-
store
|
|
15
|
-
}
|
|
16
|
-
store: JoggingStore
|
|
17
|
-
}) => {
|
|
18
|
-
const { t } = useTranslation()
|
|
13
|
+
export const JoggingJointLimitDetector = observer(
|
|
14
|
+
({ store }: { store: JoggingStore }) => {
|
|
15
|
+
const { t } = useTranslation()
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
const [jointLimitsReached, setJointLimitsReached] = useState(
|
|
18
|
+
store.jogger.motionStream.rapidlyChangingMotionState.joint_limit_reached
|
|
19
|
+
.limit_reached,
|
|
20
|
+
)
|
|
21
|
+
const jointLimitsReachedRef = useRef(jointLimitsReached)
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
useAnimationFrame(() => {
|
|
24
|
+
const newLimitsReached =
|
|
25
|
+
store.jogger.motionStream.rapidlyChangingMotionState.joint_limit_reached
|
|
26
|
+
.limit_reached
|
|
30
27
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
if (!isEqual(jointLimitsReachedRef.current, newLimitsReached)) {
|
|
29
|
+
jointLimitsReachedRef.current = newLimitsReached
|
|
30
|
+
setJointLimitsReached(newLimitsReached)
|
|
31
|
+
}
|
|
32
|
+
})
|
|
36
33
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
const jointLimitReachedIndices: number[] = []
|
|
35
|
+
for (const [index, limitReached] of jointLimitsReached.entries()) {
|
|
36
|
+
if (limitReached) jointLimitReachedIndices.push(index)
|
|
37
|
+
}
|
|
41
38
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
39
|
+
return (
|
|
40
|
+
<Typography
|
|
41
|
+
data-testid="jogging-joint-limit-detector"
|
|
42
|
+
aria-label="jogging-joint-limit-detector"
|
|
43
|
+
color="error"
|
|
44
|
+
sx={{
|
|
45
|
+
margin: "0.5rem 1rem",
|
|
46
|
+
textAlign: "center",
|
|
47
|
+
minHeight: "1.5rem",
|
|
48
|
+
visibility: jointLimitReachedIndices.length ? "visible" : "hidden",
|
|
49
|
+
}}
|
|
50
|
+
>
|
|
51
|
+
{t("Jogging.JointLimitsReached.lb", {
|
|
52
|
+
jointNumbers: jointLimitReachedIndices.map((i) => i + 1).join(", "),
|
|
53
|
+
})}
|
|
54
|
+
</Typography>
|
|
55
|
+
)
|
|
56
|
+
},
|
|
57
|
+
)
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useTheme } from "@mui/material/styles"
|
|
2
|
+
import Divider from "@mui/material/Divider"
|
|
3
|
+
import Stack from "@mui/material/Stack"
|
|
4
|
+
import Typography from "@mui/material/Typography"
|
|
5
|
+
import { JointTypeEnum } from "@wandelbots/nova-js/v2"
|
|
2
6
|
import { observer } from "mobx-react-lite"
|
|
3
7
|
import type { ReactNode } from "react"
|
|
4
8
|
import { JoggingJointLimitDetector } from "./JoggingJointLimitDetector"
|
|
5
9
|
import { JoggingJointValueControl } from "./JoggingJointValueControl"
|
|
6
|
-
import {
|
|
10
|
+
import type { JoggingStore } from "./JoggingStore"
|
|
7
11
|
import { JoggingVelocitySlider } from "./JoggingVelocitySlider"
|
|
8
|
-
import { JointTypeEnum } from "@wandelbots/nova-js/v2"
|
|
9
|
-
|
|
10
12
|
|
|
11
13
|
export const JoggingJointTab = observer(
|
|
12
|
-
({ store, children }: { store: JoggingStore; children
|
|
14
|
+
({ store, children }: { store: JoggingStore; children?: ReactNode }) => {
|
|
13
15
|
const theme = useTheme()
|
|
14
16
|
async function startJointJogging(opts: {
|
|
15
17
|
joint: number
|
|
16
|
-
direction: "-" | "+"
|
|
18
|
+
direction: "-" | "+"
|
|
17
19
|
}) {
|
|
18
20
|
await store.activate()
|
|
19
21
|
|
|
@@ -21,14 +23,11 @@ export const JoggingJointTab = observer(
|
|
|
21
23
|
joint: opts.joint,
|
|
22
24
|
direction: opts.direction,
|
|
23
25
|
velocityUnit:
|
|
24
|
-
store.jointType === JointTypeEnum.PrismaticJoint
|
|
25
|
-
? "mm/s"
|
|
26
|
-
: "rad/s",
|
|
26
|
+
store.jointType === JointTypeEnum.PrismaticJoint ? "mm/s" : "rad/s",
|
|
27
27
|
velocityValue:
|
|
28
28
|
store.jointType === JointTypeEnum.PrismaticJoint
|
|
29
29
|
? store.translationVelocityMmPerSec
|
|
30
30
|
: store.rotationVelocityRadsPerSec,
|
|
31
|
-
|
|
32
31
|
})
|
|
33
32
|
}
|
|
34
33
|
|
|
@@ -47,9 +46,7 @@ export const JoggingJointTab = observer(
|
|
|
47
46
|
>
|
|
48
47
|
<JoggingVelocitySlider
|
|
49
48
|
store={store}
|
|
50
|
-
useDegree={
|
|
51
|
-
store.jointType === JointTypeEnum.RevoluteJoint
|
|
52
|
-
}
|
|
49
|
+
useDegree={store.jointType === JointTypeEnum.RevoluteJoint}
|
|
53
50
|
/>
|
|
54
51
|
|
|
55
52
|
<Divider />
|
|
@@ -97,17 +94,12 @@ export const JoggingJointTab = observer(
|
|
|
97
94
|
disabled={store.isLocked}
|
|
98
95
|
lowerLimit={jointLimits?.lower_limit}
|
|
99
96
|
upperLimit={jointLimits?.upper_limit}
|
|
100
|
-
useDegree={
|
|
101
|
-
store.jointType === JointTypeEnum.RevoluteJoint
|
|
102
|
-
}
|
|
103
|
-
|
|
97
|
+
useDegree={store.jointType === JointTypeEnum.RevoluteJoint}
|
|
104
98
|
getValue={() => {
|
|
105
99
|
const value =
|
|
106
100
|
store.jogger.motionStream.rapidlyChangingMotionState
|
|
107
101
|
.joint_position[joint.index]
|
|
108
|
-
return value !== undefined
|
|
109
|
-
? value
|
|
110
|
-
: undefined
|
|
102
|
+
return value !== undefined ? value : undefined
|
|
111
103
|
}}
|
|
112
104
|
startJogging={(direction: "-" | "+") =>
|
|
113
105
|
startJointJogging({
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import ChevronLeft from "@mui/icons-material/ChevronLeft"
|
|
2
2
|
import ChevronRight from "@mui/icons-material/ChevronRight"
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
3
|
+
import { useTheme } from "@mui/material/styles"
|
|
4
|
+
import IconButton from "@mui/material/IconButton"
|
|
5
|
+
import Slider from "@mui/material/Slider"
|
|
6
|
+
import Typography from "@mui/material/Typography"
|
|
5
7
|
import Stack from "@mui/material/Stack"
|
|
8
|
+
import { radiansToDegrees } from "@wandelbots/nova-js"
|
|
6
9
|
import throttle from "lodash-es/throttle"
|
|
7
10
|
import { observer, useLocalObservable } from "mobx-react-lite"
|
|
8
11
|
import { useState } from "react"
|
|
@@ -24,15 +27,15 @@ type JoggingJointValueControlProps = {
|
|
|
24
27
|
export const JoggingJointValueControl = externalizeComponent(
|
|
25
28
|
observer(
|
|
26
29
|
({
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
startJogging,
|
|
31
|
+
stopJogging,
|
|
32
|
+
lowerLimit,
|
|
33
|
+
upperLimit,
|
|
34
|
+
useDegree,
|
|
35
|
+
getValue,
|
|
36
|
+
disabled,
|
|
37
|
+
...rest
|
|
38
|
+
}: JoggingJointValueControlProps) => {
|
|
36
39
|
const { t } = useTranslation()
|
|
37
40
|
const [currentValue, setCurrentValue] = useState<number | undefined>()
|
|
38
41
|
const theme = useTheme()
|
|
@@ -57,19 +60,23 @@ export const JoggingJointValueControl = externalizeComponent(
|
|
|
57
60
|
}))
|
|
58
61
|
|
|
59
62
|
const updateValue = throttle(() => {
|
|
60
|
-
const newValue =useDegree ? convertToDegree(getValue()) : getValue()
|
|
61
|
-
if
|
|
63
|
+
const newValue = useDegree ? convertToDegree(getValue()) : getValue()
|
|
64
|
+
if (
|
|
65
|
+
newValue === undefined ||
|
|
66
|
+
currentValue === undefined ||
|
|
67
|
+
Math.abs(currentValue - newValue) > 1e-9
|
|
68
|
+
) {
|
|
62
69
|
setCurrentValue(newValue)
|
|
63
70
|
}
|
|
64
71
|
}, 50)
|
|
65
72
|
|
|
66
73
|
useAnimationFrame(updateValue)
|
|
67
74
|
|
|
68
|
-
function convertToDegree(value: number| undefined){
|
|
69
|
-
if (value
|
|
70
|
-
return undefined
|
|
75
|
+
function convertToDegree(value: number | undefined) {
|
|
76
|
+
if (value === undefined) {
|
|
77
|
+
return undefined
|
|
71
78
|
}
|
|
72
|
-
return radiansToDegrees(value)
|
|
79
|
+
return radiansToDegrees(value)
|
|
73
80
|
}
|
|
74
81
|
|
|
75
82
|
function onPointerDownMinus(ev: React.PointerEvent) {
|
|
@@ -90,7 +97,7 @@ export const JoggingJointValueControl = externalizeComponent(
|
|
|
90
97
|
}
|
|
91
98
|
|
|
92
99
|
function formatDegrees(value: number | undefined, precision = 1) {
|
|
93
|
-
if (value === undefined || isNaN(value)) return ""
|
|
100
|
+
if (value === undefined || Number.isNaN(value)) return ""
|
|
94
101
|
|
|
95
102
|
const output = t("General.degree.variable", {
|
|
96
103
|
amount: value.toFixed(precision),
|
|
@@ -103,7 +110,7 @@ export const JoggingJointValueControl = externalizeComponent(
|
|
|
103
110
|
}
|
|
104
111
|
}
|
|
105
112
|
function formatMm(value: number | undefined, precision = 1) {
|
|
106
|
-
if (value === undefined || isNaN(value)) return ""
|
|
113
|
+
if (value === undefined || Number.isNaN(value)) return ""
|
|
107
114
|
|
|
108
115
|
const output = t("General.mm.variable", {
|
|
109
116
|
amount: value.toFixed(precision),
|
|
@@ -116,7 +123,6 @@ export const JoggingJointValueControl = externalizeComponent(
|
|
|
116
123
|
}
|
|
117
124
|
}
|
|
118
125
|
|
|
119
|
-
|
|
120
126
|
return (
|
|
121
127
|
<Stack
|
|
122
128
|
height="64px"
|
|
@@ -164,8 +170,8 @@ export const JoggingJointValueControl = externalizeComponent(
|
|
|
164
170
|
sx={{
|
|
165
171
|
pointerEvents: "none",
|
|
166
172
|
color:
|
|
167
|
-
|
|
168
|
-
|
|
173
|
+
theme.componentsExt?.JoggingPanel?.JoggingJoint?.Joint
|
|
174
|
+
?.arrowColor,
|
|
169
175
|
}}
|
|
170
176
|
/>
|
|
171
177
|
</IconButton>
|
|
@@ -206,8 +212,8 @@ export const JoggingJointValueControl = externalizeComponent(
|
|
|
206
212
|
<Slider
|
|
207
213
|
disabled
|
|
208
214
|
aria-label="Joint position"
|
|
209
|
-
min={
|
|
210
|
-
max={
|
|
215
|
+
min={useDegree ? convertToDegree(lowerLimit) : lowerLimit}
|
|
216
|
+
max={useDegree ? convertToDegree(upperLimit) : upperLimit}
|
|
211
217
|
value={currentValue || 0}
|
|
212
218
|
track={false}
|
|
213
219
|
sx={{
|
|
@@ -238,12 +244,20 @@ export const JoggingJointValueControl = externalizeComponent(
|
|
|
238
244
|
lowerLimit !== undefined &&
|
|
239
245
|
upperLimit !== undefined && [
|
|
240
246
|
{
|
|
241
|
-
value: (useDegree
|
|
242
|
-
|
|
247
|
+
value: (useDegree
|
|
248
|
+
? convertToDegree(lowerLimit)
|
|
249
|
+
: lowerLimit) as number,
|
|
250
|
+
label: useDegree
|
|
251
|
+
? formatDegrees(convertToDegree(lowerLimit), 0)
|
|
252
|
+
: formatMm(lowerLimit),
|
|
243
253
|
},
|
|
244
254
|
{
|
|
245
|
-
value: (useDegree
|
|
246
|
-
|
|
255
|
+
value: (useDegree
|
|
256
|
+
? convertToDegree(upperLimit)
|
|
257
|
+
: upperLimit) as number,
|
|
258
|
+
label: useDegree
|
|
259
|
+
? formatDegrees(convertToDegree(upperLimit), 0)
|
|
260
|
+
: formatMm(upperLimit),
|
|
247
261
|
},
|
|
248
262
|
]
|
|
249
263
|
}
|
|
@@ -265,8 +279,8 @@ export const JoggingJointValueControl = externalizeComponent(
|
|
|
265
279
|
sx={{
|
|
266
280
|
pointerEvents: "none",
|
|
267
281
|
color:
|
|
268
|
-
|
|
269
|
-
|
|
282
|
+
theme.componentsExt?.JoggingPanel?.JoggingJoint?.Joint
|
|
283
|
+
?.arrowColor,
|
|
270
284
|
}}
|
|
271
285
|
/>
|
|
272
286
|
</IconButton>
|