From 1c8b97e3c9c01751a1ccd1e22bd76c4090812173 Mon Sep 17 00:00:00 2001 From: Lukas Lieb Date: Tue, 7 Jan 2025 09:03:24 +0100 Subject: [PATCH] wip --- .../diagram/gateways/gateway-views.test.tsx | 23 ++++++------- .../src/diagram/grid/ivy-graph-view.tsx | 2 +- .../editor/src/diagram/icon/views.test.tsx | 1 + .../src/diagram/lanes/lane-views.test.tsx | 28 +++++++--------- packages/editor/src/diagram/views.test.tsx | 33 ++++++++----------- .../editor/src/edit-label/edit-label-ui.ts | 5 +-- packages/editor/src/execution/action.ts | 4 +-- packages/editor/src/ui-tools/menu/menu.ts | 1 + 8 files changed, 44 insertions(+), 53 deletions(-) diff --git a/packages/editor/src/diagram/gateways/gateway-views.test.tsx b/packages/editor/src/diagram/gateways/gateway-views.test.tsx index 0f0da443c..cd28a8093 100644 --- a/packages/editor/src/diagram/gateways/gateway-views.test.tsx +++ b/packages/editor/src/diagram/gateways/gateway-views.test.tsx @@ -27,11 +27,11 @@ describe('GatewayNodeView', () => { }); test('render full gateway graph', () => { - const graphVNode = context.renderElement(graph); - expect(toHTML(graphVNode)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); + let view = context.renderElement(graph); + expect(toHTML(view)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); const unknown = graphFactory.createRoot({ type: 'unknown', id: 'unknown', children: [] }); - const unknownVNode = context.renderElement(unknown); - expect(toHTML(unknownVNode)).to.be.equal( + view = context.renderElement(unknown); + expect(toHTML(view)).to.be.equal( 'missing "unknown" view' ); }); @@ -53,28 +53,25 @@ describe('GatewayNodeView', () => { }); test('render with execution badge', () => { - const view = viewRegistry.get(GatewayTypes.TASK); const task = graph.index.getById('gatewayTask') as GatewayNode; task.executionCount = 3; - const vnode = view.render(task, context); + const view = viewRegistry.get(GatewayTypes.TASK).render(task, context); const executionBadge = '3'; - expect(toHTML(vnode)).to.contains(executionBadge); + expect(toHTML(view)).to.contains(executionBadge); }); test('render with color', () => { - const view = viewRegistry.get(GatewayTypes.TASK); const task = graph.index.getById('gatewayTask') as GatewayNode; task.args = { color: 'red' }; - const vnode = view.render(task, context); + const view = viewRegistry.get(GatewayTypes.TASK).render(task, context); const colorPolygon = //; - expect(toHTML(vnode)).to.matches(colorPolygon); + expect(toHTML(view)).to.matches(colorPolygon); }); function assertGateway(type: string, nodeId: string): void { - const view = viewRegistry.get(type); - const vnode = view.render(graph.index.getById(nodeId) as GNode, context); - const node = toHTML(vnode); + const view = viewRegistry.get(type).render(graph.index.getById(nodeId) as GNode, context); + const node = toHTML(view); expect(node).to.contains(''); expect(node).to.contains(''); } diff --git a/packages/editor/src/diagram/grid/ivy-graph-view.tsx b/packages/editor/src/diagram/grid/ivy-graph-view.tsx index 77ddc776d..acf59645d 100644 --- a/packages/editor/src/diagram/grid/ivy-graph-view.tsx +++ b/packages/editor/src/diagram/grid/ivy-graph-view.tsx @@ -42,7 +42,7 @@ export class IvyGraphView extends GLSPProjectionView { protected renderNegativeArea(model: Readonly): VNode { if (isViewport(model.root)) { - const modelBounds = getModelBounds(model.root)!; + const modelBounds = getModelBounds(model.root) ?? Bounds.EMPTY; return h('g', { class: { 'negative-area-group': true } }, [ h('rect', { attrs: { diff --git a/packages/editor/src/diagram/icon/views.test.tsx b/packages/editor/src/diagram/icon/views.test.tsx index 031c00652..109e84693 100644 --- a/packages/editor/src/diagram/icon/views.test.tsx +++ b/packages/editor/src/diagram/icon/views.test.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ import { describe, test, expect } from 'vitest'; import type { VNode, VNodeData } from 'snabbdom'; import type { Bounds } from '@eclipse-glsp/client'; diff --git a/packages/editor/src/diagram/lanes/lane-views.test.tsx b/packages/editor/src/diagram/lanes/lane-views.test.tsx index be78afff1..7b5e3924a 100644 --- a/packages/editor/src/diagram/lanes/lane-views.test.tsx +++ b/packages/editor/src/diagram/lanes/lane-views.test.tsx @@ -46,52 +46,48 @@ describe('LaneNodeView', () => { }); test('render full lane graph', () => { - const graphVNode = context.renderElement(graph); - expect(toHTML(graphVNode)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); + let view = context.renderElement(graph); + expect(toHTML(view)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); const unknown = graphFactory.createRoot({ type: 'unknown', id: 'unknown', children: [] }); - const unknownVNode = context.renderElement(unknown); - expect(toHTML(unknownVNode)).to.be.equal( + view = context.renderElement(unknown); + expect(toHTML(view)).to.be.equal( 'missing "unknown" view' ); }); test('render pool node', () => { - const view = viewRegistry.get(LaneTypes.POOL); - const vnode = view.render(graph.index.getById('pool') as GNode, context); + const view = viewRegistry.get(LaneTypes.POOL).render(graph.index.getById('pool') as GNode, context); const expectation = '' + '' + '' + ''; - expect(toHTML(vnode)).to.be.equal(expectation); + expect(toHTML(view)).to.be.equal(expectation); }); test('render pool node with multiline label', () => { - const view = viewRegistry.get(LaneTypes.POOL); - const vnode = view.render(graph.index.getById('pool2') as GNode, context); + const view = viewRegistry.get(LaneTypes.POOL).render(graph.index.getById('pool2') as GNode, context); const expectation = '' + '' + '' + ''; - expect(toHTML(vnode)).to.be.equal(expectation); + expect(toHTML(view)).to.be.equal(expectation); }); test('render lane node', () => { - const view = viewRegistry.get(LaneTypes.LANE); - const vnode = view.render(graph.index.getById('lane') as GNode, context); + const view = viewRegistry.get(LaneTypes.LANE).render(graph.index.getById('lane') as GNode, context); const expectation = '' + '' + ''; - expect(toHTML(vnode)).to.be.equal(expectation); + expect(toHTML(view)).to.be.equal(expectation); }); test('render lane with color dot', () => { - const view = viewRegistry.get(LaneTypes.LANE); const lane = graph.index.getById('lane') as LaneNode; lane.args = { color: 'red' }; - const vnode = view.render(lane, context); - expect(toHTML(vnode)).to.contain('style="--lane-color: red"'); + const view = viewRegistry.get(LaneTypes.LANE).render(lane, context); + expect(toHTML(view)).to.contain('style="--lane-color: red"'); }); }); diff --git a/packages/editor/src/diagram/views.test.tsx b/packages/editor/src/diagram/views.test.tsx index e7d85a49a..6a92725e0 100644 --- a/packages/editor/src/diagram/views.test.tsx +++ b/packages/editor/src/diagram/views.test.tsx @@ -31,55 +31,50 @@ describe('EdgeView', () => { }); test('render full edge graph', () => { - const graphVNode = context.renderElement(graph); - expect(toHTML(graphVNode)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); + let view = context.renderElement(graph); + expect(toHTML(view)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); const unknown = graphFactory.createRoot({ type: 'unknown', id: 'unknown', children: [] }); - const unknownVNode = context.renderElement(unknown); - expect(toHTML(unknownVNode)).to.be.equal( + view = context.renderElement(unknown); + expect(toHTML(view)).to.be.equal( 'missing "unknown" view' ); }); test('render edge', () => { - const view = viewRegistry.get(EdgeTypes.DEFAULT); - const vnode = view.render(graph.index.getById('edge') as GEdge, context); + const view = viewRegistry.get(EdgeTypes.DEFAULT).render(graph.index.getById('edge') as GEdge, context); const expectation = '' + ''; - expect(toHTML(vnode)).to.be.equal(expectation); + expect(toHTML(view)).to.be.equal(expectation); }); test('render edge with routing points', () => { - const view = viewRegistry.get(EdgeTypes.DEFAULT); - const vnode = view.render(graph.index.getById('edgeWithRoutes') as GEdge, context); + const view = viewRegistry.get(EdgeTypes.DEFAULT).render(graph.index.getById('edgeWithRoutes') as GEdge, context); const expectation = '' + ''; - expect(toHTML(vnode)).to.be.equal(expectation); + expect(toHTML(view)).to.be.equal(expectation); }); test('render edge with padding', () => { - const view = viewRegistry.get(EdgeTypes.DEFAULT); - const vnode = view.render(graph.index.getById('edgeWithPadding') as GEdge, context); + const view = viewRegistry.get(EdgeTypes.DEFAULT).render(graph.index.getById('edgeWithPadding') as GEdge, context); const mouseHandle = ''; - expect(toHTML(vnode)).to.contains(mouseHandle); + expect(toHTML(view)).to.contains(mouseHandle); }); test('render edge assoziation', () => { - const view = viewRegistry.get(EdgeTypes.ASSOCIATION); - const vnode = view.render(graph.index.getById('assoziation') as GEdge, context); + const view = viewRegistry.get(EdgeTypes.ASSOCIATION).render(graph.index.getById('assoziation') as GEdge, context); const expectation = ''; - expect(toHTML(vnode)).to.be.equal(expectation); + expect(toHTML(view)).to.be.equal(expectation); }); test('render edge with color', () => { - const view = viewRegistry.get(EdgeTypes.DEFAULT); const edge = graph.index.getById('edge') as Edge; edge.args = { color: 'red' }; - const vnode = view.render(edge, context); + const view = viewRegistry.get(EdgeTypes.DEFAULT).render(edge, context); const color = 'style="stroke: red"'; - expect(toHTML(vnode)).to.contain(color); + expect(toHTML(view)).to.contain(color); }); }); diff --git a/packages/editor/src/edit-label/edit-label-ui.ts b/packages/editor/src/edit-label/edit-label-ui.ts index c15f589f2..d13dfb3e4 100644 --- a/packages/editor/src/edit-label/edit-label-ui.ts +++ b/packages/editor/src/edit-label/edit-label-ui.ts @@ -1,9 +1,9 @@ -import { Action, EditLabelUI, IActionHandler, ICommand, isEditLabelAction, SetUIExtensionVisibilityAction } from '@eclipse-glsp/client'; +import { Action, EditLabelUI, IActionHandler, isEditLabelAction, SetUIExtensionVisibilityAction } from '@eclipse-glsp/client'; import { injectable } from 'inversify'; @injectable() export class IvyEditLabelActionHandler implements IActionHandler { - handle(action: Action): void | Action | ICommand { + handle(action: Action) { if (isEditLabelAction(action)) { return SetUIExtensionVisibilityAction.create({ extensionId: IvyEditLabelUI.IVY_ID, @@ -11,6 +11,7 @@ export class IvyEditLabelActionHandler implements IActionHandler { contextElementsId: [action.labelId] }); } + return; } } diff --git a/packages/editor/src/execution/action.ts b/packages/editor/src/execution/action.ts index 545ba922d..18d5cc1eb 100644 --- a/packages/editor/src/execution/action.ts +++ b/packages/editor/src/execution/action.ts @@ -19,7 +19,7 @@ export class SetExecutedElementsActionHandler implements IActionHandler { protected oldExecutions: ElementExecution[]; - handle(action: Action): Action | void { + handle(action: Action) { if (SetExecutedElementsAction.is(action)) { const feedbackAction = ExecutedFeedbackAction.create({ oldElementExecutions: this.oldExecutions, @@ -47,7 +47,7 @@ export class StoppedActionHandler implements IActionHandler { protected oldStoppedElement: string; - handle(action: Action): Action | void { + handle(action: Action) { if (StoppedAction.is(action)) { const feedbackAction = StoppedFeedbackAction.create({ oldStoppedElement: this.oldStoppedElement, stoppedElement: action.elementId }); if (action.elementId && action.elementId.length > 0) { diff --git a/packages/editor/src/ui-tools/menu/menu.ts b/packages/editor/src/ui-tools/menu/menu.ts index 0f28638ce..bab90ebe0 100644 --- a/packages/editor/src/ui-tools/menu/menu.ts +++ b/packages/editor/src/ui-tools/menu/menu.ts @@ -112,6 +112,7 @@ export abstract class ItemMenu implements Menu { const matchingChildren = itemGroup.children.filter(child => child.label.toLowerCase().includes(filter.toLowerCase())); if (matchingChildren.length > 0) { itemGroup.children.splice(0, itemGroup.children.length); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion matchingChildren.forEach(child => itemGroup.children!.push(child)); filteredPaletteItems.push(itemGroup); }