@adcops/autocore-react 3.3.87 → 3.3.90
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/assets/AxisC.d.ts +4 -0
- package/dist/assets/AxisC.d.ts.map +1 -0
- package/dist/assets/AxisC.js +1 -0
- package/dist/assets/AxisX.js +1 -1
- package/dist/assets/AxisY.js +1 -1
- package/dist/assets/AxisZ.js +1 -1
- package/dist/assets/JogXNeg.d.ts +4 -0
- package/dist/assets/JogXNeg.d.ts.map +1 -0
- package/dist/assets/JogXNeg.js +1 -0
- package/dist/assets/JogXPos.d.ts +4 -0
- package/dist/assets/JogXPos.d.ts.map +1 -0
- package/dist/assets/JogXPos.js +1 -0
- package/dist/assets/JogYNeg.d.ts +4 -0
- package/dist/assets/JogYNeg.d.ts.map +1 -0
- package/dist/assets/JogYNeg.js +1 -0
- package/dist/assets/JogYPos.d.ts +4 -0
- package/dist/assets/JogYPos.d.ts.map +1 -0
- package/dist/assets/JogYPos.js +1 -0
- package/dist/assets/JogZNeg.d.ts +4 -0
- package/dist/assets/JogZNeg.d.ts.map +1 -0
- package/dist/assets/JogZNeg.js +1 -0
- package/dist/assets/JogZPos.d.ts +4 -0
- package/dist/assets/JogZPos.d.ts.map +1 -0
- package/dist/assets/JogZPos.js +1 -0
- package/dist/assets/Off.d.ts +4 -0
- package/dist/assets/Off.d.ts.map +1 -0
- package/dist/assets/Off.js +1 -0
- package/dist/assets/On.d.ts +4 -0
- package/dist/assets/On.d.ts.map +1 -0
- package/dist/assets/On.js +1 -0
- package/dist/assets/index.d.ts +6 -0
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +1 -1
- package/dist/assets/svg/off.svg +2 -0
- package/dist/assets/svg/on.svg +11 -0
- package/dist/components/JogPanel.d.ts +2 -2
- package/dist/components/JogPanel.d.ts.map +1 -1
- package/dist/components/JogPanel.js +1 -1
- package/dist/components/ams/AmsProvider.d.ts +10 -0
- package/dist/components/ams/AmsProvider.d.ts.map +1 -1
- package/dist/components/ams/AssetDetailView.js +1 -1
- package/dist/components/ams/AssetEditDialog.d.ts.map +1 -1
- package/dist/components/ams/AssetEditDialog.js +1 -1
- package/dist/components/ams/AssetRegistryTable.css +12 -0
- package/dist/components/ams/AssetRegistryTable.d.ts +1 -0
- package/dist/components/ams/AssetRegistryTable.d.ts.map +1 -1
- package/dist/components/ams/AssetRegistryTable.js +1 -1
- package/dist/components/forms/FormRow.js +1 -1
- package/dist/components/forms/FormSection.js +1 -1
- package/dist/components/forms/forms.css +18 -18
- package/dist/components/tis/ConfigurationDialog.d.ts +21 -0
- package/dist/components/tis/ConfigurationDialog.d.ts.map +1 -0
- package/dist/components/tis/ConfigurationDialog.js +1 -0
- package/dist/components/tis/ResultHistoryTable.js +1 -1
- package/dist/components/tis/TestDataView.d.ts +27 -0
- package/dist/components/tis/TestDataView.d.ts.map +1 -1
- package/dist/components/tis/TestDataView.js +1 -1
- package/dist/components/tis/TestSetupForm.d.ts +37 -0
- package/dist/components/tis/TestSetupForm.d.ts.map +1 -1
- package/dist/components/tis/TestSetupForm.js +1 -1
- package/dist/components/tis/TisProvider.d.ts +25 -0
- package/dist/components/tis/TisProvider.d.ts.map +1 -1
- package/dist/components/tis/TisProvider.js +1 -1
- package/dist/components/tis-editor/TisConfigEditor.css +20 -0
- package/dist/components/tis-editor/editor/ConfigurationsEditor.d.ts +19 -0
- package/dist/components/tis-editor/editor/ConfigurationsEditor.d.ts.map +1 -0
- package/dist/components/tis-editor/editor/ConfigurationsEditor.js +1 -0
- package/dist/components/tis-editor/editor/MethodFormEditor.d.ts.map +1 -1
- package/dist/components/tis-editor/editor/MethodFormEditor.js +1 -1
- package/dist/components/tis-editor/types.d.ts +13 -0
- package/dist/components/tis-editor/types.d.ts.map +1 -1
- package/dist/components/tis-editor/validation.d.ts.map +1 -1
- package/dist/components/tis-editor/validation.js +1 -1
- package/dist/themes/adc-dark/blue/theme.css +3 -2
- package/dist/themes/adc-dark/blue/theme.css.map +1 -1
- package/package.json +2 -1
- package/src/assets/AxisC.tsx +38 -0
- package/src/assets/AxisX.tsx +32 -32
- package/src/assets/AxisY.tsx +34 -34
- package/src/assets/AxisZ.tsx +31 -31
- package/src/assets/JogXNeg.tsx +30 -0
- package/src/assets/JogXPos.tsx +30 -0
- package/src/assets/JogYNeg.tsx +30 -0
- package/src/assets/JogYPos.tsx +30 -0
- package/src/assets/JogZNeg.tsx +30 -0
- package/src/assets/JogZPos.tsx +30 -0
- package/src/assets/Off.tsx +14 -0
- package/src/assets/On.tsx +26 -0
- package/src/assets/index.ts +6 -0
- package/src/assets/svg/off.svg +2 -0
- package/src/assets/svg/on.svg +11 -0
- package/src/components/JogPanel.tsx +18 -28
- package/src/components/ams/AmsProvider.tsx +10 -0
- package/src/components/ams/AssetDetailView.tsx +1 -1
- package/src/components/ams/AssetEditDialog.tsx +25 -10
- package/src/components/ams/AssetRegistryTable.css +12 -0
- package/src/components/ams/AssetRegistryTable.tsx +68 -12
- package/src/components/forms/FormRow.tsx +6 -6
- package/src/components/forms/FormSection.tsx +6 -6
- package/src/components/forms/forms.css +18 -18
- package/src/components/tis/ConfigurationDialog.tsx +128 -0
- package/src/components/tis/ResultHistoryTable.tsx +2 -2
- package/src/components/tis/TestDataView.tsx +83 -1
- package/src/components/tis/TestSetupForm.tsx +167 -10
- package/src/components/tis/TisProvider.tsx +53 -0
- package/src/components/tis-editor/TisConfigEditor.css +20 -0
- package/src/components/tis-editor/editor/ConfigurationsEditor.tsx +242 -0
- package/src/components/tis-editor/editor/MethodFormEditor.tsx +4 -0
- package/src/components/tis-editor/types.ts +14 -0
- package/src/components/tis-editor/validation.ts +29 -0
- package/src/themes/adc-dark/_extensions.scss +1 -0
- package/src/themes/theme-base/components/panel/_fieldset.scss +2 -2
package/src/assets/AxisZ.tsx
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2025 Automated Design Corp. All Rights Reserved.
|
|
3
|
-
* Created Date: 2025-08-28 11:28:14
|
|
4
|
-
* -----
|
|
5
|
-
* Last Modified: 2025-08-28 11:39:53
|
|
6
|
-
* -----
|
|
7
|
-
*
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import type { SVGProps } from "react";
|
|
11
|
-
|
|
12
|
-
export const SvgAxisZ = (props: SVGProps<SVGSVGElement>) => (
|
|
13
|
-
<svg
|
|
14
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
15
|
-
width="24"
|
|
16
|
-
height="24"
|
|
17
|
-
viewBox="0 0 24 24"
|
|
18
|
-
fill="none"
|
|
19
|
-
stroke="currentColor"
|
|
20
|
-
strokeWidth="2"
|
|
21
|
-
strokeLinecap="round"
|
|
22
|
-
strokeLinejoin="round"
|
|
23
|
-
{...props}
|
|
24
|
-
>
|
|
25
|
-
{/* Bi-directional vertical arrow */}
|
|
26
|
-
<path d="M18
|
|
27
|
-
{/* Letter Z */}
|
|
28
|
-
<path d="
|
|
29
|
-
</svg>
|
|
30
|
-
);
|
|
31
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2025 Automated Design Corp. All Rights Reserved.
|
|
3
|
+
* Created Date: 2025-08-28 11:28:14
|
|
4
|
+
* -----
|
|
5
|
+
* Last Modified: 2025-08-28 11:39:53
|
|
6
|
+
* -----
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { SVGProps } from "react";
|
|
11
|
+
|
|
12
|
+
export const SvgAxisZ = (props: SVGProps<SVGSVGElement>) => (
|
|
13
|
+
<svg
|
|
14
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
15
|
+
width="24"
|
|
16
|
+
height="24"
|
|
17
|
+
viewBox="0 0 24 24"
|
|
18
|
+
fill="none"
|
|
19
|
+
stroke="currentColor"
|
|
20
|
+
strokeWidth="2"
|
|
21
|
+
strokeLinecap="round"
|
|
22
|
+
strokeLinejoin="round"
|
|
23
|
+
{...props}
|
|
24
|
+
>
|
|
25
|
+
{/* Bi-directional vertical arrow */}
|
|
26
|
+
<path d="M18 4v16M14 8l4-4 4 4M14 16l4 4 4-4" />
|
|
27
|
+
{/* Larger Letter Z */}
|
|
28
|
+
<path d="M2 10h6l-6 6h6" />
|
|
29
|
+
</svg>
|
|
30
|
+
);
|
|
31
|
+
|
|
32
32
|
export default SvgAxisZ;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2026 Automated Design Corp. All Rights Reserved.
|
|
3
|
+
* Created Date: 2026-06-02
|
|
4
|
+
* -----
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SVGProps } from "react";
|
|
9
|
+
|
|
10
|
+
export const SvgJogXNeg = (props: SVGProps<SVGSVGElement>) => (
|
|
11
|
+
<svg
|
|
12
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
+
width="24"
|
|
14
|
+
height="24"
|
|
15
|
+
viewBox="0 0 24 24"
|
|
16
|
+
fill="none"
|
|
17
|
+
stroke="currentColor"
|
|
18
|
+
strokeWidth="2"
|
|
19
|
+
strokeLinecap="round"
|
|
20
|
+
strokeLinejoin="round"
|
|
21
|
+
{...props}
|
|
22
|
+
>
|
|
23
|
+
{/* Triangle pointing left (X negative) */}
|
|
24
|
+
<path d="M10 6 3 12 10 18Z" fill="currentColor" />
|
|
25
|
+
{/* Letter X */}
|
|
26
|
+
<path d="M14 6l8 12M22 6l-8 12" />
|
|
27
|
+
</svg>
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
export default SvgJogXNeg;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2026 Automated Design Corp. All Rights Reserved.
|
|
3
|
+
* Created Date: 2026-06-02
|
|
4
|
+
* -----
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SVGProps } from "react";
|
|
9
|
+
|
|
10
|
+
export const SvgJogXPos = (props: SVGProps<SVGSVGElement>) => (
|
|
11
|
+
<svg
|
|
12
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
+
width="24"
|
|
14
|
+
height="24"
|
|
15
|
+
viewBox="0 0 24 24"
|
|
16
|
+
fill="none"
|
|
17
|
+
stroke="currentColor"
|
|
18
|
+
strokeWidth="2"
|
|
19
|
+
strokeLinecap="round"
|
|
20
|
+
strokeLinejoin="round"
|
|
21
|
+
{...props}
|
|
22
|
+
>
|
|
23
|
+
{/* Letter X */}
|
|
24
|
+
<path d="M2 6l8 12M10 6l-8 12" />
|
|
25
|
+
{/* Triangle pointing right (X positive) */}
|
|
26
|
+
<path d="M14 6 21 12 14 18Z" fill="currentColor" />
|
|
27
|
+
</svg>
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
export default SvgJogXPos;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2026 Automated Design Corp. All Rights Reserved.
|
|
3
|
+
* Created Date: 2026-06-02
|
|
4
|
+
* -----
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SVGProps } from "react";
|
|
9
|
+
|
|
10
|
+
export const SvgJogYPos = (props: SVGProps<SVGSVGElement>) => (
|
|
11
|
+
<svg
|
|
12
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
+
width="24"
|
|
14
|
+
height="24"
|
|
15
|
+
viewBox="0 0 24 24"
|
|
16
|
+
fill="none"
|
|
17
|
+
stroke="currentColor"
|
|
18
|
+
strokeWidth="2"
|
|
19
|
+
strokeLinecap="round"
|
|
20
|
+
strokeLinejoin="round"
|
|
21
|
+
{...props}
|
|
22
|
+
>
|
|
23
|
+
{/* Triangle pointing toward the upper-right corner (Y positive, into the mill) */}
|
|
24
|
+
<path d="M21 3 21 11 13 3Z" fill="currentColor" />
|
|
25
|
+
{/* Letter Y (lower-left) */}
|
|
26
|
+
<path d="M4 12l3 4 3-4M7 16v5" />
|
|
27
|
+
</svg>
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
export default SvgJogYPos;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2026 Automated Design Corp. All Rights Reserved.
|
|
3
|
+
* Created Date: 2026-06-02
|
|
4
|
+
* -----
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SVGProps } from "react";
|
|
9
|
+
|
|
10
|
+
export const SvgJogYNeg = (props: SVGProps<SVGSVGElement>) => (
|
|
11
|
+
<svg
|
|
12
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
+
width="24"
|
|
14
|
+
height="24"
|
|
15
|
+
viewBox="0 0 24 24"
|
|
16
|
+
fill="none"
|
|
17
|
+
stroke="currentColor"
|
|
18
|
+
strokeWidth="2"
|
|
19
|
+
strokeLinecap="round"
|
|
20
|
+
strokeLinejoin="round"
|
|
21
|
+
{...props}
|
|
22
|
+
>
|
|
23
|
+
{/* Letter Y (upper-right) */}
|
|
24
|
+
<path d="M20 3l-3 4-3-4M17 7v5" />
|
|
25
|
+
{/* Triangle pointing toward the lower-left corner (Y negative, out of the mill) */}
|
|
26
|
+
<path d="M3 21 3 13 11 21Z" fill="currentColor" />
|
|
27
|
+
</svg>
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
export default SvgJogYNeg;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2026 Automated Design Corp. All Rights Reserved.
|
|
3
|
+
* Created Date: 2026-06-02
|
|
4
|
+
* -----
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SVGProps } from "react";
|
|
9
|
+
|
|
10
|
+
export const SvgJogZNeg = (props: SVGProps<SVGSVGElement>) => (
|
|
11
|
+
<svg
|
|
12
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
+
width="24"
|
|
14
|
+
height="24"
|
|
15
|
+
viewBox="0 0 24 24"
|
|
16
|
+
fill="none"
|
|
17
|
+
stroke="currentColor"
|
|
18
|
+
strokeWidth="2"
|
|
19
|
+
strokeLinecap="round"
|
|
20
|
+
strokeLinejoin="round"
|
|
21
|
+
{...props}
|
|
22
|
+
>
|
|
23
|
+
{/* Letter Z */}
|
|
24
|
+
<path d="M6 2h12L6 10h12" />
|
|
25
|
+
{/* Triangle pointing down (Z negative) */}
|
|
26
|
+
<path d="M5 14h14l-7 7Z" fill="currentColor" />
|
|
27
|
+
</svg>
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
export default SvgJogZNeg;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2026 Automated Design Corp. All Rights Reserved.
|
|
3
|
+
* Created Date: 2026-06-02
|
|
4
|
+
* -----
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SVGProps } from "react";
|
|
9
|
+
|
|
10
|
+
export const SvgJogZPos = (props: SVGProps<SVGSVGElement>) => (
|
|
11
|
+
<svg
|
|
12
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
+
width="24"
|
|
14
|
+
height="24"
|
|
15
|
+
viewBox="0 0 24 24"
|
|
16
|
+
fill="none"
|
|
17
|
+
stroke="currentColor"
|
|
18
|
+
strokeWidth="2"
|
|
19
|
+
strokeLinecap="round"
|
|
20
|
+
strokeLinejoin="round"
|
|
21
|
+
{...props}
|
|
22
|
+
>
|
|
23
|
+
{/* Triangle pointing up (Z positive) */}
|
|
24
|
+
<path d="M5 10 12 3 19 10Z" fill="currentColor" />
|
|
25
|
+
{/* Letter Z */}
|
|
26
|
+
<path d="M6 14h12L6 22h12" />
|
|
27
|
+
</svg>
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
export default SvgJogZPos;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SVGProps } from "react";
|
|
2
|
+
|
|
3
|
+
export const Off = (props: SVGProps<SVGSVGElement>) => (
|
|
4
|
+
<svg
|
|
5
|
+
viewBox="0 0 354.487 354.487"
|
|
6
|
+
fill="currentColor"
|
|
7
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
8
|
+
{...props}
|
|
9
|
+
>
|
|
10
|
+
<path d="M177.241,0C79.504,0,0,79.51,0,177.241c0,97.736,79.51,177.246,177.241,177.246c97.731,0,177.246-79.516,177.246-177.246 C354.487,79.504,274.979,0,177.241,0z M177.241,311.444c-73.994,0-134.198-60.203-134.198-134.203 c0-73.995,60.204-134.199,134.198-134.199c74,0,134.204,60.204,134.204,134.199C311.445,251.241,251.241,311.444,177.241,311.444z" />
|
|
11
|
+
</svg>
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
export default Off;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2026 Automated Design Corp. All Rights Reserved.
|
|
3
|
+
* Created Date: 2026-06-02
|
|
4
|
+
* -----
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SVGProps } from "react";
|
|
9
|
+
|
|
10
|
+
export const On = (props: SVGProps<SVGSVGElement>) => (
|
|
11
|
+
<svg
|
|
12
|
+
viewBox="0 0 72 72"
|
|
13
|
+
fill="none"
|
|
14
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
15
|
+
{...props}
|
|
16
|
+
>
|
|
17
|
+
<path
|
|
18
|
+
d="M36 16L36 56"
|
|
19
|
+
stroke="currentColor"
|
|
20
|
+
strokeLinecap="round"
|
|
21
|
+
strokeWidth={3.6}
|
|
22
|
+
/>
|
|
23
|
+
</svg>
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
export default On;
|
package/src/assets/index.ts
CHANGED
|
@@ -3,6 +3,12 @@ export { default as Distance } from "./Distance";
|
|
|
3
3
|
export { default as JogLong } from "./JogLong";
|
|
4
4
|
export { default as JogMedium } from "./JogMedium";
|
|
5
5
|
export { default as JogShort } from "./JogShort";
|
|
6
|
+
export { default as JogXPos } from "./JogXPos";
|
|
7
|
+
export { default as JogXNeg } from "./JogXNeg";
|
|
8
|
+
export { default as JogYPos } from "./JogYPos";
|
|
9
|
+
export { default as JogYNeg } from "./JogYNeg";
|
|
10
|
+
export { default as JogZPos } from "./JogZPos";
|
|
11
|
+
export { default as JogZNeg } from "./JogZNeg";
|
|
6
12
|
export { default as PythonLogo } from "./PythonLogo";
|
|
7
13
|
export { default as Rotation3D } from "./Rotation3D";
|
|
8
14
|
export { default as RotationCcw } from "./RotationCcw";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<svg fill="#000000" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg"
|
|
2
|
+
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 354.487 354.487" xml:space="preserve"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <g> <path d="M177.241,0C79.504,0,0,79.51,0,177.241c0,97.736,79.51,177.246,177.241,177.246c97.731,0,177.246-79.516,177.246-177.246 C354.487,79.504,274.979,0,177.241,0z M177.241,311.444c-73.994,0-134.198-60.203-134.198-134.203 c0-73.995,60.204-134.199,134.198-134.199c74,0,134.204,60.204,134.204,134.199C311.445,251.241,251.241,311.444,177.241,311.444z"></path> </g> </g></svg>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg viewBox="0 0 72 72" id="emoji" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g id="SVGRepo_bgCarrier" stroke-width="0"></g>
|
|
3
|
+
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round" stroke="#CCCCCC"
|
|
4
|
+
stroke-width="0.43200000000000005"></g>
|
|
5
|
+
<g id="SVGRepo_iconCarrier">
|
|
6
|
+
<g id="color"></g>
|
|
7
|
+
<g id="line">
|
|
8
|
+
<path stroke="#000000" stroke-linecap="round" stroke-width="3.6" d="M36 16L36 56"></path>
|
|
9
|
+
</g>
|
|
10
|
+
</g>
|
|
11
|
+
</svg>
|
|
@@ -19,6 +19,7 @@ import { Distance, JogShort, JogMedium, JogLong } from '../assets';
|
|
|
19
19
|
import { Speed, SpeedSlow, SpeedMedium, SpeedFast } from '../assets';
|
|
20
20
|
import { RotationCcwA, RotationCcwB, RotationCcwC } from '../assets';
|
|
21
21
|
import { RotationCwA, RotationCwB, RotationCwC } from '../assets';
|
|
22
|
+
import { JogXPos, JogXNeg, JogYPos, JogYNeg, JogZPos, JogZNeg } from '../assets';
|
|
22
23
|
|
|
23
24
|
/**
|
|
24
25
|
* Enumerates the source button or action when an event occurs.
|
|
@@ -125,9 +126,9 @@ interface JogPanelState {
|
|
|
125
126
|
* A default jog button configuration for linear 3D motion.
|
|
126
127
|
*/
|
|
127
128
|
export const DefaultLinearJogButtons : (JogPanelButtonDefinition | undefined)[][] = [
|
|
128
|
-
[{ icon: "pi pi-arrow-up
|
|
129
|
+
[undefined, { icon: "pi pi-arrow-up", action: JogPanelAction.zPositive, alt: "Z Positive" }, { icon: "pi pi-arrow-down-left", action: JogPanelAction.yNegative, alt: "Y Negative" }],
|
|
129
130
|
[{ icon: "pi pi-arrow-left", action: JogPanelAction.xNegative, alt: "X Negative" }, undefined, { icon: "pi pi-arrow-right", action: JogPanelAction.xPositive, alt: "X Positive" }],
|
|
130
|
-
[
|
|
131
|
+
[{ icon: "pi pi-arrow-up-right", action: JogPanelAction.yPositive, alt: "Y Positive" }, { icon: "pi pi-arrow-down", action: JogPanelAction.zNegative, alt: "Z Negative" }, undefined],
|
|
131
132
|
];
|
|
132
133
|
|
|
133
134
|
/**
|
|
@@ -156,9 +157,9 @@ export const DefaultRotationJogButtons : (JogPanelButtonDefinition | undefined)[
|
|
|
156
157
|
* Example:
|
|
157
158
|
* ```
|
|
158
159
|
* export const kDefaultButtonDefinitions : (JogPanelButtonDefinition | undefined)[][] = [
|
|
159
|
-
* [{ icon: "pi pi-arrow-up
|
|
160
|
+
* [undefined, { icon: "pi pi-arrow-up", action: JogPanelAction.zPositive, alt: "Z Positive" }, { icon: "pi pi-arrow-down-left", action: JogPanelAction.yNegative, alt: "Y Negative" }],
|
|
160
161
|
* [{ icon: "pi pi-arrow-left", action: JogPanelAction.xNegative, alt: "X Negative" }, undefined, { icon: "pi pi-arrow-right", action: JogPanelAction.xPositive, alt: "X Positive" }],
|
|
161
|
-
* [
|
|
162
|
+
* [{ icon: "pi pi-arrow-up-right", action: JogPanelAction.yPositive, alt: "Y Positive" }, { icon: "pi pi-arrow-down", action: JogPanelAction.zNegative, alt: "Z Negative" }, undefined],
|
|
162
163
|
* ];
|
|
163
164
|
* ```
|
|
164
165
|
*
|
|
@@ -249,22 +250,22 @@ export class JogPanel extends React.Component<JogPanelProps, JogPanelState> {
|
|
|
249
250
|
return <i/>
|
|
250
251
|
}
|
|
251
252
|
else if (action == JogPanelAction.xNegative) {
|
|
252
|
-
return <
|
|
253
|
+
return <JogXNeg />
|
|
253
254
|
}
|
|
254
255
|
else if (action == JogPanelAction.xPositive) {
|
|
255
|
-
return <
|
|
256
|
+
return <JogXPos />
|
|
256
257
|
}
|
|
257
258
|
else if (action == JogPanelAction.yNegative) {
|
|
258
|
-
return <
|
|
259
|
+
return <JogYNeg />
|
|
259
260
|
}
|
|
260
261
|
else if (action == JogPanelAction.yPositive) {
|
|
261
|
-
return <
|
|
262
|
+
return <JogYPos />
|
|
262
263
|
}
|
|
263
264
|
else if (action == JogPanelAction.zNegative) {
|
|
264
|
-
return <
|
|
265
|
+
return <JogZNeg />
|
|
265
266
|
}
|
|
266
267
|
else if (action == JogPanelAction.zPositive) {
|
|
267
|
-
return <
|
|
268
|
+
return <JogZPos />
|
|
268
269
|
}
|
|
269
270
|
else if (action == JogPanelAction.aNegative) {
|
|
270
271
|
return <RotationCcwA />
|
|
@@ -299,24 +300,13 @@ export class JogPanel extends React.Component<JogPanelProps, JogPanelState> {
|
|
|
299
300
|
|
|
300
301
|
const action = this.props.buttonDefinitions[row][col]?.action;
|
|
301
302
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
/>
|
|
310
|
-
}
|
|
311
|
-
else {
|
|
312
|
-
return <Button
|
|
313
|
-
key={`${row}-${col}`}
|
|
314
|
-
tooltip={this.props.buttonDefinitions[row][col]?.alt}
|
|
315
|
-
onClick={() => this.handleClicked(action)}
|
|
316
|
-
className="button-item"
|
|
317
|
-
icon={() => this.actionToIcon(action)}/>
|
|
318
|
-
}
|
|
319
|
-
|
|
303
|
+
return <Button
|
|
304
|
+
key={`${row}-${col}`}
|
|
305
|
+
tooltip={this.props.buttonDefinitions[row][col]?.alt}
|
|
306
|
+
onClick={() => this.handleClicked(action)}
|
|
307
|
+
className="button-item"
|
|
308
|
+
icon={() => this.actionToIcon(action)}/>
|
|
309
|
+
|
|
320
310
|
}
|
|
321
311
|
else {
|
|
322
312
|
return <Button icon="pi" key={`${row}-${col}`} disabled={true} className="button-item empty-slot" />
|
|
@@ -55,6 +55,16 @@ export interface AmsRole {
|
|
|
55
55
|
* feeding NI bridge channel calibration). Empty for purely
|
|
56
56
|
* test-method-driven roles. */
|
|
57
57
|
used_by_modules: string[];
|
|
58
|
+
/** Optional per-field seed values declared on the asset_ref's
|
|
59
|
+
* `defaults` map. AIS uses these to pre-fill nameplate inputs when
|
|
60
|
+
* the operator creates a new asset for this role — the operator
|
|
61
|
+
* confirms or edits, the values are never enforced. Absent when no
|
|
62
|
+
* asset_ref declared defaults (the common case, since built-in
|
|
63
|
+
* load_cell etc. didn't support defaults before the feature
|
|
64
|
+
* landed). Keys are field names from the asset_type's schema;
|
|
65
|
+
* values are untyped JSON (numbers, strings, booleans) matching
|
|
66
|
+
* the field's declared `type`. */
|
|
67
|
+
defaults?: Record<string, any>;
|
|
58
68
|
}
|
|
59
69
|
export type AmsRoleRegistry = { [assetType: string]: AmsRole[] };
|
|
60
70
|
|
|
@@ -235,7 +235,7 @@ export const AssetDetailView: React.FC = () => {
|
|
|
235
235
|
<Button label="Edit" icon="pi pi-pencil"
|
|
236
236
|
outlined
|
|
237
237
|
onClick={() => setEditDialogOpen(true)}
|
|
238
|
-
tooltip="Edit role, nameplate, and per-axis values. Type
|
|
238
|
+
tooltip="Edit serial, role, nameplate, and per-axis values. Type and install date are immutable."
|
|
239
239
|
tooltipOptions={{ position: 'left' }}
|
|
240
240
|
/>
|
|
241
241
|
{asset.status === 'active' && (
|
|
@@ -9,12 +9,13 @@
|
|
|
9
9
|
* `asset.current_calibration_id` is non-null. Posts via
|
|
10
10
|
* `ams.update_calibration` (server enforces "current only"). Tab
|
|
11
11
|
* is hidden entirely for assets that never had a calibration —
|
|
12
|
-
* "
|
|
12
|
+
* "Calibration" on <AssetDetailView> is the path to add one.
|
|
13
13
|
*
|
|
14
|
-
* The server treats `asset_id`, `asset_type`, `
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
14
|
+
* The server treats `asset_id`, `asset_type`, and `install_date` as
|
|
15
|
+
* immutable; the read-only header strip mirrors that. `serial` is
|
|
16
|
+
* editable (free-form traceability metadata) so a mis-keyed serial can
|
|
17
|
+
* be corrected here. Status stays out of this dialog because the Retire
|
|
18
|
+
* button on <AssetDetailView> already owns that transition.
|
|
18
19
|
*
|
|
19
20
|
* Save commits the Asset tab first, then (if a calibration is loaded)
|
|
20
21
|
* the Calibration tab. Either failure surfaces inline and stops; the
|
|
@@ -175,6 +176,7 @@ export const AssetEditDialog: React.FC<AssetEditDialogProps> = ({
|
|
|
175
176
|
// effect below.
|
|
176
177
|
const [roleSelection, setRoleSelection] = useState<string>('');
|
|
177
178
|
const [location, setLocation] = useState<string>('');
|
|
179
|
+
const [serial, setSerial] = useState<string>('');
|
|
178
180
|
const [customFields, setCustomFields] =
|
|
179
181
|
useState<Record<string, string>>({});
|
|
180
182
|
const [subLocationFields, setSubLocationFields] =
|
|
@@ -215,6 +217,9 @@ export const AssetEditDialog: React.FC<AssetEditDialogProps> = ({
|
|
|
215
217
|
setSubmitting(false);
|
|
216
218
|
setActiveTab(0);
|
|
217
219
|
|
|
220
|
+
// Serial: free-form, editable so operators can correct a typo.
|
|
221
|
+
setSerial(typeof asset.serial === 'string' ? asset.serial : '');
|
|
222
|
+
|
|
218
223
|
// Role: pick the dropdown option when the asset's location
|
|
219
224
|
// matches a declared role; otherwise route into ROLE_OTHER so
|
|
220
225
|
// the operator can keep the current custom string.
|
|
@@ -365,6 +370,7 @@ export const AssetEditDialog: React.FC<AssetEditDialogProps> = ({
|
|
|
365
370
|
const payload: any = {
|
|
366
371
|
asset_id: asset.asset_id,
|
|
367
372
|
location,
|
|
373
|
+
serial,
|
|
368
374
|
custom,
|
|
369
375
|
};
|
|
370
376
|
if (subLocations) payload.sub_locations = subLocations;
|
|
@@ -481,10 +487,11 @@ export const AssetEditDialog: React.FC<AssetEditDialogProps> = ({
|
|
|
481
487
|
</>
|
|
482
488
|
}
|
|
483
489
|
>
|
|
484
|
-
{/* Read-only context strip — type,
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
490
|
+
{/* Read-only context strip — type, install_date. The server
|
|
491
|
+
treats these as immutable; surfacing them here keeps the
|
|
492
|
+
operator oriented without inviting an edit that would
|
|
493
|
+
silently no-op. Serial moved into the editable Asset tab
|
|
494
|
+
below so operators can correct a mis-entered serial. */}
|
|
488
495
|
<div style={{ display: 'grid',
|
|
489
496
|
gridTemplateColumns: 'auto 1fr',
|
|
490
497
|
gap: '0.25rem 1rem',
|
|
@@ -492,7 +499,6 @@ export const AssetEditDialog: React.FC<AssetEditDialogProps> = ({
|
|
|
492
499
|
color: 'var(--text-secondary-color)',
|
|
493
500
|
marginBottom: '0.75rem' }}>
|
|
494
501
|
<span>Type</span> <span>{typeLabel}</span>
|
|
495
|
-
<span>Serial</span> <span>{asset.serial || <em>(none)</em>}</span>
|
|
496
502
|
{asset.install_date && (
|
|
497
503
|
<>
|
|
498
504
|
<span>Installed</span>
|
|
@@ -507,6 +513,15 @@ export const AssetEditDialog: React.FC<AssetEditDialogProps> = ({
|
|
|
507
513
|
gridTemplateColumns: 'auto 1fr',
|
|
508
514
|
gap: '0.5rem 1rem',
|
|
509
515
|
alignItems: 'center' }}>
|
|
516
|
+
{/* Serial — free-form manufacturer metadata. Editable so
|
|
517
|
+
a mis-entered serial can be corrected after the fact. */}
|
|
518
|
+
<label>Serial</label>
|
|
519
|
+
<InputText
|
|
520
|
+
value={serial}
|
|
521
|
+
placeholder="(none)"
|
|
522
|
+
onChange={(e) => setSerial(e.target.value)}
|
|
523
|
+
/>
|
|
524
|
+
|
|
510
525
|
{/* Role field. Asset types referenced only by_id_field
|
|
511
526
|
(no by_location asset_ref) come back with an empty
|
|
512
527
|
role list — we hide the row entirely so the operator
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Touch-friendly row sizing for the AMS asset list.
|
|
3
|
+
*
|
|
4
|
+
* The shop-floor HMI is a touchscreen and operators were mis-tapping
|
|
5
|
+
* the dense default DataTable rows. Adding vertical padding to each
|
|
6
|
+
* body cell enlarges the per-row touch target without changing the
|
|
7
|
+
* column layout or text size.
|
|
8
|
+
*/
|
|
9
|
+
.ams-asset-table .p-datatable-tbody > tr > td {
|
|
10
|
+
padding-top: 0.9rem;
|
|
11
|
+
padding-bottom: 0.9rem;
|
|
12
|
+
}
|