in src/commands/showTriggerInfo.ts [26:91]
export async function showTriggerInfo(
trigger: WskTrigger,
context: vscode.ExtensionContext
): Promise<void> {
const panel = vscode.window.createWebviewPanel(
'showTriggerInfo',
`Trigger: ${trigger.label}`,
vscode.ViewColumn.One,
{
enableScripts: true,
}
);
const nodeModulesDiskPath = vscode.Uri.file(path.join(context.extensionPath, 'node_modules'));
const nodeModulePath = panel.webview.asWebviewUri(nodeModulesDiskPath);
const webviewTemplateDiskPath = vscode.Uri.file(WEBVIEW_TEMPLATE_PATH);
const webviewTemplatePath = panel.webview.asWebviewUri(webviewTemplateDiskPath);
const html = await fs.promises.readFile(
path.resolve(WEBVIEW_TEMPLATE_PATH, 'triggerInfo.html'),
'utf-8'
);
panel.webview.html = html
.replace(/{{nodeModulePath}}/gi, nodeModulePath.toString())
.replace(/{{webviewTemplatePath}}/gi, webviewTemplatePath.toString());
let triggerDesc: openwhisk.Trigger | null;
panel.webview.onDidReceiveMessage(async (message) => {
if (message.command === 'initialized') {
if (!triggerDesc) {
triggerDesc = await trigger.client.triggers.get(trigger.label);
}
let params = '';
let annotations = '';
if (triggerDesc.parameters) {
params = JSON.stringify(convertKeyValToObj(triggerDesc.parameters), null, 4);
}
if (triggerDesc.annotations) {
annotations = JSON.stringify(convertKeyValToObj(triggerDesc.annotations), null, 4);
}
panel.webview.postMessage({
command: 'getData',
name: triggerDesc.name,
params: params,
annotations: annotations,
rules: triggerDesc.rules,
});
}
if (message.command === 'update') {
const annotationObject = JSON.parse(message.annotations);
const parameterObject = JSON.parse(message.parameters);
await trigger.client.triggers.update({
name: trigger.label,
trigger: {
annotations: convertObjToKeyVal(annotationObject),
parameters: convertObjToKeyVal(parameterObject),
},
});
vscode.window.showInformationMessage('The trigger is updated successfully.');
triggerDesc = null;
}
});
}