| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Action Invoker</title> |
| <link href="{{nodeModulePath}}/jsoneditor/dist/jsoneditor.min.css" rel="stylesheet" type="text/css"> |
| <script src="{{nodeModulePath}}/jsoneditor/dist/jsoneditor.min.js"></script> |
| <style> |
| html, body { |
| height: 100%; |
| box-sizing: border-box; |
| overflow: hidden; |
| } |
| body { |
| padding: 0 20px 20px; |
| } |
| .container { |
| width: 100%; |
| height: 100%; |
| display: flex; |
| flex-direction: column; |
| } |
| .editor { |
| flex: 1; |
| } |
| .footer { |
| margin-top: 10px; |
| min-height: 35px |
| } |
| .jsoneditor { |
| border: none; |
| } |
| .jsoneditor-menu { |
| background-color: var(--vscode-activityBar-background); |
| border: none; |
| } |
| .jsoneditor-repair { |
| display: none; |
| } |
| .jsoneditor-poweredBy { |
| display: none |
| } |
| .button { |
| font-size: 13px; |
| min-width: 140px; |
| height: 35px; |
| line-height: 35px; |
| cursor: pointer; |
| background: var(--vscode-button-background); |
| border: none; |
| color: var(--vscode-button-foreground); |
| } |
| .button:hover, .button:active { |
| background: var(--vscode-button-hoverBackground); |
| } |
| </style> |
| </head> |
| <body> |
| <div class="container"> |
| <div class="header"> |
| <h2>Invoke action: {{actionName}}</h2> |
| <p>The action will be invoked with the following runtime parameters.</p> |
| </div> |
| <div id="jsoneditor" class="editor"></div> |
| <div class="footer"> |
| <button class="button" onclick="invoke()">Invoke action</button> |
| </div> |
| </div> |
| <script> |
| const vscode = acquireVsCodeApi(); |
| |
| // create the editor |
| const container = document.getElementById("jsoneditor") |
| const editor = new JSONEditor(container, { |
| mode: "code", |
| indentation: 4, |
| enableSort: false, |
| enableTransform: false, |
| statusBar: false, |
| }); |
| |
| // add event listener |
| window.addEventListener('message', event => { |
| const message = event.data; |
| if (message.command === 'getParameters') { |
| editor.set(JSON.parse(message.params)); |
| } |
| }) |
| |
| function invoke() { |
| vscode.postMessage({ |
| command: 'invoke', |
| parameters: editor.getText() |
| }) |
| } |
| </script> |
| </body> |
| </html> |