This is an automated email from the ASF dual-hosted git repository. marat pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
The following commit(s) were added to refs/heads/main by this push: new af02775 VS Code extension preview with components (#24) af02775 is described below commit af027758581dba338d8d86b91c27c64d446525b9 Author: Marat Gubaidullin <marat.gubaidul...@gmail.com> AuthorDate: Thu Oct 14 18:49:38 2021 -0400 VS Code extension preview with components (#24) * VS Code extension preview with components * VS Code extension upload name --- .github/workflows/main.yml | 16 +++++++++++++++- karavan-designer/src/designer/ui/DslElement.tsx | 9 +++++++-- karavan-vscode/package.json | 2 +- karavan-vscode/src/extension.ts | 12 ++++++++++++ karavan-vscode/webpack.config.js | 1 + karavan-vscode/webview/App.tsx | 4 ++++ 6 files changed, 40 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fbe6fa1..93223c6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -25,4 +25,18 @@ jobs: - name: Karavan VS Code extension (build) working-directory: ./karavan-vscode - run: yarn run package \ No newline at end of file + run: yarn run package + + - name: Karavan VS Code extension (install vsce) + working-directory: ./karavan-vscode + run: npm install -g vsce + + - name: Karavan VS Code extension (package) + working-directory: ./karavan-vscode + run: vsce package + + - name: Karavan VS Code extension (upload) + uses: actions/upload-artifact@v2 + with: + name: camel-karavan-vscode.vsix + path: ./karavan-vscode/*.vsix \ No newline at end of file diff --git a/karavan-designer/src/designer/ui/DslElement.tsx b/karavan-designer/src/designer/ui/DslElement.tsx index 28aba5e..cb2acfd 100644 --- a/karavan-designer/src/designer/ui/DslElement.tsx +++ b/karavan-designer/src/designer/ui/DslElement.tsx @@ -140,7 +140,7 @@ export class DslElement extends React.Component<Props, State> { getHeaderWithTooltip = (tooltip: string | undefined) => { return ( - <Tooltip position={"auto"} disabled={CamelUi.isShowExpressionTooltip(this.state.element)} + <Tooltip position={"auto"} content={<div>{tooltip}</div>}> {this.getHeader()} </Tooltip> @@ -153,6 +153,11 @@ export class DslElement extends React.Component<Props, State> { return undefined; } + getElementHeader = () => { + const tooltip = this.getHeaderTooltip(); + return tooltip === undefined ? this.getHeader() : this.getHeaderWithTooltip(tooltip); + } + render() { return ( <div className={ @@ -168,7 +173,7 @@ export class DslElement extends React.Component<Props, State> { onClick={event => this.selectElement(event)} > - {this.getHeaderWithTooltip(this.getHeaderTooltip())} + {this.getElementHeader()} {this.state.element.hasSteps() && !this.horizontal() && this.getArrow()} <div className={this.state.element.dslName}> {this.state.element.hasSteps() && diff --git a/karavan-vscode/package.json b/karavan-vscode/package.json index 20a075a..6dc4d1a 100644 --- a/karavan-vscode/package.json +++ b/karavan-vscode/package.json @@ -1,6 +1,6 @@ { "name": "karavan-vscode", - "publisher": "Apache Camel", + "publisher": "camel-karavan", "displayName": "Camel Karavan Designer", "icon": "icons/icon.png", "description": "Integration Designer for Apache Camel", diff --git a/karavan-vscode/src/extension.ts b/karavan-vscode/src/extension.ts index 2fbf86e..e9d569c 100644 --- a/karavan-vscode/src/extension.ts +++ b/karavan-vscode/src/extension.ts @@ -103,6 +103,9 @@ function openKaravanWebView(context: vscode.ExtensionContext, webviewContent: st // Read and send Kamelets panel.webview.postMessage({command: 'kamelets', kamelets: readKamelets()}); + // Read and send Components + panel.webview.postMessage({command: 'components', components: readComponents()}); + // Send integration panel.webview.postMessage({command: 'open', name: name, yaml: yaml}); @@ -135,6 +138,15 @@ function readKamelets(): string[] { return yamls; } +function readComponents(): string[] { + const uri: vscode.Uri = vscode.Uri.file(path.resolve( + path.join(__dirname, './components') + )) + const jsons: string[] = fs.readdirSync(uri.fsPath).filter(file => file.endsWith("json")).map(file => fs.readFileSync(uri.fsPath + "/" + file, 'utf-8')); + console.log(jsons) + return jsons; +} + function isIntegration(yaml: string): [boolean, string?] { const i = CamelYaml.yamlToIntegration(yaml); if (i.kind === 'Integration' && i.metadata.name){ diff --git a/karavan-vscode/webpack.config.js b/karavan-vscode/webpack.config.js index 463de7f..6ca48d0 100644 --- a/karavan-vscode/webpack.config.js +++ b/karavan-vscode/webpack.config.js @@ -144,6 +144,7 @@ const prerenderConfig = (webpackEnv) => { new CopyPlugin({ patterns: [ {from: "kamelets", to: "kamelets"}, + {from: "components", to: "components"} ], }), ], diff --git a/karavan-vscode/webview/App.tsx b/karavan-vscode/webview/App.tsx index fd93a27..da21b7c 100644 --- a/karavan-vscode/webview/App.tsx +++ b/karavan-vscode/webview/App.tsx @@ -21,6 +21,7 @@ import { import {KaravanDesigner} from "../designer/ui/KaravanDesigner"; import vscode from "./vscode"; import {KameletApi} from "../designer/api/KameletApi"; +import { ComponentApi } from "../designer/api/ComponentApi"; interface Props { } @@ -47,6 +48,9 @@ class App extends React.Component<Props, State> { case 'kamelets': KameletApi.saveKamelets(message.kamelets); break; + case 'components': + ComponentApi.saveComponents(message.components); + break; case 'open': if (this.state.name === '' && this.state.key === ''){ this.setState({name: message.name, yaml: message.yaml, key: Math.random().toString()});