Skip to content

Commit

Permalink
refactor / undefined
Browse files Browse the repository at this point in the history
  • Loading branch information
jikim-msft committed Jan 17, 2025

Verified

This commit was signed with the committer’s verified signature.
hynek Hynek Schlawack
1 parent 363ced9 commit dbf8f9b
Showing 2 changed files with 19 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -22,21 +22,17 @@ import { SharedMatrix } from "@fluidframework/matrix/internal";
import { SharedString } from "@fluidframework/sequence/internal";
import type { ISharedObject } from "@fluidframework/shared-object-base/internal";
import type { ITreeInternal } from "@fluidframework/tree/internal";
import { SchemaFactory, SharedTree, Tree } from "@fluidframework/tree/internal";
import { SharedTree } from "@fluidframework/tree/internal";

import { EditType } from "../CommonInterfaces.js";

import type { VisualizeChildData, VisualizeSharedObject } from "./DataVisualization.js";
import {
concatenateTypes,
determineNodeKind,
toVisualTree,
visualizeSharedTreeBySchema,
} from "./SharedTreeVisualizer.js";
import {
VisualSharedTreeNodeKind,
type VisualSharedTreeNode,
} from "./VisualSharedTreeTypes.js";
import type { VisualSharedTreeNode } from "./VisualSharedTreeTypes.js";
import {
type FluidObjectNode,
type FluidObjectTreeNode,
@@ -278,28 +274,13 @@ export const visualizeSharedTree: VisualizeSharedObject = async (
// Schema of the tree node.
const treeSchema = sharedTree.exportSimpleSchema();

const schemaFactory = new SchemaFactory(undefined);
const schemaName = Tree.is(treeView, [
schemaFactory.boolean,
schemaFactory.null,
schemaFactory.number,
schemaFactory.handle,
schemaFactory.string,
])
? Tree.schema(treeView).identifier
: treeView.type;

// Create a root field visualization that shows the allowed types at the root
const visualTreeRepresentation: VisualSharedTreeNode = {
schema: {
schemaName,
allowedTypes: concatenateTypes(treeSchema.allowedTypes),
},
fields: {
root: await visualizeSharedTreeBySchema(treeView, treeSchema, visualizeChildData),
},
kind: VisualSharedTreeNodeKind.InternalNode,
};
const visualTreeRepresentation: VisualSharedTreeNode = await visualizeSharedTreeBySchema(
treeView,
treeSchema,
visualizeChildData,
true,
);

// Maps the `visualTreeRepresentation` in the format compatible to {@link visualizeChildData} function.
const visualTree = toVisualTree(visualTreeRepresentation);
Original file line number Diff line number Diff line change
@@ -198,10 +198,14 @@ async function visualizeObjectNode(
treeSchema: SimpleTreeSchema,
visualizeChildData: VisualizeChildData,
): Promise<VisualSharedTreeNode> {
const isRootField = treeSchema.allowedTypes.has(tree.type);

return {
schema: {
schemaName: tree.type,
allowedTypes: getObjectAllowedTypes(nodeSchema),
allowedTypes: isRootField
? concatenateTypes(treeSchema.allowedTypes)
: getObjectAllowedTypes(nodeSchema),
},
fields: await visualizeVerboseNodeFields(tree.fields, treeSchema, visualizeChildData),
kind: VisualSharedTreeNodeKind.InternalNode,
@@ -306,8 +310,10 @@ export async function visualizeSharedTreeBySchema(
tree: VerboseTree,
treeSchema: SimpleTreeSchema,
visualizeChildData: VisualizeChildData,
isRootField?: boolean,
): Promise<VisualSharedTreeNode> {
const schemaFactory = new SchemaFactory(undefined);

return Tree.is(tree, [
schemaFactory.boolean,
schemaFactory.null,
@@ -318,6 +324,10 @@ export async function visualizeSharedTreeBySchema(
? {
schema: {
schemaName: Tree.schema(tree).identifier,
allowedTypes:
isRootField === true
? concatenateTypes(treeSchema.allowedTypes)
: Tree.schema(tree).identifier,
},
value: await visualizeChildData(tree),
kind: VisualSharedTreeNodeKind.LeafNode,

0 comments on commit dbf8f9b

Please sign in to comment.