From f79ba363481d2085c965776af618e9d069644cc8 Mon Sep 17 00:00:00 2001 From: plglaser Date: Tue, 9 Aug 2022 11:35:58 +0200 Subject: [PATCH 1/5] add "new sample er model" command --- extension/package.json | 9 +++-- .../{new-model.ts => new-empty-model.ts} | 9 ++--- extension/src/commands/new-sample-model.ts | 33 +++++++++++++++++++ extension/src/erdiagram-lsp-extension.ts | 14 +++++--- webview/src/toolbar.ts | 2 +- 5 files changed, 54 insertions(+), 13 deletions(-) rename extension/src/commands/{new-model.ts => new-empty-model.ts} (82%) create mode 100644 extension/src/commands/new-sample-model.ts diff --git a/extension/package.json b/extension/package.json index 03f2169..16b8ee3 100644 --- a/extension/package.json +++ b/extension/package.json @@ -98,8 +98,13 @@ "category": "bigER" }, { - "command": "erdiagram.model.new", - "title": "New ER Model", + "command": "erdiagram.model.newEmpty", + "title": "New empty ER Model", + "category": "bigER" + }, + { + "command": "erdiagram.model.newSample", + "title": "New sample ER Model", "category": "bigER" } ], diff --git a/extension/src/commands/new-model.ts b/extension/src/commands/new-empty-model.ts similarity index 82% rename from extension/src/commands/new-model.ts rename to extension/src/commands/new-empty-model.ts index eca68b2..f13c96e 100644 --- a/extension/src/commands/new-model.ts +++ b/extension/src/commands/new-empty-model.ts @@ -1,7 +1,7 @@ import { commands, Selection, window, workspace } from 'vscode'; -export const command = 'erdiagram.model.new'; +export const command = 'erdiagram.model.newEmpty'; -export default async function newModel() { +export default async function newEmptyModel() { const fileUri = await window.showSaveDialog({ saveLabel: 'Save as', filters: { @@ -13,10 +13,7 @@ export default async function newModel() { await workspace.fs.writeFile(fileUri, writeData); const document = await workspace.openTextDocument(fileUri); const editor = await window.showTextDocument(fileUri); - editor.selection = new Selection(document.positionAt(10), - document.positionAt(17)); + editor.selection = new Selection(document.positionAt(10), document.positionAt(16)); commands.executeCommand('erdiagram.diagram.open'); } - - } \ No newline at end of file diff --git a/extension/src/commands/new-sample-model.ts b/extension/src/commands/new-sample-model.ts new file mode 100644 index 0000000..ed8af3a --- /dev/null +++ b/extension/src/commands/new-sample-model.ts @@ -0,0 +1,33 @@ +import { commands, Selection, window, workspace } from 'vscode'; +export const command = 'erdiagram.model.newSample'; + +export default async function newSampleModel() { + const fileUri = await window.showSaveDialog({ + saveLabel: 'Save as', + filters: { + "ER Diagram file": ["erd"] + } + }); + if (fileUri) { + const sampleModel = [ + "erdiagram Model\n", + "notation=default", + "generate=off\n", + "entity A {", + " id key", + "}\n", + "entity B {", + " id key", + "}\n", + "relationship Rel {", + " A -> B", + "}" + ].join("\n"); + const writeData = Buffer.from(sampleModel, 'utf8'); + await workspace.fs.writeFile(fileUri, writeData); + const document = await workspace.openTextDocument(fileUri); + const editor = await window.showTextDocument(fileUri); + editor.selection = new Selection(document.positionAt(10), document.positionAt(16)); + commands.executeCommand('erdiagram.diagram.open'); + } +} \ No newline at end of file diff --git a/extension/src/erdiagram-lsp-extension.ts b/extension/src/erdiagram-lsp-extension.ts index bff1fe6..f6afcaa 100644 --- a/extension/src/erdiagram-lsp-extension.ts +++ b/extension/src/erdiagram-lsp-extension.ts @@ -5,7 +5,8 @@ import { LanguageClient, ServerOptions, LanguageClientOptions } from "vscode-lan import { SprottyWebview } from "sprotty-vscode/lib/sprotty-webview"; import { SprottyDiagramIdentifier, SprottyLspWebview } from "sprotty-vscode/lib/lsp"; import { ERDiagramWebview } from './erdiagram-webview'; -import newModel from './commands/new-model'; +import newEmptyModel from './commands/new-empty-model'; +import newSampleModel from './commands/new-sample-model'; export class ERDiagramLspVscodeExtension extends SprottyLspEditVscodeExtension { @@ -15,9 +16,14 @@ export class ERDiagramLspVscodeExtension extends SprottyLspEditVscodeExtension { protected registerCommands() { super.registerCommands(); - this.context.subscriptions.push(vscode.commands.registerCommand('erdiagram.model.new', (...commandArgs: any[]) => { - newModel(); - })); + this.context.subscriptions.push(vscode.commands.registerCommand('erdiagram.model.newEmpty', + (...commandArgs: any[]) => { + newEmptyModel(); + })); + this.context.subscriptions.push(vscode.commands.registerCommand('erdiagram.model.newSample', + (...commandArgs: any[]) => { + newSampleModel(); + })); } protected getDiagramType(commandArgs: any[]): string | undefined { diff --git a/webview/src/toolbar.ts b/webview/src/toolbar.ts index 2aed2bf..fa25a14 100644 --- a/webview/src/toolbar.ts +++ b/webview/src/toolbar.ts @@ -47,7 +47,7 @@ export class ERDiagramWidget extends VscodeDiagramWidget { Code Generator - + Notation
From 834918dd60de27b9697e1f37b5957b56ca4d0b12 Mon Sep 17 00:00:00 2001 From: plglaser Date: Tue, 9 Aug 2022 12:32:59 +0200 Subject: [PATCH 2/5] improve hover info, remove log output and fix new sample er model command --- extension/package.json | 14 +++++-- .../erd/ide/diagram/ERDiagramGenerator.xtend | 4 +- .../ide/diagram/ERDiagramLayoutEngine.xtend | 4 +- .../big/erd/ide/hover/ERDHoverService.xtend | 38 +++++++++++++++++++ .../launch/ERDiagramLanguageServerSetup.xtend | 9 +++-- 5 files changed, 58 insertions(+), 11 deletions(-) diff --git a/extension/package.json b/extension/package.json index 16b8ee3..db5c1b7 100644 --- a/extension/package.json +++ b/extension/package.json @@ -33,7 +33,8 @@ "activationEvents": [ "onLanguage:erdiagram", "onCommand:erdiagram.diagram.open", - "onCommand:erdiagram.model.new" + "onCommand:erdiagram.model.newEmpty", + "onCommand:erdiagram.model.newSample" ], "files": [ "dist", @@ -132,7 +133,11 @@ ], "file/newFile": [ { - "command": "erdiagram.model.new", + "command": "erdiagram.model.newEmpty", + "group": "file" + }, + { + "command": "erdiagram.model.newSample", "group": "file" } ], @@ -158,7 +163,10 @@ "when": "erdiagram-diagram-focused" }, { - "command": "erdiagram.model.new" + "command": "erdiagram.model.newEmpty" + }, + { + "command": "erdiagram.model.newSample" } ] }, diff --git a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/diagram/ERDiagramGenerator.xtend b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/diagram/ERDiagramGenerator.xtend index 206e4cf..2356bf4 100644 --- a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/diagram/ERDiagramGenerator.xtend +++ b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/diagram/ERDiagramGenerator.xtend @@ -59,7 +59,7 @@ class ERDiagramGenerator implements IDiagramGenerator { this.state = context.state val contentHead = context.resource.contents.head if (contentHead instanceof Model) { - LOG.info("Generating diagram for model with URI '" + context.resource.URI.lastSegment + "'") + LOG.debug("Generating diagram for model with URI '" + context.resource.URI.lastSegment + "'") model = contentHead toSGraph(model, context) } @@ -104,7 +104,7 @@ class ERDiagramGenerator implements IDiagramGenerator { } ] - LOG.info("Generated Graph: " + graph) + LOG.debug("Generated Graph: " + graph) } def RelationshipNode relationshipNodes(Relationship relationship, extension Context context) { diff --git a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/diagram/ERDiagramLayoutEngine.xtend b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/diagram/ERDiagramLayoutEngine.xtend index baaf1b8..c4261ea 100644 --- a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/diagram/ERDiagramLayoutEngine.xtend +++ b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/diagram/ERDiagramLayoutEngine.xtend @@ -18,7 +18,7 @@ class ERDiagramLayoutEngine extends ElkLayoutEngine { override layout(SModelRoot root, Action cause) { if (root instanceof ERModel) { - LOG.info("Applying macro layout for model with id: '" + root.id + "'") + LOG.debug("Applying macro layout for model with id: '" + root.id + "'") val configurator = new SprottyLayoutConfigurator configurator.configureByType('graph') @@ -46,7 +46,7 @@ class ERDiagramLayoutEngine extends ElkLayoutEngine { .setProperty(CoreOptions.PORT_CONSTRAINTS, PortConstraints.FIXED_SIDE) layout(root, configurator, cause) - LOG.info("Finished computing macro layout.") + LOG.debug("Finished computing macro layout.") } } diff --git a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/hover/ERDHoverService.xtend b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/hover/ERDHoverService.xtend index a0af5ec..8c259ed 100644 --- a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/hover/ERDHoverService.xtend +++ b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/hover/ERDHoverService.xtend @@ -6,7 +6,13 @@ import org.eclipse.xtext.ide.labels.INameLabelProvider import org.eclipse.xtext.ide.server.hover.HoverService import org.big.erd.entityRelationship.Entity import org.big.erd.entityRelationship.AttributeType +import org.big.erd.entityRelationship.Model +import org.big.erd.entityRelationship.NotationType +import org.big.erd.entityRelationship.GenerateOptionType +/** + * Provides hover information when hovering over model elements in the textual editor. + */ class ERDHoverService extends HoverService { @Inject INameLabelProvider nameLabelProvider @@ -22,6 +28,7 @@ class ERDHoverService extends HoverService { def toText(EObject element) { switch element { + Model: hoverInformation(element) Entity : ''' *«IF element.weak»Weak «ENDIF»Entity* **«element.name»** @@ -33,6 +40,37 @@ class ERDHoverService extends HoverService { } } + def hoverInformation(Model model) { + ''' + **ER Model** «model.name» + + --- + + «optionsInfo(model)» + + --- + + «elementCountInfo(model)» + ''' + } + + def optionsInfo(Model model) { + ''' + Notation: `«model.notation !== null ? model.notation.notationType.toString : NotationType.DEFAULT.toString»` + + Generator: `«model.generateOption !== null ? model.generateOption.generateOptionType.toString : GenerateOptionType.OFF.toString»` + ''' + } + + def elementCountInfo(Model model) { + ''' + «IF model.entities.length === 1»«model.entities.length» Entity, «ENDIF» + «IF model.entities.length !== 1»«model.entities.length» Entities, «ENDIF» + «IF model.relationships.length === 1»«model.relationships.length» Relationship«ENDIF» + «IF model.relationships.length !== 1»«model.relationships.length» Relationships«ENDIF» + ''' + } + def keyText(Entity entity) { if (entity.weak) { val partialKey = entity.attributes.filter[a | diff --git a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/launch/ERDiagramLanguageServerSetup.xtend b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/launch/ERDiagramLanguageServerSetup.xtend index e1ba640..973c368 100644 --- a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/launch/ERDiagramLanguageServerSetup.xtend +++ b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/launch/ERDiagramLanguageServerSetup.xtend @@ -14,26 +14,27 @@ import org.eclipse.sprotty.xtext.ls.SyncDiagramServerModule import org.eclipse.xtext.ide.server.ServerModule import org.eclipse.xtext.util.Modules2 + class ERDiagramLanguageServerSetup extends DiagramLanguageServerSetup { override void setupLanguages() { - // ELK + // initialize ELK with layered algorithm ElkLayoutEngine.initialize(new LayeredMetaDataProvider) Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put('elkg', new ElkGraphResourceFactory) } override GsonBuilder configureGson(GsonBuilder gsonBuilder) { - // val factory = new ActionTypeAdapter.Factory() - gsonBuilder + // register action type adapter factories + return gsonBuilder .registerTypeAdapterFactory(new EditActionTypeAdapterFactory) .registerTypeAdapterFactory(new EnumTypeAdapter.Factory) .registerTypeAdapterFactory(new CustomActionTypeAdapterFactory) + } override Module getLanguageServerModule() { Modules2.mixin( new ServerModule, - // for synchronised diagrams new SyncDiagramServerModule ) } From 6e18fe2141c6b08f333275cad55e96443a62b9fd Mon Sep 17 00:00:00 2001 From: Philipp <39776671+plglaser@users.noreply.github.com> Date: Tue, 9 Aug 2022 12:50:04 +0200 Subject: [PATCH 3/5] add build workflow for server and client --- .github/workflows/build.yml | 44 +++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..e460f44 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,44 @@ +# matrix build of server (Java) and client (Node) +name: Build + +# run workflow on pushes/pull requests to main or manually +on: + workflow_dispatch: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + # builds the server using Gradle on ubuntu, macos, windows with java 11, 17 + build-server: + strategy: + matrix: + java: [11, 17] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + name: ${{ matrix.os }} with Java ${{ matrix.Java }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-java@v3 + with: + java-version: ${{ matrix.Java }} + distribution: 'temurin' + - run: language-server/gradlew -p language-server/ build + # builds the client using yarn on ubuntu, macos, windows with Node.js 16 + build-client: + strategy: + matrix: + node: ['16'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + name: ${{ matrix.os }} with Node ${{ matrix.node }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node }} + - run: yarn --cwd webview + - run: yarn --cwd extension From 9dcc39dd06cb86805db0261dd07e51e60a4e4537 Mon Sep 17 00:00:00 2001 From: plglaser Date: Tue, 9 Aug 2022 13:21:00 +0200 Subject: [PATCH 4/5] fix build with duplicate java files --- extension/.eslintrc | 2 +- extension/package.json | 2 +- extension/src/erdiagram-lsp-extension.ts | 6 ++-- .../erd/ide/EntityRelationshipIdeModule.java | 35 ++++++++++++++++++ .../erd/ide/EntityRelationshipIdeModule.xtend | 36 ------------------- .../erd/ide/EntityRelationshipIdeSetup.java | 27 ++++++++++++++ .../erd/ide/EntityRelationshipIdeSetup.xtend | 28 --------------- .../big/erd/GenerateEntityRelationship.mwe2 | 9 ++++- webview/.eslintrc | 2 +- webview/package.json | 4 +-- webview/src/layout-postprocessor.ts | 4 +-- webview/src/main.ts | 3 -- 12 files changed, 78 insertions(+), 80 deletions(-) create mode 100644 language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeModule.java delete mode 100644 language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeModule.xtend create mode 100644 language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeSetup.java delete mode 100644 language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeSetup.xtend diff --git a/extension/.eslintrc b/extension/.eslintrc index baf9709..d371edc 100644 --- a/extension/.eslintrc +++ b/extension/.eslintrc @@ -41,7 +41,7 @@ "operator-linebreak": ["error", "after"], "no-multi-assign": "error", "no-dupe-class-members": "error", - "function-paren-newline": ["error", "never"], + "function-paren-newline": ["error", "multiline"], "@typescript-eslint/no-explicit-any": "off", "no-duplicate-imports": "error", "no-alert": "error", diff --git a/extension/package.json b/extension/package.json index db5c1b7..96163a2 100644 --- a/extension/package.json +++ b/extension/package.json @@ -220,7 +220,7 @@ "build": "webpack --mode=development", "build:tests": "tsc -p . --outDir dist", "clean": "rimraf dist", - "lint": "eslint './src/**'", + "lint": "eslint \"./src/**\"", "watch": "webpack --mode=development --watch" } } \ No newline at end of file diff --git a/extension/src/erdiagram-lsp-extension.ts b/extension/src/erdiagram-lsp-extension.ts index f6afcaa..77d7786 100644 --- a/extension/src/erdiagram-lsp-extension.ts +++ b/extension/src/erdiagram-lsp-extension.ts @@ -16,12 +16,10 @@ export class ERDiagramLspVscodeExtension extends SprottyLspEditVscodeExtension { protected registerCommands() { super.registerCommands(); - this.context.subscriptions.push(vscode.commands.registerCommand('erdiagram.model.newEmpty', - (...commandArgs: any[]) => { + this.context.subscriptions.push(vscode.commands.registerCommand('erdiagram.model.newEmpty', (...commandArgs: any[]) => { newEmptyModel(); })); - this.context.subscriptions.push(vscode.commands.registerCommand('erdiagram.model.newSample', - (...commandArgs: any[]) => { + this.context.subscriptions.push(vscode.commands.registerCommand('erdiagram.model.newSample', (...commandArgs: any[]) => { newSampleModel(); })); } diff --git a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeModule.java b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeModule.java new file mode 100644 index 0000000..5bc1a1a --- /dev/null +++ b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeModule.java @@ -0,0 +1,35 @@ +/* + * generated by Xtext 2.27.0 + */ +package org.big.erd.ide; + +import org.big.erd.ide.codeActions.ERDCodeActionService; +import org.big.erd.ide.hover.ERDHoverService; +import org.big.erd.ide.symbol.ErDocumentSymbolKindProvider; +import org.big.erd.ide.symbol.ErDocumentSymbolNameProvider; +import org.eclipse.xtext.ide.server.codeActions.ICodeActionService2; +import org.eclipse.xtext.ide.server.hover.HoverService; +import org.eclipse.xtext.ide.server.symbol.DocumentSymbolMapper.DocumentSymbolKindProvider; +import org.eclipse.xtext.ide.server.symbol.DocumentSymbolMapper.DocumentSymbolNameProvider; + +/** + * Use this class to register ide components. + */ +public class EntityRelationshipIdeModule extends AbstractEntityRelationshipIdeModule { + + public Class bindICodeActionService2() { + return ERDCodeActionService.class; + } + + public Class bindHoverService() { + return ERDHoverService.class; + } + + public Class bindDocumentSymbolNameProvider() { + return ErDocumentSymbolNameProvider.class; + } + + public Class bindDocumentSymbolKindProvider() { + return ErDocumentSymbolKindProvider.class; + } +} diff --git a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeModule.xtend b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeModule.xtend deleted file mode 100644 index 96c1467..0000000 --- a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeModule.xtend +++ /dev/null @@ -1,36 +0,0 @@ -/* - * generated by Xtext 2.24.0 - */ -package org.big.erd.ide - -import org.eclipse.xtext.ide.server.codeActions.ICodeActionService2 -import org.eclipse.xtext.ide.server.hover.HoverService -import org.big.erd.ide.hover.ERDHoverService -import org.big.erd.ide.codeActions.ERDCodeActionService -import org.big.erd.ide.symbol.ErDocumentSymbolNameProvider -import org.eclipse.xtext.ide.server.symbol.DocumentSymbolMapper.DocumentSymbolNameProvider -import org.big.erd.ide.symbol.ErDocumentSymbolKindProvider -import org.eclipse.xtext.ide.server.symbol.DocumentSymbolMapper.DocumentSymbolKindProvider - -/** - * Editor components are registered here - */ -class EntityRelationshipIdeModule extends AbstractEntityRelationshipIdeModule { - - def Class bindICodeActionService2() { - ERDCodeActionService - } - - def Class bindHoverService() { - ERDHoverService - } - - def Class bindDocumentSymbolNameProvider() { - ErDocumentSymbolNameProvider - } - - def Class bindDocumentSymbolKindProvider() { - ErDocumentSymbolKindProvider; - } - -} diff --git a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeSetup.java b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeSetup.java new file mode 100644 index 0000000..4bfd2ad --- /dev/null +++ b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeSetup.java @@ -0,0 +1,27 @@ +/* + * generated by Xtext 2.27.0 + */ +package org.big.erd.ide; + +import com.google.inject.Guice; +import com.google.inject.Injector; +import org.big.erd.EntityRelationshipRuntimeModule; +import org.big.erd.EntityRelationshipStandaloneSetup; +import org.big.erd.ide.diagram.DiagramModule; +import org.eclipse.xtext.util.Modules2; + +/** + * Initialization support for running Xtext languages as language servers. + */ +public class EntityRelationshipIdeSetup extends EntityRelationshipStandaloneSetup { + + @Override + public Injector createInjector() { + return Guice.createInjector( + Modules2.mixin( + new EntityRelationshipRuntimeModule(), + new EntityRelationshipIdeModule(), + new DiagramModule() + )); + } +} diff --git a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeSetup.xtend b/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeSetup.xtend deleted file mode 100644 index 19fde10..0000000 --- a/language-server/org.big.erd.ide/src/main/java/org/big/erd/ide/EntityRelationshipIdeSetup.xtend +++ /dev/null @@ -1,28 +0,0 @@ -/* - * generated by Xtext 2.24.0 - */ -package org.big.erd.ide - -import com.google.inject.Guice -import org.eclipse.xtext.util.Modules2 -import org.big.erd.EntityRelationshipRuntimeModule -import org.big.erd.EntityRelationshipStandaloneSetup -import org.big.erd.ide.diagram.DiagramModule - -/** - * Initialization support for running Xtext languages as language servers. - * Adds the DiagramModule to the language server. - */ -class EntityRelationshipIdeSetup extends EntityRelationshipStandaloneSetup { - - override createInjector() { - Guice.createInjector( - Modules2.mixin( - new EntityRelationshipRuntimeModule, - new EntityRelationshipIdeModule, - new DiagramModule - ) - ) - } - -} diff --git a/language-server/org.big.erd/src/main/java/org/big/erd/GenerateEntityRelationship.mwe2 b/language-server/org.big.erd/src/main/java/org/big/erd/GenerateEntityRelationship.mwe2 index ee1ad0b..c37eb0f 100644 --- a/language-server/org.big.erd/src/main/java/org/big/erd/GenerateEntityRelationship.mwe2 +++ b/language-server/org.big.erd/src/main/java/org/big/erd/GenerateEntityRelationship.mwe2 @@ -24,7 +24,7 @@ Workflow { encoding = "UTF-8" lineDelimiter = "\n" fileHeader = "/*\n * generated by Xtext \${version}\n */" - + preferXtendStubs = false } } language = StandardLanguage { @@ -38,6 +38,13 @@ Workflow { // composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator" // Generates checks for @Deprecated grammar annotations, an IssueProvider and a corresponding PropertyPage generateDeprecationValidation = true + generateXtendStub = true + } + generator = { + generateXtendStub = true + } + scopeProvider = { + generateXtendStub = true } junitSupport = { junitVersion = "5" diff --git a/webview/.eslintrc b/webview/.eslintrc index 4220688..89b5e6b 100644 --- a/webview/.eslintrc +++ b/webview/.eslintrc @@ -42,7 +42,7 @@ "operator-linebreak": ["error", "after"], "no-multi-assign": "error", "no-dupe-class-members": "error", - "function-paren-newline": ["error", "never"], + "function-paren-newline": ["error", "multiline"], "@typescript-eslint/no-explicit-any": "off", "no-duplicate-imports": "error", "no-alert": "error", diff --git a/webview/package.json b/webview/package.json index ba96050..8deba31 100644 --- a/webview/package.json +++ b/webview/package.json @@ -7,10 +7,10 @@ }, "license": "MIT", "scripts": { - "prepare": "yarn run clean && yarn run build", + "prepare": "yarn run clean && yarn run build && yarn run lint", "clean": "rimraf out", "build": "webpack --mode=development", - "lint": "eslint './src/**'", + "lint": "eslint \"./src/**\"", "watch:": "webpack --mode=development --watch" }, "files": [ diff --git a/webview/src/layout-postprocessor.ts b/webview/src/layout-postprocessor.ts index f574d7e..beba809 100644 --- a/webview/src/layout-postprocessor.ts +++ b/webview/src/layout-postprocessor.ts @@ -30,9 +30,7 @@ export class BigerEdgeLayoutPostprocessor extends EdgeLayoutPostprocessor { let transform = ""; if (pointOnEdge && derivativeOnEdge) { transform += `translate(${pointOnEdge.x}, ${pointOnEdge.y})`; - const angle = toDegrees( - Math.atan2(derivativeOnEdge.y, derivativeOnEdge.x) - ); + const angle = toDegrees(Math.atan2(derivativeOnEdge.y, derivativeOnEdge.x)); if (placement.rotate) { let flippedAngle = angle; if (Math.abs(angle) > 90) { diff --git a/webview/src/main.ts b/webview/src/main.ts index b12f47f..8dbe9eb 100644 --- a/webview/src/main.ts +++ b/webview/src/main.ts @@ -24,14 +24,11 @@ export class ERDiagramSprottyStarter extends SprottyLspEditStarter { protected addVscodeBindings(container: Container, diagramIdentifier: SprottyDiagramIdentifier): void { super.addVscodeBindings(container, diagramIdentifier); - container.rebind(VscodeDiagramServer).to(BigERDiagramServer); container.rebind(VscodeDiagramWidget).to(ERDiagramWidget).inSingletonScope(); container.bind(TYPES.PopupMouseListener).to(PopupButtonListener); - configureModelElement(container, 'button:delete', PopupButton, PopupButtonView); configureModelElement(container, 'button:edit', PopupButton, PopupButtonView); - configureCommand(container, AddEntityCommand); configureCommand(container, AddRelationshipCommand); } From 2b25c2abc0505b1977a167e752fc8656b56ab9cf Mon Sep 17 00:00:00 2001 From: Philipp <39776671+plglaser@users.noreply.github.com> Date: Tue, 9 Aug 2022 13:21:33 +0200 Subject: [PATCH 5/5] Update build.yml --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e460f44..33c56a5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,6 +26,7 @@ jobs: with: java-version: ${{ matrix.Java }} distribution: 'temurin' + - run: language-server/gradlew -p language-server/ clean - run: language-server/gradlew -p language-server/ build # builds the client using yarn on ubuntu, macos, windows with Node.js 16 build-client: