From a49083f31679c47e1685e0cedbc9a40cc8f48fd8 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Sat, 26 Aug 2023 21:44:58 +0200 Subject: refactor(frontent): improve graph drawing --- .../frontend/src/xtext/xtextServiceResults.ts | 30 +++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'subprojects/frontend/src/xtext/xtextServiceResults.ts') diff --git a/subprojects/frontend/src/xtext/xtextServiceResults.ts b/subprojects/frontend/src/xtext/xtextServiceResults.ts index 12f87b26..caf2cf0b 100644 --- a/subprojects/frontend/src/xtext/xtextServiceResults.ts +++ b/subprojects/frontend/src/xtext/xtextServiceResults.ts @@ -126,8 +126,36 @@ export const FormattingResult = DocumentStateResult.extend({ export type FormattingResult = z.infer; +export const NodeMetadata = z.object({ + name: z.string(), + simpleName: z.string(), + kind: z.enum(['IMPLICIT', 'INDIVIDUAL', 'NEW']), +}); + +export type NodeMetadata = z.infer; + +export const RelationMetadata = z.object({ + name: z.string(), + simpleName: z.string(), + arity: z.number().nonnegative(), + detail: z.union([ + z.object({ type: z.literal('class'), abstractClass: z.boolean() }), + z.object({ type: z.literal('reference'), containment: z.boolean() }), + z.object({ + type: z.literal('opposite'), + container: z.boolean(), + opposite: z.string(), + }), + z.object({ type: z.literal('predicate'), error: z.boolean() }), + z.object({ type: z.literal('builtin') }), + ]), +}); + +export type RelationMetadata = z.infer; + export const SemanticsSuccessResult = z.object({ - nodes: z.string().nullable().array(), + nodes: NodeMetadata.array(), + relations: RelationMetadata.array(), partialInterpretation: z.record( z.string(), z.union([z.number(), z.string()]).array().array(), -- cgit v1.2.3-54-g00ecf