Merge pull request #37 from nathonius/feat/28/default-columns

 feat: #28 Add default columns for simple queries
This commit is contained in:
Nathan 2024-02-12 23:32:05 -05:00 committed by GitHub
commit 89954b11eb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 19 additions and 7 deletions

View file

@ -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]: [],
};

View file

@ -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<T extends { items: unknown[] } | unknown[]>(
) {
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);