Skip to content

Commit ece2570

Browse files
authored
feat(data-modeling): allow inline field type changes COMPASS-9799 (#7514)
* dump lg select and fix tests * integrate with local version * bootstrap * undo irrelevant changes * pr feedback
1 parent e3faa5a commit ece2570

File tree

6 files changed

+192
-56
lines changed

6 files changed

+192
-56
lines changed

package-lock.json

Lines changed: 156 additions & 45 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/compass-components/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
"@lg-chat/leafygreen-chat-provider": "^5.0.2",
8686
"@lg-chat/message": "^8.2.0",
8787
"@mongodb-js/compass-context-menu": "^0.3.1",
88-
"@mongodb-js/diagramming": "^2.2.1",
88+
"@mongodb-js/diagramming": "^2.2.2",
8989
"@react-aria/interactions": "^3.9.1",
9090
"@react-aria/utils": "^3.13.1",
9191
"@react-aria/visually-hidden": "^3.3.1",

packages/compass-data-modeling/src/components/diagram-editor.tsx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
deleteRelationship,
2424
removeField,
2525
renameField,
26+
changeFieldType,
2627
toggleCollectionExpanded,
2728
} from '../store/diagram';
2829
import type {
@@ -60,6 +61,7 @@ import {
6061
relationshipToDiagramEdge,
6162
} from '../utils/nodes-and-edges';
6263
import toNS from 'mongodb-ns';
64+
import { FIELD_TYPES } from '../utils/field-types';
6365
import { getNamespaceRelationships } from '../utils/utils';
6466
import { usePreference } from 'compass-preferences-model/provider';
6567

@@ -185,6 +187,12 @@ const DiagramContent: React.FunctionComponent<{
185187
newName: string;
186188
source: 'diagram';
187189
}) => void;
190+
onChangeFieldType: (data: {
191+
ns: string;
192+
fieldPath: FieldPath;
193+
newTypes: string[];
194+
source: 'diagram';
195+
}) => void;
188196
onDiagramBackgroundClicked: () => void;
189197
onDeleteCollection: (ns: string) => void;
190198
onDeleteRelationship: (rId: string) => void;
@@ -214,6 +222,7 @@ const DiagramContent: React.FunctionComponent<{
214222
onRelationshipSelect,
215223
onFieldSelect,
216224
onRenameField,
225+
onChangeFieldType,
217226
onDiagramBackgroundClicked,
218227
onCreateNewRelationship,
219228
onRelationshipDrawn,
@@ -414,6 +423,18 @@ const DiagramContent: React.FunctionComponent<{
414423
[onAddFieldToObjectField]
415424
);
416425

426+
const onFieldTypeChange = useCallback(
427+
(ns: string, fieldPath: FieldPath, newTypes: string[]) => {
428+
onChangeFieldType({
429+
ns,
430+
fieldPath,
431+
newTypes,
432+
source: 'diagram',
433+
});
434+
},
435+
[onChangeFieldType]
436+
);
437+
417438
const deleteItem = useCallback(() => {
418439
switch (selectedItems?.type) {
419440
case 'collection':
@@ -463,11 +484,13 @@ const DiagramContent: React.FunctionComponent<{
463484
onFieldClick,
464485
onFieldNameChange: (ns, field, newName) =>
465486
onRenameField({ ns, field, newName, source: 'diagram' }),
487+
onFieldTypeChange,
466488
onNodeDragStop,
467489
onConnect,
468490
onNodeExpandToggle: isCollapseFlagEnabled
469491
? handleNodeExpandedToggle
470492
: undefined,
493+
fieldTypes: FIELD_TYPES,
471494
} satisfies DiagramProps),
472495
[
473496
isDarkMode,
@@ -481,6 +504,7 @@ const DiagramContent: React.FunctionComponent<{
481504
onEdgeClick,
482505
onFieldClick,
483506
onRenameField,
507+
onFieldTypeChange,
484508
onNodeDragStop,
485509
onConnect,
486510
handleNodeExpandedToggle,
@@ -547,6 +571,7 @@ const ConnectedDiagramContent = connect(
547571
onRelationshipSelect: selectRelationship,
548572
onFieldSelect: selectField,
549573
onRenameField: renameField,
574+
onChangeFieldType: changeFieldType,
550575
onDiagramBackgroundClicked: selectBackground,
551576
onCreateNewRelationship: createNewRelationship,
552577
onDeleteCollection: deleteCollection,

0 commit comments

Comments
 (0)