synapse-react-client 4.0.20 → 4.0.22
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/SWC.index.d.ts +1 -0
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +2 -1
- package/dist/SWC.index.js.map +1 -1
- package/dist/components/CardContainer/CardConfiguration.d.ts +2 -0
- package/dist/components/CardContainer/CardConfiguration.d.ts.map +1 -1
- package/dist/components/CardContainer/CardContainer.d.ts.map +1 -1
- package/dist/components/CardContainer/CardContainer.js +44 -50
- package/dist/components/CardContainer/CardContainer.js.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +14 -0
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.js +64 -40
- package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.css +1 -1
- package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
- package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.module.scss +26 -7
- package/dist/components/DataGrid/DataGrid.d.ts +1 -0
- package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/DataGrid.js +72 -72
- package/dist/components/DataGrid/DataGrid.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +209 -206
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts +6 -3
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +54 -46
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.d.ts.map +1 -1
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +1 -1
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.js +68 -67
- package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts +1 -0
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +5 -3
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.d.ts +1 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.js +15 -14
- package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
- package/dist/components/DataGrid/utils/normalizeWebsocketError.d.ts +7 -0
- package/dist/components/DataGrid/utils/normalizeWebsocketError.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/normalizeWebsocketError.js +8 -0
- package/dist/components/DataGrid/utils/normalizeWebsocketError.js.map +1 -0
- package/dist/components/GenericCard/GenericCard.d.ts +2 -0
- package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/GenericCard.js +76 -64
- package/dist/components/GenericCard/GenericCard.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +33 -25
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/Goals/Goals.d.ts +8 -0
- package/dist/components/Goals/Goals.d.ts.map +1 -1
- package/dist/components/Goals/Goals.js +54 -40
- package/dist/components/Goals/Goals.js.map +1 -1
- package/dist/components/Plot/SynapseSankeyPlot.css +1 -0
- package/dist/components/Plot/SynapseSankeyPlot.d.ts +44 -2
- package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -1
- package/dist/components/Plot/SynapseSankeyPlot.js +343 -38
- package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -1
- package/dist/components/Plot/SynapseSankeyPlot.module.js +15 -0
- package/dist/components/Plot/SynapseSankeyPlot.module.js.map +1 -0
- package/dist/components/Plot/SynapseSankeyPlot.module.scss +63 -0
- package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.d.ts +9 -0
- package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.d.ts.map +1 -0
- package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.js +69 -0
- package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.js.map +1 -0
- package/dist/components/ProjectVisibilityChip/getProjectVisibilityFromACL.d.ts +13 -0
- package/dist/components/ProjectVisibilityChip/getProjectVisibilityFromACL.d.ts.map +1 -0
- package/dist/components/ProjectVisibilityChip/getProjectVisibilityFromACL.js +11 -0
- package/dist/components/ProjectVisibilityChip/getProjectVisibilityFromACL.js.map +1 -0
- package/dist/components/ProjectVisibilityChip/index.d.ts +5 -0
- package/dist/components/ProjectVisibilityChip/index.d.ts.map +1 -0
- package/dist/components/ProjectVisibilityChip/index.js +7 -0
- package/dist/components/ProjectVisibilityChip/index.js.map +1 -0
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/RowSetView.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/RowSetView.js +9 -12
- package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.d.ts +7 -15
- package/dist/components/RssFeedCards/RssFeedCards.d.ts.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.js +114 -123
- package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +13 -12
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +88 -77
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +63 -74
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +72 -68
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts +27 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +47 -36
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.d.ts +12 -12
- package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts +4 -1
- package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts +167 -517
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js +65 -65
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js +6 -13
- package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js +2 -2
- package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts +2 -2
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js +15 -16
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
- package/dist/components/UserCardList/UserCardList.d.ts +2 -20
- package/dist/components/UserCardList/UserCardList.d.ts.map +1 -1
- package/dist/components/UserCardList/UserCardList.js +49 -72
- package/dist/components/UserCardList/UserCardList.js.map +1 -1
- package/dist/components/UserCardList/UserCardListRotate.d.ts +13 -0
- package/dist/components/UserCardList/UserCardListRotate.d.ts.map +1 -1
- package/dist/components/UserCardList/UserCardListRotate.js +82 -57
- package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
- package/dist/mocks/mockSearchQueryData.js +2 -2
- package/dist/mocks/mockSearchQueryData.js.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.js +6 -3
- package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
- package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts +13 -0
- package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts.map +1 -1
- package/dist/mocks/query/mockUserCardTableQueryResultBundle.js +27 -0
- package/dist/mocks/query/mockUserCardTableQueryResultBundle.js.map +1 -1
- package/dist/style/abstracts/_cssVariables.scss +1 -0
- package/dist/style/components/_cards.scss +10 -0
- package/dist/style/components/_data-grid-extra.css +1 -1
- package/dist/style/components/_data-grid-extra.scss +7 -1
- package/dist/style/main.css +1 -1
- package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
- package/dist/synapse-client/SynapseClient.js +497 -495
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-queries/KeyFactory.d.ts +1 -0
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +3 -0
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/index.js +46 -44
- package/dist/synapse-queries/user/index.js +3 -3
- package/dist/synapse-queries/user/useUserBundle.d.ts +12 -0
- package/dist/synapse-queries/user/useUserBundle.d.ts.map +1 -1
- package/dist/synapse-queries/user/useUserBundle.js +50 -36
- package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/AppUtils/session/SessionInitializedGuard.d.ts +10 -5
- package/dist/utils/AppUtils/session/SessionInitializedGuard.d.ts.map +1 -1
- package/dist/utils/AppUtils/session/SessionInitializedGuard.js +13 -9
- package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
- package/dist/utils/functions/SqlFunctions.d.ts +1 -1
- package/dist/utils/functions/SqlFunctions.d.ts.map +1 -1
- package/dist/utils/functions/SqlFunctions.js +1 -1
- package/dist/utils/functions/SqlFunctions.js.map +1 -1
- package/package.json +7 -5
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { convertToConcreteEntityType as e } from "../../utils/functions/EntityTypeUtils.js";
|
|
2
|
-
import { canHaveDefault as t, canHaveMaxListLength as n, canHaveRestrictedValues as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { FieldWithRecommendedMinimum as
|
|
6
|
-
import { tableColumnSchemaFormDataAtom as
|
|
7
|
-
import { HIERARCHY_VERTICAL_LINE_COMPONENT as
|
|
8
|
-
import { useMemo as
|
|
9
|
-
import { isArray as
|
|
10
|
-
import { Box as
|
|
11
|
-
import { Fragment as
|
|
12
|
-
import { VIEW_CONCRETE_TYPE_VALUES as
|
|
13
|
-
import { InfoTwoTone as
|
|
14
|
-
import { useAtomValue as
|
|
15
|
-
import
|
|
16
|
-
import { selectAtom as
|
|
2
|
+
import { canHaveDefault as t, canHaveMaxListLength as n, canHaveRestrictedValues as r, canHaveSize as i, configureFacetsForType as a, getAllowedColumnTypes as o, getColumnTypeFriendlyName as s, getFacetTypeFriendlyName as ee, getFormDataValueAsNumber as te, getMaxListLengthForType as c, getMaxSizeForType as l } from "./TableColumnSchemaEditorUtils.js";
|
|
3
|
+
import u from "./ColumnModelFormFields/MultiValueField.js";
|
|
4
|
+
import ne from "./ColumnModelFormFields/DefaultValueField.js";
|
|
5
|
+
import { FieldWithRecommendedMinimum as d } from "./ColumnModelFormFields/FieldWithRecommendedMinimum.js";
|
|
6
|
+
import { tableColumnSchemaFormDataAtom as f } from "./TableColumnSchemaFormReducer.js";
|
|
7
|
+
import { HIERARCHY_VERTICAL_LINE_COMPONENT as p } from "./TableColumnSchemaForm.js";
|
|
8
|
+
import { useMemo as m } from "react";
|
|
9
|
+
import { isArray as h, isEmpty as g, isEqual as _ } from "lodash-es";
|
|
10
|
+
import { Box as v, Checkbox as re, FormControl as y, Link as ie, MenuItem as b, Select as x, TextField as S, Tooltip as C } from "@mui/material";
|
|
11
|
+
import { Fragment as w, jsx as T, jsxs as E } from "react/jsx-runtime";
|
|
12
|
+
import { VIEW_CONCRETE_TYPE_VALUES as D } from "@sage-bionetworks/synapse-types";
|
|
13
|
+
import { InfoTwoTone as O } from "@mui/icons-material";
|
|
14
|
+
import { useAtomValue as k, useSetAtom as ae } from "jotai";
|
|
15
|
+
import A from "@mui/material/FormHelperText";
|
|
16
|
+
import { selectAtom as j } from "jotai/utils";
|
|
17
17
|
//#region src/components/TableColumnSchemaEditor/ColumnModelForm.tsx
|
|
18
|
-
var
|
|
18
|
+
var M = {
|
|
19
19
|
height: "28px",
|
|
20
20
|
fontSize: "12px"
|
|
21
21
|
}, N = {
|
|
@@ -23,7 +23,7 @@ var re = {
|
|
|
23
23
|
fontSize: "14px"
|
|
24
24
|
};
|
|
25
25
|
function P(e, t) {
|
|
26
|
-
return e == null ? "" :
|
|
26
|
+
return e == null ? "" : h(e) ? e.map(String).join(", ") : e;
|
|
27
27
|
}
|
|
28
28
|
function F(e) {
|
|
29
29
|
return !e || !e.property && !e.direction ? "" : `${e.property || "FREQUENCY"}_${e.direction || "DESC"}`;
|
|
@@ -38,31 +38,31 @@ function I(e) {
|
|
|
38
38
|
}
|
|
39
39
|
var L = !0;
|
|
40
40
|
function R(R) {
|
|
41
|
-
let { columnModelIndex: z, jsonSubColumnIndex: B, entityType: V, isDefaultColumn: H, disabled: U = !1, validationErrors: W = null, defaultAnnotationModel: G, originalColumnModel: K } = R, q = B != null, J =
|
|
41
|
+
let { columnModelIndex: z, jsonSubColumnIndex: B, entityType: V, isDefaultColumn: H, disabled: U = !1, validationErrors: W = null, defaultAnnotationModel: G, originalColumnModel: K } = R, q = B != null, J = ae(f), Y = D.includes(e(V)), X = k(m(() => j(f, (e) => q ? e[z].jsonSubColumns[B] : e[z], _), [
|
|
42
42
|
z,
|
|
43
43
|
q,
|
|
44
44
|
B
|
|
45
|
-
])),
|
|
46
|
-
if (W &&
|
|
45
|
+
])), oe = m(() => o(Y, q), [Y, q]), Z = m(() => a(X.columnType, q), [X.columnType, q]), Q = m(() => q ? M : N, [q]), $ = m(() => {
|
|
46
|
+
if (W && h(W)) {
|
|
47
47
|
let e = {};
|
|
48
48
|
return W.forEach((t) => {
|
|
49
|
-
t.path && (e[t.path[t.path.length - 1]] = t.message);
|
|
49
|
+
t.path && (e[String(t.path[t.path.length - 1])] = t.message);
|
|
50
50
|
}), e;
|
|
51
51
|
}
|
|
52
52
|
return {};
|
|
53
53
|
}, [W]);
|
|
54
|
-
return /* @__PURE__ */
|
|
54
|
+
return /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ E(v, {
|
|
55
55
|
sx: {
|
|
56
56
|
display: "grid",
|
|
57
57
|
gridColumn: "1 / span 11",
|
|
58
58
|
gridTemplateColumns: "subgrid"
|
|
59
59
|
},
|
|
60
60
|
children: [
|
|
61
|
-
q && /* @__PURE__ */
|
|
61
|
+
q && /* @__PURE__ */ T(v, {
|
|
62
62
|
sx: { gridColumn: "1 / span 1" },
|
|
63
|
-
children:
|
|
63
|
+
children: p
|
|
64
64
|
}),
|
|
65
|
-
/* @__PURE__ */
|
|
65
|
+
/* @__PURE__ */ T(v, {
|
|
66
66
|
"data-testid": "ColumnModelForm",
|
|
67
67
|
sx: {
|
|
68
68
|
display: "flex",
|
|
@@ -70,7 +70,7 @@ function R(R) {
|
|
|
70
70
|
gridColumn: q ? "2 / span 1" : " 1 / span 1",
|
|
71
71
|
mt: q ? "0px" : "5px"
|
|
72
72
|
},
|
|
73
|
-
children: /* @__PURE__ */
|
|
73
|
+
children: /* @__PURE__ */ T(re, {
|
|
74
74
|
checked: X.isSelected,
|
|
75
75
|
inputProps: { "aria-label": "Select" },
|
|
76
76
|
disabled: U,
|
|
@@ -83,12 +83,12 @@ function R(R) {
|
|
|
83
83
|
}
|
|
84
84
|
})
|
|
85
85
|
}),
|
|
86
|
-
/* @__PURE__ */
|
|
86
|
+
/* @__PURE__ */ T(v, {
|
|
87
87
|
sx: {
|
|
88
88
|
my: H ? "auto" : void 0,
|
|
89
89
|
gridColumn: q ? "3 / span 1" : "2 / span 2"
|
|
90
90
|
},
|
|
91
|
-
children: H ? X.name : /* @__PURE__ */
|
|
91
|
+
children: H ? X.name : /* @__PURE__ */ T(S, {
|
|
92
92
|
value: X.name,
|
|
93
93
|
placeholder: q ? "Facet name" : "Column name",
|
|
94
94
|
onChange: (e) => {
|
|
@@ -113,11 +113,11 @@ function R(R) {
|
|
|
113
113
|
} }
|
|
114
114
|
})
|
|
115
115
|
}),
|
|
116
|
-
/* @__PURE__ */
|
|
116
|
+
/* @__PURE__ */ T(v, {
|
|
117
117
|
sx: { my: H ? "auto" : void 0 },
|
|
118
|
-
children: H ?
|
|
118
|
+
children: H ? s(X.columnType) : /* @__PURE__ */ E(y, {
|
|
119
119
|
fullWidth: !0,
|
|
120
|
-
children: [/* @__PURE__ */
|
|
120
|
+
children: [/* @__PURE__ */ T(x, {
|
|
121
121
|
label: "Column Type",
|
|
122
122
|
value: X.columnType,
|
|
123
123
|
onChange: (e) => {
|
|
@@ -132,30 +132,30 @@ function R(R) {
|
|
|
132
132
|
sx: Q,
|
|
133
133
|
disabled: U,
|
|
134
134
|
error: !!$.columnType,
|
|
135
|
-
children:
|
|
135
|
+
children: oe.map((e) => /* @__PURE__ */ T(b, {
|
|
136
136
|
value: e,
|
|
137
|
-
children:
|
|
137
|
+
children: s(e)
|
|
138
138
|
}, e))
|
|
139
|
-
}), $.columnType && /* @__PURE__ */
|
|
139
|
+
}), $.columnType && /* @__PURE__ */ T(A, {
|
|
140
140
|
color: "error.main",
|
|
141
141
|
children: $.columnType
|
|
142
142
|
})]
|
|
143
143
|
})
|
|
144
144
|
}),
|
|
145
|
-
/* @__PURE__ */
|
|
145
|
+
/* @__PURE__ */ T(v, {
|
|
146
146
|
sx: { my: H ? "auto" : void 0 },
|
|
147
|
-
children: H ? X.maximumSize ?? "" : /* @__PURE__ */
|
|
147
|
+
children: H ? X.maximumSize ?? "" : /* @__PURE__ */ T(d, {
|
|
148
148
|
value: X.maximumSize ?? "",
|
|
149
149
|
originalValue: K?.maximumSize,
|
|
150
150
|
recommendedValue: G?.maximumSize,
|
|
151
151
|
columnType: X.columnType,
|
|
152
|
-
disabled: U || !
|
|
152
|
+
disabled: U || !i(X.columnType),
|
|
153
153
|
InputProps: {
|
|
154
154
|
disableInjectingGlobalStyles: L,
|
|
155
155
|
slotProps: { input: {
|
|
156
156
|
"aria-label": "Maximum Size",
|
|
157
157
|
min: 1,
|
|
158
|
-
max:
|
|
158
|
+
max: i(X.columnType) ? l(X.columnType) : void 0
|
|
159
159
|
} },
|
|
160
160
|
sx: Q
|
|
161
161
|
},
|
|
@@ -175,9 +175,9 @@ function R(R) {
|
|
|
175
175
|
helperText: $.maximumSize
|
|
176
176
|
})
|
|
177
177
|
}),
|
|
178
|
-
/* @__PURE__ */
|
|
178
|
+
/* @__PURE__ */ T(v, {
|
|
179
179
|
sx: { my: H ? "auto" : void 0 },
|
|
180
|
-
children: H ? X.maximumListLength ?? "" : /* @__PURE__ */
|
|
180
|
+
children: H ? X.maximumListLength ?? "" : /* @__PURE__ */ T(d, {
|
|
181
181
|
value: X.maximumListLength ?? "",
|
|
182
182
|
originalValue: K?.maximumListLength,
|
|
183
183
|
recommendedValue: G?.maximumListLength,
|
|
@@ -196,7 +196,11 @@ function R(R) {
|
|
|
196
196
|
},
|
|
197
197
|
InputProps: {
|
|
198
198
|
disableInjectingGlobalStyles: L,
|
|
199
|
-
slotProps: { input: {
|
|
199
|
+
slotProps: { input: {
|
|
200
|
+
"aria-label": "Maximum List Length",
|
|
201
|
+
min: 1,
|
|
202
|
+
max: n(X.columnType) ? c(X.columnType, te(X.maximumSize) ?? void 0) : void 0
|
|
203
|
+
} },
|
|
200
204
|
sx: Q
|
|
201
205
|
},
|
|
202
206
|
fullWidth: !0,
|
|
@@ -204,9 +208,9 @@ function R(R) {
|
|
|
204
208
|
helperText: $.maximumListLength
|
|
205
209
|
})
|
|
206
210
|
}),
|
|
207
|
-
/* @__PURE__ */
|
|
211
|
+
/* @__PURE__ */ T(v, {
|
|
208
212
|
sx: { my: H ? "auto" : void 0 },
|
|
209
|
-
children: H ? P(X?.defaultValue, X.columnType) : /* @__PURE__ */
|
|
213
|
+
children: H ? P(X?.defaultValue, X.columnType) : /* @__PURE__ */ T(ne, {
|
|
210
214
|
TextFieldProps: {
|
|
211
215
|
InputProps: {
|
|
212
216
|
disableInjectingGlobalStyles: L,
|
|
@@ -240,7 +244,7 @@ function R(R) {
|
|
|
240
244
|
disabled: U || !t(X.columnType, Y, q)
|
|
241
245
|
})
|
|
242
246
|
}),
|
|
243
|
-
/* @__PURE__ */
|
|
247
|
+
/* @__PURE__ */ T(v, { children: /* @__PURE__ */ T(u, {
|
|
244
248
|
value: X?.enumValues,
|
|
245
249
|
onChange: (e) => {
|
|
246
250
|
J({
|
|
@@ -249,14 +253,14 @@ function R(R) {
|
|
|
249
253
|
jsonSubColumnModelIndex: B,
|
|
250
254
|
value: {
|
|
251
255
|
...X,
|
|
252
|
-
enumValues: e == null ||
|
|
256
|
+
enumValues: e == null || g(e) ? void 0 : e
|
|
253
257
|
}
|
|
254
258
|
});
|
|
255
259
|
},
|
|
256
260
|
columnType: X.columnType,
|
|
257
261
|
TextFieldProps: {
|
|
258
262
|
fullWidth: !0,
|
|
259
|
-
disabled: U || !
|
|
263
|
+
disabled: U || !r(X.columnType, q),
|
|
260
264
|
InputProps: {
|
|
261
265
|
disableInjectingGlobalStyles: L,
|
|
262
266
|
readOnly: !0,
|
|
@@ -267,9 +271,9 @@ function R(R) {
|
|
|
267
271
|
helperText: $.enumValues
|
|
268
272
|
}
|
|
269
273
|
}) }),
|
|
270
|
-
/* @__PURE__ */
|
|
274
|
+
/* @__PURE__ */ T(v, { children: /* @__PURE__ */ E(y, {
|
|
271
275
|
fullWidth: !0,
|
|
272
|
-
children: [/* @__PURE__ */
|
|
276
|
+
children: [/* @__PURE__ */ T(x, {
|
|
273
277
|
label: "Facet Type",
|
|
274
278
|
value: X.facetType || "",
|
|
275
279
|
disabled: U || Z === null,
|
|
@@ -287,18 +291,18 @@ function R(R) {
|
|
|
287
291
|
sx: Q,
|
|
288
292
|
slotProps: { input: { "aria-label": "Facet Type" } },
|
|
289
293
|
error: !!$.facetType,
|
|
290
|
-
children: (Z ?? []).map((e, t) => /* @__PURE__ */
|
|
294
|
+
children: (Z ?? []).map((e, t) => /* @__PURE__ */ T(b, {
|
|
291
295
|
value: e,
|
|
292
|
-
children: e === void 0 ? "" :
|
|
296
|
+
children: e === void 0 ? "" : ee(e)
|
|
293
297
|
}, t))
|
|
294
|
-
}), $.facetType && /* @__PURE__ */
|
|
298
|
+
}), $.facetType && /* @__PURE__ */ T(A, {
|
|
295
299
|
color: "error.main",
|
|
296
300
|
children: $.facetType
|
|
297
301
|
})]
|
|
298
302
|
}) }),
|
|
299
|
-
/* @__PURE__ */
|
|
303
|
+
/* @__PURE__ */ T(v, { children: /* @__PURE__ */ E(y, {
|
|
300
304
|
fullWidth: !0,
|
|
301
|
-
children: [/* @__PURE__ */
|
|
305
|
+
children: [/* @__PURE__ */ E(x, {
|
|
302
306
|
label: "Sort Facet Values",
|
|
303
307
|
value: F("facetSortConfig" in X ? X.facetSortConfig : void 0),
|
|
304
308
|
disabled: U || X.facetType !== "enumeration",
|
|
@@ -317,44 +321,44 @@ function R(R) {
|
|
|
317
321
|
slotProps: { input: { "aria-label": "Sort Facet Values" } },
|
|
318
322
|
error: !!$.facetSortConfig,
|
|
319
323
|
children: [
|
|
320
|
-
/* @__PURE__ */
|
|
324
|
+
/* @__PURE__ */ T(b, {
|
|
321
325
|
value: "FREQUENCY_DESC",
|
|
322
326
|
children: "Frequency Descending"
|
|
323
327
|
}),
|
|
324
|
-
/* @__PURE__ */
|
|
328
|
+
/* @__PURE__ */ T(b, {
|
|
325
329
|
value: "FREQUENCY_ASC",
|
|
326
330
|
children: "Frequency Ascending"
|
|
327
331
|
}),
|
|
328
|
-
/* @__PURE__ */
|
|
332
|
+
/* @__PURE__ */ T(b, {
|
|
329
333
|
value: "VALUE_DESC",
|
|
330
334
|
children: "Value Descending"
|
|
331
335
|
}),
|
|
332
|
-
/* @__PURE__ */
|
|
336
|
+
/* @__PURE__ */ T(b, {
|
|
333
337
|
value: "VALUE_ASC",
|
|
334
338
|
children: "Value Ascending"
|
|
335
339
|
})
|
|
336
340
|
]
|
|
337
|
-
}), $.facetSortConfig && /* @__PURE__ */
|
|
341
|
+
}), $.facetSortConfig && /* @__PURE__ */ T(A, {
|
|
338
342
|
color: "error.main",
|
|
339
343
|
children: $.facetSortConfig
|
|
340
344
|
})]
|
|
341
345
|
}) })
|
|
342
346
|
]
|
|
343
|
-
}), q && /* @__PURE__ */
|
|
347
|
+
}), q && /* @__PURE__ */ E(v, {
|
|
344
348
|
sx: {
|
|
345
349
|
display: "grid",
|
|
346
350
|
gridColumn: "1 / span 11",
|
|
347
351
|
gridTemplateColumns: "subgrid"
|
|
348
352
|
},
|
|
349
353
|
children: [
|
|
350
|
-
/* @__PURE__ */
|
|
354
|
+
/* @__PURE__ */ T(v, {
|
|
351
355
|
sx: { gridColumn: "1 / span 1" },
|
|
352
|
-
children:
|
|
356
|
+
children: p
|
|
353
357
|
}),
|
|
354
|
-
/* @__PURE__ */
|
|
355
|
-
/* @__PURE__ */
|
|
358
|
+
/* @__PURE__ */ T(v, {}),
|
|
359
|
+
/* @__PURE__ */ T(v, {
|
|
356
360
|
sx: { gridColumn: "3 / span 7" },
|
|
357
|
-
children: /* @__PURE__ */
|
|
361
|
+
children: /* @__PURE__ */ T(S, {
|
|
358
362
|
placeholder: "JSON Path",
|
|
359
363
|
value: X.jsonPath,
|
|
360
364
|
onChange: (e) => {
|
|
@@ -373,12 +377,12 @@ function R(R) {
|
|
|
373
377
|
slotProps: { input: {
|
|
374
378
|
disableInjectingGlobalStyles: L,
|
|
375
379
|
sx: Q,
|
|
376
|
-
endAdornment: /* @__PURE__ */
|
|
377
|
-
title: /* @__PURE__ */
|
|
380
|
+
endAdornment: /* @__PURE__ */ T(C, {
|
|
381
|
+
title: /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ T("p", { children: /* @__PURE__ */ T(ie, {
|
|
378
382
|
href: "https://dev.mysql.com/doc/refman/8.0/en/json.html#json-path-syntax",
|
|
379
383
|
children: "Please use a valid JSON Path selector, following this format."
|
|
380
|
-
}) }), /* @__PURE__ */
|
|
381
|
-
children: /* @__PURE__ */
|
|
384
|
+
}) }), /* @__PURE__ */ T("p", { children: "This field is for linking the sub-column facet to the corresponding location in the JSON data, so that it can be used as facet filter. The correct selector will point to the key referenced in the sub-column JSON Path." })] }),
|
|
385
|
+
children: /* @__PURE__ */ T(O, { sx: { color: "grey.700" } })
|
|
382
386
|
}),
|
|
383
387
|
slotProps: { input: { "aria-label": "JSON Path" } }
|
|
384
388
|
} },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnModelForm.js","names":[],"sources":["../../../src/components/TableColumnSchemaEditor/ColumnModelForm.tsx"],"sourcesContent":["import { convertToConcreteEntityType } from '@/utils/functions/EntityTypeUtils'\nimport { InfoTwoTone } from '@mui/icons-material'\nimport {\n Box,\n Checkbox,\n FormControl,\n Link,\n MenuItem,\n Select,\n SxProps,\n TextField,\n Tooltip,\n} from '@mui/material'\nimport FormHelperText from '@mui/material/FormHelperText'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport {\n ColumnModel,\n ColumnTypeEnum,\n FacetType,\n VIEW_CONCRETE_TYPE_VALUES,\n FacetColumnSortConfig,\n} from '@sage-bionetworks/synapse-types'\nimport { useAtomValue, useSetAtom } from 'jotai'\nimport { selectAtom } from 'jotai/utils'\nimport { isArray, isEmpty, isEqual } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { ZodIssue } from 'zod'\nimport DefaultValueField from './ColumnModelFormFields/DefaultValueField'\nimport { FieldWithRecommendedMinimum } from './ColumnModelFormFields/FieldWithRecommendedMinimum'\nimport MultiValueField from './ColumnModelFormFields/MultiValueField'\nimport {\n canHaveDefault,\n canHaveMaxListLength,\n canHaveRestrictedValues,\n canHaveSize,\n configureFacetsForType,\n getAllowedColumnTypes,\n getColumnTypeFriendlyName,\n getFacetTypeFriendlyName,\n getMaxSizeForType,\n} from './TableColumnSchemaEditorUtils'\nimport { HIERARCHY_VERTICAL_LINE_COMPONENT } from './TableColumnSchemaForm'\nimport { tableColumnSchemaFormDataAtom } from './TableColumnSchemaFormReducer'\nimport {\n ColumnModelFormData,\n JsonSubColumnModelFormData,\n} from './Validators/ColumnModelValidator'\n\ntype ColumnModelFormProps = {\n entityType: EntityType\n columnModelIndex: number\n jsonSubColumnIndex?: number\n /* Default Columns are read-only, except for the facetType */\n isDefaultColumn: boolean\n disabled?: boolean\n /* Can be used to override the schema used for validating ColumnModels */\n validationErrors?: ZodIssue[] | null\n defaultAnnotationModel?: ColumnModel | null\n originalColumnModel?: ColumnModel | null\n}\nconst jsonSubColumnFieldSx: SxProps = {\n height: '28px',\n fontSize: '12px',\n}\nconst topLevelColumnModelFieldSx: SxProps = {\n height: '38px',\n fontSize: '14px',\n}\n\nfunction renderDefaultValue(\n defaultValue: string | unknown[] | undefined,\n _columnType: ColumnTypeEnum,\n): string {\n if (defaultValue == null) {\n return ''\n }\n\n if (isArray(defaultValue)) {\n return defaultValue.map(String).join(', ')\n }\n return defaultValue\n}\n\n// Helper type for the combined sort configuration value\ntype FacetSortValue =\n | 'FREQUENCY_DESC'\n | 'FREQUENCY_ASC'\n | 'VALUE_DESC'\n | 'VALUE_ASC'\n | ''\n\n/**\n * Converts a FacetColumnSortConfig object to a single string value for the select dropdown\n */\nfunction facetSortConfigToValue(\n config: FacetColumnSortConfig | undefined,\n): FacetSortValue {\n if (!config || (!config.property && !config.direction)) {\n return ''\n }\n const property = config.property || 'FREQUENCY'\n const direction = config.direction || 'DESC'\n return `${property}_${direction}` as FacetSortValue\n}\n\n/**\n * Converts a select dropdown value to a FacetColumnSortConfig object\n */\nfunction valueToFacetSortConfig(\n value: FacetSortValue,\n): FacetColumnSortConfig | undefined {\n if (!value) {\n return undefined\n }\n const [property, direction] = value.split('_') as [\n 'FREQUENCY' | 'VALUE',\n 'DESC' | 'ASC',\n ]\n return { property, direction }\n}\n\n/*\n * Disable immediate MUI/Emotion style injection because it causes performance issues when adding many columns at once.\n * This can be a common occurence when adding annotation columns\n */\nconst DISABLE_INJECTING_GLOBAL_STYLES_VALUE = true\n\nexport default function ColumnModelForm(props: ColumnModelFormProps) {\n const {\n columnModelIndex,\n jsonSubColumnIndex,\n entityType,\n isDefaultColumn,\n disabled = false,\n validationErrors = null,\n defaultAnnotationModel,\n originalColumnModel,\n } = props\n const isJsonSubColumn = jsonSubColumnIndex != undefined\n const dispatch = useSetAtom(tableColumnSchemaFormDataAtom)\n const isView = (VIEW_CONCRETE_TYPE_VALUES as readonly string[]).includes(\n convertToConcreteEntityType(entityType),\n )\n\n const columnModelAtom = useMemo(\n () =>\n selectAtom(\n tableColumnSchemaFormDataAtom,\n v =>\n isJsonSubColumn\n ? v[columnModelIndex].jsonSubColumns![jsonSubColumnIndex]\n : v[columnModelIndex],\n isEqual,\n ),\n [columnModelIndex, isJsonSubColumn, jsonSubColumnIndex],\n )\n\n const columnModel = useAtomValue(columnModelAtom)\n\n const allowedColumnTypes = useMemo(\n () => getAllowedColumnTypes(isView, isJsonSubColumn),\n [isView, isJsonSubColumn],\n )\n\n const allowedFacetTypes = useMemo(\n () => configureFacetsForType(columnModel.columnType, isJsonSubColumn),\n [columnModel.columnType, isJsonSubColumn],\n )\n const fieldSx: SxProps = useMemo(\n () => (isJsonSubColumn ? jsonSubColumnFieldSx : topLevelColumnModelFieldSx),\n [isJsonSubColumn],\n )\n\n const errorsByField = useMemo(() => {\n if (validationErrors && isArray(validationErrors)) {\n const errorsByField: Record<string, string> = {}\n validationErrors.forEach(e => {\n if (e.path) {\n errorsByField[e.path[e.path.length - 1]] = e.message\n }\n })\n return errorsByField\n }\n return {}\n }, [validationErrors])\n\n return (\n <>\n <Box\n sx={{\n display: 'grid',\n gridColumn: '1 / span 11',\n gridTemplateColumns: 'subgrid',\n }}\n >\n {isJsonSubColumn && (\n <Box sx={{ gridColumn: '1 / span 1' }}>\n {HIERARCHY_VERTICAL_LINE_COMPONENT}\n </Box>\n )}\n <Box\n data-testid={`ColumnModelForm`}\n sx={{\n display: 'flex',\n alignItems: 'start',\n gridColumn: isJsonSubColumn ? '2 / span 1' : ' 1 / span 1',\n // Checkbox is offset from top; vertical centering causes issues when validation errors are displayed\n mt: isJsonSubColumn ? '0px' : '5px',\n }}\n >\n <Checkbox\n checked={columnModel.isSelected}\n inputProps={{ 'aria-label': 'Select' }}\n disabled={disabled}\n onChange={() => {\n dispatch({\n type: 'toggleSelect',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n })\n }}\n />\n </Box>\n <Box\n sx={{\n my: isDefaultColumn ? 'auto' : undefined,\n gridColumn: isJsonSubColumn\n ? /* If this is a JSON Subcolumn, we reduce the width of this grid column to create space to render the visual hierarchical line */\n '3 / span 1'\n : /* Otherwise, span across both grid columns */\n '2 / span 2',\n }}\n >\n {isDefaultColumn ? (\n columnModel.name\n ) : (\n <TextField\n value={columnModel.name}\n placeholder={isJsonSubColumn ? 'Facet name' : 'Column name'}\n onChange={e => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n name: e.target.value,\n },\n })\n }}\n disabled={disabled}\n fullWidth\n error={!!errorsByField['name']}\n helperText={errorsByField['name']}\n slotProps={{\n input: {\n disableInjectingGlobalStyles:\n DISABLE_INJECTING_GLOBAL_STYLES_VALUE,\n sx: fieldSx,\n slotProps: {\n input: {\n 'aria-label': 'Name',\n },\n },\n },\n }}\n />\n )}\n </Box>\n <Box\n sx={{\n my: isDefaultColumn ? 'auto' : undefined,\n }}\n >\n {isDefaultColumn ? (\n getColumnTypeFriendlyName(columnModel.columnType)\n ) : (\n <FormControl fullWidth>\n <Select\n label=\"Column Type\"\n value={columnModel.columnType}\n onChange={e => {\n dispatch({\n type: 'changeColumnModelType',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n newColumnType: e.target.value as ColumnTypeEnum,\n })\n }}\n slotProps={{\n input: {\n 'aria-label': 'Column Type',\n },\n }}\n sx={fieldSx}\n disabled={disabled}\n error={!!errorsByField['columnType']}\n >\n {allowedColumnTypes.map(value => {\n return (\n <MenuItem value={value} key={value}>\n {getColumnTypeFriendlyName(value)}\n </MenuItem>\n )\n })}\n </Select>\n {errorsByField['columnType'] && (\n <FormHelperText color={'error.main'}>\n {errorsByField['columnType']}\n </FormHelperText>\n )}\n </FormControl>\n )}\n </Box>\n <Box\n sx={{\n my: isDefaultColumn ? 'auto' : undefined,\n }}\n >\n {isDefaultColumn ? (\n ((columnModel as ColumnModelFormData).maximumSize ?? '')\n ) : (\n <FieldWithRecommendedMinimum\n value={(columnModel as ColumnModelFormData).maximumSize ?? ''}\n originalValue={originalColumnModel?.maximumSize}\n recommendedValue={defaultAnnotationModel?.maximumSize}\n columnType={columnModel.columnType as ColumnTypeEnum}\n disabled={disabled || !canHaveSize(columnModel.columnType)}\n InputProps={{\n disableInjectingGlobalStyles:\n DISABLE_INJECTING_GLOBAL_STYLES_VALUE,\n\n slotProps: {\n input: {\n 'aria-label': 'Maximum Size',\n min: 1,\n max: canHaveSize(columnModel.columnType)\n ? getMaxSizeForType(columnModel.columnType)\n : undefined,\n },\n },\n sx: fieldSx,\n }}\n onChange={e => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n maximumSize: e.target.value,\n },\n })\n }}\n fullWidth\n error={!!errorsByField['maximumSize']}\n helperText={errorsByField['maximumSize']}\n />\n )}\n </Box>\n <Box\n sx={{\n my: isDefaultColumn ? 'auto' : undefined,\n }}\n >\n {isDefaultColumn ? (\n ((columnModel as ColumnModelFormData).maximumListLength ?? '')\n ) : (\n <FieldWithRecommendedMinimum\n value={\n (columnModel as ColumnModelFormData).maximumListLength ?? ''\n }\n originalValue={originalColumnModel?.maximumListLength}\n recommendedValue={defaultAnnotationModel?.maximumListLength}\n columnType={columnModel.columnType as ColumnTypeEnum}\n disabled={\n disabled || !canHaveMaxListLength(columnModel.columnType)\n }\n onChange={e => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n maximumListLength: e.target.value,\n },\n })\n }}\n InputProps={{\n disableInjectingGlobalStyles:\n DISABLE_INJECTING_GLOBAL_STYLES_VALUE,\n slotProps: {\n input: {\n 'aria-label': 'Maximum List Length',\n },\n },\n sx: fieldSx,\n }}\n fullWidth\n error={!!errorsByField['maximumListLength']}\n helperText={errorsByField['maximumListLength']}\n />\n )}\n </Box>\n <Box\n sx={{\n my: isDefaultColumn ? 'auto' : undefined,\n }}\n >\n {isDefaultColumn ? (\n renderDefaultValue(\n (columnModel as ColumnModelFormData)?.defaultValue,\n columnModel.columnType as ColumnTypeEnum,\n )\n ) : (\n <DefaultValueField\n TextFieldProps={{\n InputProps: {\n disableInjectingGlobalStyles:\n DISABLE_INJECTING_GLOBAL_STYLES_VALUE,\n slotProps: {\n input: {\n 'aria-label': 'Default Value',\n },\n },\n sx: fieldSx,\n },\n fullWidth: true,\n error: !!errorsByField['defaultValue'],\n helperText: errorsByField['defaultValue'],\n }}\n SelectProps={{\n label: 'Default Value',\n sx: fieldSx,\n slotProps: {\n input: {\n 'aria-label': 'Default Value',\n },\n },\n error: !!errorsByField['defaultValue'],\n }}\n selectFormHelperText={errorsByField['defaultValue']}\n columnModel={columnModel as ColumnModelFormData}\n value={(columnModel as ColumnModelFormData)?.defaultValue || null}\n onChange={value => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n defaultValue: value || undefined,\n },\n })\n }}\n disabled={\n disabled ||\n !canHaveDefault(columnModel.columnType, isView, isJsonSubColumn)\n }\n />\n )}\n </Box>\n <Box>\n <MultiValueField\n value={(columnModel as ColumnModelFormData)?.enumValues}\n onChange={newValue => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n enumValues:\n newValue == null || isEmpty(newValue)\n ? undefined\n : newValue,\n },\n })\n }}\n columnType={columnModel.columnType as ColumnTypeEnum}\n TextFieldProps={{\n fullWidth: true,\n disabled:\n disabled ||\n !canHaveRestrictedValues(\n columnModel.columnType,\n isJsonSubColumn,\n ),\n InputProps: {\n disableInjectingGlobalStyles:\n DISABLE_INJECTING_GLOBAL_STYLES_VALUE,\n // Is readOnly because edits are made with the JSONArrayEditorModal\n readOnly: true,\n sx: fieldSx,\n slotProps: {\n input: {\n 'aria-label': 'Restrict Values',\n },\n },\n },\n error: !!errorsByField['enumValues'],\n helperText: errorsByField['enumValues'],\n }}\n />\n </Box>\n <Box>\n <FormControl fullWidth>\n <Select\n label=\"Facet Type\"\n value={columnModel.facetType || ''}\n disabled={disabled || allowedFacetTypes === null}\n onChange={e => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n facetType: e.target.value as FacetType,\n },\n })\n }}\n sx={fieldSx}\n slotProps={{\n input: {\n 'aria-label': 'Facet Type',\n },\n }}\n error={!!errorsByField['facetType']}\n >\n {(allowedFacetTypes ?? []).map((value, index) => {\n return (\n <MenuItem value={value} key={index}>\n {value === undefined ? '' : getFacetTypeFriendlyName(value)}\n </MenuItem>\n )\n })}\n </Select>\n {errorsByField['facetType'] && (\n <FormHelperText color={'error.main'}>\n {errorsByField['facetType']}\n </FormHelperText>\n )}\n </FormControl>\n </Box>\n <Box>\n <FormControl fullWidth>\n <Select\n label=\"Sort Facet Values\"\n value={facetSortConfigToValue(\n 'facetSortConfig' in columnModel\n ? columnModel.facetSortConfig\n : undefined,\n )}\n disabled={disabled || columnModel.facetType !== 'enumeration'}\n onChange={e => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n facetSortConfig: valueToFacetSortConfig(\n e.target.value as FacetSortValue,\n ),\n },\n })\n }}\n sx={fieldSx}\n slotProps={{\n input: {\n 'aria-label': 'Sort Facet Values',\n },\n }}\n error={!!errorsByField['facetSortConfig']}\n >\n <MenuItem value=\"FREQUENCY_DESC\">Frequency Descending</MenuItem>\n <MenuItem value=\"FREQUENCY_ASC\">Frequency Ascending</MenuItem>\n <MenuItem value=\"VALUE_DESC\">Value Descending</MenuItem>\n <MenuItem value=\"VALUE_ASC\">Value Ascending</MenuItem>\n </Select>\n {errorsByField['facetSortConfig'] && (\n <FormHelperText color={'error.main'}>\n {errorsByField['facetSortConfig']}\n </FormHelperText>\n )}\n </FormControl>\n </Box>\n </Box>\n {isJsonSubColumn && (\n <Box\n sx={{\n display: 'grid',\n gridColumn: '1 / span 11',\n gridTemplateColumns: 'subgrid',\n }}\n >\n <Box\n sx={{\n gridColumn: '1 / span 1',\n }}\n >\n {HIERARCHY_VERTICAL_LINE_COMPONENT}\n </Box>\n <Box></Box>\n <Box\n sx={{\n gridColumn: '3 / span 7',\n }}\n >\n <TextField\n placeholder={'JSON Path'}\n value={(columnModel as JsonSubColumnModelFormData).jsonPath}\n onChange={e => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...(columnModel as JsonSubColumnModelFormData),\n jsonPath: e.target.value,\n },\n })\n }}\n disabled={disabled}\n fullWidth\n slotProps={{\n input: {\n disableInjectingGlobalStyles:\n DISABLE_INJECTING_GLOBAL_STYLES_VALUE,\n sx: fieldSx,\n endAdornment: (\n <Tooltip\n title={\n <>\n <p>\n <Link\n href={\n 'https://dev.mysql.com/doc/refman/8.0/en/json.html#json-path-syntax'\n }\n >\n Please use a valid JSON Path selector, following\n this format.\n </Link>\n </p>\n <p>\n This field is for linking the sub-column facet to\n the corresponding location in the JSON data, so that\n it can be used as facet filter. The correct selector\n will point to the key referenced in the sub-column\n JSON Path.\n </p>\n </>\n }\n >\n <InfoTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n ),\n slotProps: {\n input: { 'aria-label': 'JSON Path' },\n },\n },\n }}\n error={!!errorsByField['jsonPath']}\n helperText={errorsByField['jsonPath']}\n />\n </Box>\n </Box>\n )}\n </>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ColumnModelForm.js","names":[],"sources":["../../../src/components/TableColumnSchemaEditor/ColumnModelForm.tsx"],"sourcesContent":["import { convertToConcreteEntityType } from '@/utils/functions/EntityTypeUtils'\nimport { InfoTwoTone } from '@mui/icons-material'\nimport {\n Box,\n Checkbox,\n FormControl,\n Link,\n MenuItem,\n Select,\n SxProps,\n TextField,\n Tooltip,\n} from '@mui/material'\nimport FormHelperText from '@mui/material/FormHelperText'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport {\n ColumnModel,\n ColumnTypeEnum,\n FacetType,\n VIEW_CONCRETE_TYPE_VALUES,\n FacetColumnSortConfig,\n} from '@sage-bionetworks/synapse-types'\nimport { useAtomValue, useSetAtom } from 'jotai'\nimport { selectAtom } from 'jotai/utils'\nimport { isArray, isEmpty, isEqual } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { ZodIssue } from 'zod'\nimport DefaultValueField from './ColumnModelFormFields/DefaultValueField'\nimport { FieldWithRecommendedMinimum } from './ColumnModelFormFields/FieldWithRecommendedMinimum'\nimport MultiValueField from './ColumnModelFormFields/MultiValueField'\nimport {\n canHaveDefault,\n canHaveMaxListLength,\n canHaveRestrictedValues,\n canHaveSize,\n configureFacetsForType,\n getAllowedColumnTypes,\n getColumnTypeFriendlyName,\n getFacetTypeFriendlyName,\n getFormDataValueAsNumber,\n getMaxListLengthForType,\n getMaxSizeForType,\n} from './TableColumnSchemaEditorUtils'\nimport { HIERARCHY_VERTICAL_LINE_COMPONENT } from './TableColumnSchemaForm'\nimport { tableColumnSchemaFormDataAtom } from './TableColumnSchemaFormReducer'\nimport {\n ColumnModelFormData,\n JsonSubColumnModelFormData,\n} from './Validators/ColumnModelValidator'\n\ntype ColumnModelFormProps = {\n entityType: EntityType\n columnModelIndex: number\n jsonSubColumnIndex?: number\n /* Default Columns are read-only, except for the facetType */\n isDefaultColumn: boolean\n disabled?: boolean\n /* Can be used to override the schema used for validating ColumnModels */\n validationErrors?: ZodIssue[] | null\n defaultAnnotationModel?: ColumnModel | null\n originalColumnModel?: ColumnModel | null\n}\nconst jsonSubColumnFieldSx: SxProps = {\n height: '28px',\n fontSize: '12px',\n}\nconst topLevelColumnModelFieldSx: SxProps = {\n height: '38px',\n fontSize: '14px',\n}\n\nfunction renderDefaultValue(\n defaultValue: string | unknown[] | undefined,\n _columnType: ColumnTypeEnum,\n): string {\n if (defaultValue == null) {\n return ''\n }\n\n if (isArray(defaultValue)) {\n return defaultValue.map(String).join(', ')\n }\n return defaultValue\n}\n\n// Helper type for the combined sort configuration value\ntype FacetSortValue =\n | 'FREQUENCY_DESC'\n | 'FREQUENCY_ASC'\n | 'VALUE_DESC'\n | 'VALUE_ASC'\n | ''\n\n/**\n * Converts a FacetColumnSortConfig object to a single string value for the select dropdown\n */\nfunction facetSortConfigToValue(\n config: FacetColumnSortConfig | undefined,\n): FacetSortValue {\n if (!config || (!config.property && !config.direction)) {\n return ''\n }\n const property = config.property || 'FREQUENCY'\n const direction = config.direction || 'DESC'\n return `${property}_${direction}` as FacetSortValue\n}\n\n/**\n * Converts a select dropdown value to a FacetColumnSortConfig object\n */\nfunction valueToFacetSortConfig(\n value: FacetSortValue,\n): FacetColumnSortConfig | undefined {\n if (!value) {\n return undefined\n }\n const [property, direction] = value.split('_') as [\n 'FREQUENCY' | 'VALUE',\n 'DESC' | 'ASC',\n ]\n return { property, direction }\n}\n\n/*\n * Disable immediate MUI/Emotion style injection because it causes performance issues when adding many columns at once.\n * This can be a common occurence when adding annotation columns\n */\nconst DISABLE_INJECTING_GLOBAL_STYLES_VALUE = true\n\nexport default function ColumnModelForm(props: ColumnModelFormProps) {\n const {\n columnModelIndex,\n jsonSubColumnIndex,\n entityType,\n isDefaultColumn,\n disabled = false,\n validationErrors = null,\n defaultAnnotationModel,\n originalColumnModel,\n } = props\n const isJsonSubColumn = jsonSubColumnIndex != undefined\n const dispatch = useSetAtom(tableColumnSchemaFormDataAtom)\n const isView = (VIEW_CONCRETE_TYPE_VALUES as readonly string[]).includes(\n convertToConcreteEntityType(entityType),\n )\n\n const columnModelAtom = useMemo(\n () =>\n selectAtom(\n tableColumnSchemaFormDataAtom,\n v =>\n isJsonSubColumn\n ? v[columnModelIndex].jsonSubColumns![jsonSubColumnIndex]\n : v[columnModelIndex],\n isEqual,\n ),\n [columnModelIndex, isJsonSubColumn, jsonSubColumnIndex],\n )\n\n const columnModel = useAtomValue(columnModelAtom)\n\n const allowedColumnTypes = useMemo(\n () => getAllowedColumnTypes(isView, isJsonSubColumn),\n [isView, isJsonSubColumn],\n )\n\n const allowedFacetTypes = useMemo(\n () => configureFacetsForType(columnModel.columnType, isJsonSubColumn),\n [columnModel.columnType, isJsonSubColumn],\n )\n const fieldSx: SxProps = useMemo(\n () => (isJsonSubColumn ? jsonSubColumnFieldSx : topLevelColumnModelFieldSx),\n [isJsonSubColumn],\n )\n\n const errorsByField = useMemo(() => {\n if (validationErrors && isArray(validationErrors)) {\n const errorsByField: Record<string, string> = {}\n validationErrors.forEach(e => {\n if (e.path) {\n errorsByField[String(e.path[e.path.length - 1])] = e.message\n }\n })\n return errorsByField\n }\n return {}\n }, [validationErrors])\n\n return (\n <>\n <Box\n sx={{\n display: 'grid',\n gridColumn: '1 / span 11',\n gridTemplateColumns: 'subgrid',\n }}\n >\n {isJsonSubColumn && (\n <Box sx={{ gridColumn: '1 / span 1' }}>\n {HIERARCHY_VERTICAL_LINE_COMPONENT}\n </Box>\n )}\n <Box\n data-testid={`ColumnModelForm`}\n sx={{\n display: 'flex',\n alignItems: 'start',\n gridColumn: isJsonSubColumn ? '2 / span 1' : ' 1 / span 1',\n // Checkbox is offset from top; vertical centering causes issues when validation errors are displayed\n mt: isJsonSubColumn ? '0px' : '5px',\n }}\n >\n <Checkbox\n checked={columnModel.isSelected}\n inputProps={{ 'aria-label': 'Select' }}\n disabled={disabled}\n onChange={() => {\n dispatch({\n type: 'toggleSelect',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n })\n }}\n />\n </Box>\n <Box\n sx={{\n my: isDefaultColumn ? 'auto' : undefined,\n gridColumn: isJsonSubColumn\n ? /* If this is a JSON Subcolumn, we reduce the width of this grid column to create space to render the visual hierarchical line */\n '3 / span 1'\n : /* Otherwise, span across both grid columns */\n '2 / span 2',\n }}\n >\n {isDefaultColumn ? (\n columnModel.name\n ) : (\n <TextField\n value={columnModel.name}\n placeholder={isJsonSubColumn ? 'Facet name' : 'Column name'}\n onChange={e => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n name: e.target.value,\n },\n })\n }}\n disabled={disabled}\n fullWidth\n error={!!errorsByField['name']}\n helperText={errorsByField['name']}\n slotProps={{\n input: {\n disableInjectingGlobalStyles:\n DISABLE_INJECTING_GLOBAL_STYLES_VALUE,\n sx: fieldSx,\n slotProps: {\n input: {\n 'aria-label': 'Name',\n },\n },\n },\n }}\n />\n )}\n </Box>\n <Box\n sx={{\n my: isDefaultColumn ? 'auto' : undefined,\n }}\n >\n {isDefaultColumn ? (\n getColumnTypeFriendlyName(columnModel.columnType)\n ) : (\n <FormControl fullWidth>\n <Select\n label=\"Column Type\"\n value={columnModel.columnType}\n onChange={e => {\n dispatch({\n type: 'changeColumnModelType',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n newColumnType: e.target.value as ColumnTypeEnum,\n })\n }}\n slotProps={{\n input: {\n 'aria-label': 'Column Type',\n },\n }}\n sx={fieldSx}\n disabled={disabled}\n error={!!errorsByField['columnType']}\n >\n {allowedColumnTypes.map(value => {\n return (\n <MenuItem value={value} key={value}>\n {getColumnTypeFriendlyName(value)}\n </MenuItem>\n )\n })}\n </Select>\n {errorsByField['columnType'] && (\n <FormHelperText color={'error.main'}>\n {errorsByField['columnType']}\n </FormHelperText>\n )}\n </FormControl>\n )}\n </Box>\n <Box\n sx={{\n my: isDefaultColumn ? 'auto' : undefined,\n }}\n >\n {isDefaultColumn ? (\n ((columnModel as ColumnModelFormData).maximumSize ?? '')\n ) : (\n <FieldWithRecommendedMinimum\n value={(columnModel as ColumnModelFormData).maximumSize ?? ''}\n originalValue={originalColumnModel?.maximumSize}\n recommendedValue={defaultAnnotationModel?.maximumSize}\n columnType={columnModel.columnType as ColumnTypeEnum}\n disabled={disabled || !canHaveSize(columnModel.columnType)}\n InputProps={{\n disableInjectingGlobalStyles:\n DISABLE_INJECTING_GLOBAL_STYLES_VALUE,\n\n slotProps: {\n input: {\n 'aria-label': 'Maximum Size',\n min: 1,\n max: canHaveSize(columnModel.columnType)\n ? getMaxSizeForType(columnModel.columnType)\n : undefined,\n },\n },\n sx: fieldSx,\n }}\n onChange={e => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n maximumSize: e.target.value,\n },\n })\n }}\n fullWidth\n error={!!errorsByField['maximumSize']}\n helperText={errorsByField['maximumSize']}\n />\n )}\n </Box>\n <Box\n sx={{\n my: isDefaultColumn ? 'auto' : undefined,\n }}\n >\n {isDefaultColumn ? (\n ((columnModel as ColumnModelFormData).maximumListLength ?? '')\n ) : (\n <FieldWithRecommendedMinimum\n value={\n (columnModel as ColumnModelFormData).maximumListLength ?? ''\n }\n originalValue={originalColumnModel?.maximumListLength}\n recommendedValue={defaultAnnotationModel?.maximumListLength}\n columnType={columnModel.columnType as ColumnTypeEnum}\n disabled={\n disabled || !canHaveMaxListLength(columnModel.columnType)\n }\n onChange={e => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n maximumListLength: e.target.value,\n },\n })\n }}\n InputProps={{\n disableInjectingGlobalStyles:\n DISABLE_INJECTING_GLOBAL_STYLES_VALUE,\n slotProps: {\n input: {\n 'aria-label': 'Maximum List Length',\n min: 1,\n max: canHaveMaxListLength(columnModel.columnType)\n ? getMaxListLengthForType(\n columnModel.columnType,\n getFormDataValueAsNumber(\n (columnModel as ColumnModelFormData).maximumSize,\n ) ?? undefined,\n )\n : undefined,\n },\n },\n sx: fieldSx,\n }}\n fullWidth\n error={!!errorsByField['maximumListLength']}\n helperText={errorsByField['maximumListLength']}\n />\n )}\n </Box>\n <Box\n sx={{\n my: isDefaultColumn ? 'auto' : undefined,\n }}\n >\n {isDefaultColumn ? (\n renderDefaultValue(\n (columnModel as ColumnModelFormData)?.defaultValue,\n columnModel.columnType as ColumnTypeEnum,\n )\n ) : (\n <DefaultValueField\n TextFieldProps={{\n InputProps: {\n disableInjectingGlobalStyles:\n DISABLE_INJECTING_GLOBAL_STYLES_VALUE,\n slotProps: {\n input: {\n 'aria-label': 'Default Value',\n },\n },\n sx: fieldSx,\n },\n fullWidth: true,\n error: !!errorsByField['defaultValue'],\n helperText: errorsByField['defaultValue'],\n }}\n SelectProps={{\n label: 'Default Value',\n sx: fieldSx,\n slotProps: {\n input: {\n 'aria-label': 'Default Value',\n },\n },\n error: !!errorsByField['defaultValue'],\n }}\n selectFormHelperText={errorsByField['defaultValue']}\n columnModel={columnModel as ColumnModelFormData}\n value={(columnModel as ColumnModelFormData)?.defaultValue || null}\n onChange={value => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n defaultValue: value || undefined,\n },\n })\n }}\n disabled={\n disabled ||\n !canHaveDefault(columnModel.columnType, isView, isJsonSubColumn)\n }\n />\n )}\n </Box>\n <Box>\n <MultiValueField\n value={(columnModel as ColumnModelFormData)?.enumValues}\n onChange={newValue => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n enumValues:\n newValue == null || isEmpty(newValue)\n ? undefined\n : newValue,\n },\n })\n }}\n columnType={columnModel.columnType as ColumnTypeEnum}\n TextFieldProps={{\n fullWidth: true,\n disabled:\n disabled ||\n !canHaveRestrictedValues(\n columnModel.columnType,\n isJsonSubColumn,\n ),\n InputProps: {\n disableInjectingGlobalStyles:\n DISABLE_INJECTING_GLOBAL_STYLES_VALUE,\n // Is readOnly because edits are made with the JSONArrayEditorModal\n readOnly: true,\n sx: fieldSx,\n slotProps: {\n input: {\n 'aria-label': 'Restrict Values',\n },\n },\n },\n error: !!errorsByField['enumValues'],\n helperText: errorsByField['enumValues'],\n }}\n />\n </Box>\n <Box>\n <FormControl fullWidth>\n <Select\n label=\"Facet Type\"\n value={columnModel.facetType || ''}\n disabled={disabled || allowedFacetTypes === null}\n onChange={e => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n facetType: e.target.value as FacetType,\n },\n })\n }}\n sx={fieldSx}\n slotProps={{\n input: {\n 'aria-label': 'Facet Type',\n },\n }}\n error={!!errorsByField['facetType']}\n >\n {(allowedFacetTypes ?? []).map((value, index) => {\n return (\n <MenuItem value={value} key={index}>\n {value === undefined ? '' : getFacetTypeFriendlyName(value)}\n </MenuItem>\n )\n })}\n </Select>\n {errorsByField['facetType'] && (\n <FormHelperText color={'error.main'}>\n {errorsByField['facetType']}\n </FormHelperText>\n )}\n </FormControl>\n </Box>\n <Box>\n <FormControl fullWidth>\n <Select\n label=\"Sort Facet Values\"\n value={facetSortConfigToValue(\n 'facetSortConfig' in columnModel\n ? columnModel.facetSortConfig\n : undefined,\n )}\n disabled={disabled || columnModel.facetType !== 'enumeration'}\n onChange={e => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...columnModel,\n facetSortConfig: valueToFacetSortConfig(\n e.target.value as FacetSortValue,\n ),\n },\n })\n }}\n sx={fieldSx}\n slotProps={{\n input: {\n 'aria-label': 'Sort Facet Values',\n },\n }}\n error={!!errorsByField['facetSortConfig']}\n >\n <MenuItem value=\"FREQUENCY_DESC\">Frequency Descending</MenuItem>\n <MenuItem value=\"FREQUENCY_ASC\">Frequency Ascending</MenuItem>\n <MenuItem value=\"VALUE_DESC\">Value Descending</MenuItem>\n <MenuItem value=\"VALUE_ASC\">Value Ascending</MenuItem>\n </Select>\n {errorsByField['facetSortConfig'] && (\n <FormHelperText color={'error.main'}>\n {errorsByField['facetSortConfig']}\n </FormHelperText>\n )}\n </FormControl>\n </Box>\n </Box>\n {isJsonSubColumn && (\n <Box\n sx={{\n display: 'grid',\n gridColumn: '1 / span 11',\n gridTemplateColumns: 'subgrid',\n }}\n >\n <Box\n sx={{\n gridColumn: '1 / span 1',\n }}\n >\n {HIERARCHY_VERTICAL_LINE_COMPONENT}\n </Box>\n <Box></Box>\n <Box\n sx={{\n gridColumn: '3 / span 7',\n }}\n >\n <TextField\n placeholder={'JSON Path'}\n value={(columnModel as JsonSubColumnModelFormData).jsonPath}\n onChange={e => {\n dispatch({\n type: 'setColumnModelValue',\n columnModelIndex,\n jsonSubColumnModelIndex: jsonSubColumnIndex,\n value: {\n ...(columnModel as JsonSubColumnModelFormData),\n jsonPath: e.target.value,\n },\n })\n }}\n disabled={disabled}\n fullWidth\n slotProps={{\n input: {\n disableInjectingGlobalStyles:\n DISABLE_INJECTING_GLOBAL_STYLES_VALUE,\n sx: fieldSx,\n endAdornment: (\n <Tooltip\n title={\n <>\n <p>\n <Link\n href={\n 'https://dev.mysql.com/doc/refman/8.0/en/json.html#json-path-syntax'\n }\n >\n Please use a valid JSON Path selector, following\n this format.\n </Link>\n </p>\n <p>\n This field is for linking the sub-column facet to\n the corresponding location in the JSON data, so that\n it can be used as facet filter. The correct selector\n will point to the key referenced in the sub-column\n JSON Path.\n </p>\n </>\n }\n >\n <InfoTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n ),\n slotProps: {\n input: { 'aria-label': 'JSON Path' },\n },\n },\n }}\n error={!!errorsByField['jsonPath']}\n helperText={errorsByField['jsonPath']}\n />\n </Box>\n </Box>\n )}\n </>\n )\n}\n"],"mappings":"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"}
|
|
@@ -26,10 +26,24 @@ export declare function canHaveMaxListLength(type: ColumnType | ColumnTypeEnum):
|
|
|
26
26
|
* @return the allowed facetTypes, or null if faceting is not allowed
|
|
27
27
|
*/
|
|
28
28
|
export declare function configureFacetsForType(type: ColumnType | ColumnTypeEnum, isJsonSubColumnFacet: boolean): (FacetType | undefined)[] | null;
|
|
29
|
+
/**
|
|
30
|
+
* Column types that are not allowed to have a default value.
|
|
31
|
+
* @see the `defaultValue` property description on the ColumnModel schema in the Synapse OpenAPI specification.
|
|
32
|
+
*/
|
|
33
|
+
export declare const DISALLOWED_DEFAULT_VALUE_COLUMN_TYPES: ColumnTypeEnum[];
|
|
29
34
|
export declare function canHaveDefault(type: ColumnType | ColumnTypeEnum, isView: boolean, isJsonSubColumnFacet: boolean): boolean;
|
|
30
35
|
export declare const DEFAULT_STRING_SIZE = 50;
|
|
31
36
|
export declare const MAX_STRING_SIZE = 1000;
|
|
32
|
-
export declare const
|
|
37
|
+
export declare const DEFAULT_LIST_LENGTH = 100;
|
|
38
|
+
/** The maximum number of characters allowed in a column name. */
|
|
39
|
+
export declare const MAX_COLUMN_NAME_LENGTH = 256;
|
|
40
|
+
/** The maximum number of enumeration values allowed for a single column. */
|
|
41
|
+
export declare const MAX_ENUM_VALUES = 100;
|
|
42
|
+
/**
|
|
43
|
+
* The maximum total character budget for a list column. The server enforces that
|
|
44
|
+
* `maximumListLength * <per-element character size>` does not exceed this value.
|
|
45
|
+
*/
|
|
46
|
+
export declare const LIST_LENGTH_CHARACTER_BUDGET = 100000;
|
|
33
47
|
/**
|
|
34
48
|
* Get the default max size for a given type.
|
|
35
49
|
*
|
|
@@ -37,6 +51,18 @@ export declare const MAX_LIST_LENGTH = 100;
|
|
|
37
51
|
* @return
|
|
38
52
|
*/
|
|
39
53
|
export declare function getMaxSizeForType(type: ColumnType | ColumnTypeEnum): number;
|
|
54
|
+
/**
|
|
55
|
+
* Get the maximum allowed `maximumListLength` for a list column type.
|
|
56
|
+
*
|
|
57
|
+
* The server enforces a total character budget of {@link LIST_LENGTH_CHARACTER_BUDGET}.
|
|
58
|
+
* For STRING_LIST the per-element size is the configurable `maximumSize` (defaulting to
|
|
59
|
+
* {@link DEFAULT_STRING_SIZE}); for all other list types the per-element size is fixed.
|
|
60
|
+
*
|
|
61
|
+
* @param type the list column type
|
|
62
|
+
* @param maximumSize the configured element size, used only for STRING_LIST
|
|
63
|
+
* @return the maximum allowed list length
|
|
64
|
+
*/
|
|
65
|
+
export declare function getMaxListLengthForType(type: ColumnType | ColumnTypeEnum, maximumSize?: number): number;
|
|
40
66
|
export declare function canHaveRestrictedValues(type: ColumnType | ColumnTypeEnum, isJsonSubColumnFacet: boolean): boolean;
|
|
41
67
|
/**
|
|
42
68
|
* Transform ColumnModels returned by Synapse into the form data for the TableColumnSchemaForm.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableColumnSchemaEditorUtils.d.ts","sourceRoot":"","sources":["../../../src/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,MAAM,EAGN,SAAS,EACT,SAAS,EACV,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EACL,mBAAmB,EAEpB,MAAM,mCAAmC,CAAA;AAQ1C;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,EACf,oBAAoB,EAAE,OAAO,GAC5B,cAAc,EAAE,CAuBlB;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,SAAS,sBAS5D;AACD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,sQA6C1E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAUtE;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,GAAG,cAAc,GAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"TableColumnSchemaEditorUtils.d.ts","sourceRoot":"","sources":["../../../src/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.ts"],"names":[],"mappings":"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"}
|