From 732112feb5fa53b271ac4f1460a304357227f374 Mon Sep 17 00:00:00 2001 From: Nathan Smith Date: Tue, 13 Feb 2024 04:30:43 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20#28=20Add=20default=20colum?= =?UTF-8?q?ns=20for=20simple=20queries?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Not configurable for the moment, that can come later. Closes: #28 --- src/query/column/defaults.ts | 7 +++++++ src/query/output.ts | 19 ++++++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) create mode 100644 src/query/column/defaults.ts diff --git a/src/query/column/defaults.ts b/src/query/column/defaults.ts new file mode 100644 index 0000000..ffe5c9a --- /dev/null +++ b/src/query/column/defaults.ts @@ -0,0 +1,7 @@ +import { QueryType } from "../params"; + +export const DEFAULT_COLUMNS = { + [QueryType.Issue]: ["number", "title", "author", "created", "status"], + [QueryType.PullRequest]: ["number", "title", "author", "created", "status"], + [QueryType.Repo]: [], +}; diff --git a/src/query/output.ts b/src/query/output.ts index 5a0bc05..4aae915 100644 --- a/src/query/output.ts +++ b/src/query/output.ts @@ -1,12 +1,13 @@ import { getProp, titleCase } from "src/util"; import type { BaseParams } from "./params"; -import { QueryType } from "./params"; -import { PullRequestColumns } from "./column/pull-request"; +import { DEFAULT_COLUMNS } from "./column/defaults"; import { IssueColumns } from "./column/issue"; +import { PullRequestColumns } from "./column/pull-request"; +import { QueryType } from "./params"; import { RepoColumns } from "./column/repo"; -const columns = { +const ALL_COLUMNS = { [QueryType.PullRequest]: PullRequestColumns, [QueryType.Issue]: IssueColumns, [QueryType.Repo]: RepoColumns, @@ -19,18 +20,22 @@ export async function renderTable( ) { const table = el.createEl("table", { cls: "github-link-table" }); const thead = table.createEl("thead"); - for (const col of params.columns) { + let columns = params.columns; + if (!columns || columns.length === 0) { + columns = DEFAULT_COLUMNS[params.queryType]; + } + for (const col of columns) { const th = thead.createEl("th"); // Get predefined header if available - th.setText(columns[params.queryType][col]?.header ?? titleCase(col)); + th.setText(ALL_COLUMNS[params.queryType][col]?.header ?? titleCase(col)); } const tbody = table.createEl("tbody"); const items = Array.isArray(result) ? result : result.items; for (const row of items) { const tr = tbody.createEl("tr"); - for (const col of params.columns) { + for (const col of columns) { const cell = tr.createEl("td"); - const renderer = columns[params.queryType][col]; + const renderer = ALL_COLUMNS[params.queryType][col]; if (renderer) { // eslint-disable-next-line @typescript-eslint/no-explicit-any renderer.cell(row as any, cell);