From db2353934e8ba6708bff7f1f6981ebdf0cbb0bf0 Mon Sep 17 00:00:00 2001 From: Daisuke Mino Date: Mon, 11 Mar 2024 01:43:00 +0900 Subject: [PATCH] Add copy field name to context in tree --- README.md | 8 ++++++++ package.json | 9 +++++++++ packages/extension/src/index.ts | 5 ++++- packages/extension/src/tree.ts | 5 +++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index eb6c057..75f515b 100644 --- a/README.md +++ b/README.md @@ -260,6 +260,14 @@ Preview the selected table in VS Code Preview the selected table in Google Cloud Console +### BigQuery Runner: Copy Field Name + +|ID| +|---| +|bigqueryRunner.copyFieldName| + +Copy the selected field name to the clipboard + ### BigQuery Runner: Clear Parameters |ID| diff --git a/package.json b/package.json index fb59201..f1ccafc 100644 --- a/package.json +++ b/package.json @@ -160,6 +160,11 @@ "title": "BigQuery Runner: Preview Table on Remote", "description": "Preview the selected table in Google Cloud Console" }, + { + "command": "bigqueryRunner.copyFieldName", + "title": "BigQuery Runner: Copy Field Name", + "description": "Copy the selected field name to the clipboard" + }, { "command": "bigqueryRunner.clearParams", "title": "BigQuery Runner: Clear Parameters", @@ -216,6 +221,10 @@ { "command": "bigqueryRunner.previewTableOnRemote", "when": "view == bigqueryRunner.resources && viewItem == table" + }, + { + "command": "bigqueryRunner.copyFieldName", + "when": "view == bigqueryRunner.resources && viewItem == field" } ] }, diff --git a/packages/extension/src/index.ts b/packages/extension/src/index.ts index e8d5733..d10b4c5 100644 --- a/packages/extension/src/index.ts +++ b/packages/extension/src/index.ts @@ -31,7 +31,7 @@ import { createStatusBarItemCreator, createStatusManager, } from "./statusManager"; -import type { TableElement } from "./tree"; +import type { FieldElement, TableElement } from "./tree"; import { createTree } from "./tree"; import { showError, showInformation } from "./window"; @@ -196,6 +196,9 @@ export async function activate(ctx: ExtensionContext) { [`${section}.previewTableOnRemote`]: async (element: TableElement) => { await tree.previewTableOnRemote(element); }, + [`${section}.copyFieldName`]: async (element: FieldElement) => { + await tree.copyFieldName(element); + }, [`${section}.clearParams`]: async () => { if (!window.activeTextEditor) { throw new Error(`no active text editor`); diff --git a/packages/extension/src/tree.ts b/packages/extension/src/tree.ts index a54e10d..d765943 100644 --- a/packages/extension/src/tree.ts +++ b/packages/extension/src/tree.ts @@ -73,6 +73,7 @@ export const createTree = ({ copyTableId(element: TableElement): Promise; previewTableInVSCode(element: TableElement): Promise; previewTableOnRemote(element: TableElement): Promise; + copyFieldName(element: FieldElement): Promise; } => { const clients = new Map(); const emitter = new EventEmitter(); @@ -282,6 +283,10 @@ export const createTree = ({ ); }, + async copyFieldName(element: FieldElement) { + await env.clipboard.writeText(element.ref.fieldId); + }, + dispose() { clients.clear(); emitter.dispose();