import type { IssueMatrixRow } from "./issue-matrix-data";
import {
  issueMatrixText,
  type IssueMatrixLanguage,
} from "./issue-matrix-i18n";

export type IssueMatrixColumn = {
  key: keyof IssueMatrixRow;
  label: string;
  width: string;
  isLink?: boolean;
};

const ISSUE_MATRIX_COLUMN_BASE: Omit<IssueMatrixColumn, "label">[] = [
  { key: "id", width: "70px" },
  { key: "workingGroup", width: "240px" },
  { key: "issue", width: "300px" },
  { key: "category", width: "180px" },
  { key: "issueDescription", width: "400px" },
  { key: "recommendation", width: "400px" },
  { key: "governmentDecision", width: "420px" },
  { key: "status", width: "160px" },
  { key: "dateOfSolution", width: "190px" },
  { key: "primaryAgency", width: "180px" },
  { key: "meetingType", width: "180px" },
  { key: "wgMeetingDate", width: "190px" },
  { key: "secondAgency", width: "180px" },
  { key: "thirdAgency", width: "180px" },
  { key: "fourthAgency", width: "180px" },
  { key: "fifthAgency", width: "180px" },
  { key: "indicator", width: "340px" },
  { key: "sourceOfVerification", width: "280px" },
  {
    key: "verificationLink",
    width: "260px",
    isLink: true,
  },
  {
    key: "action",
    width: "120px",
    isLink: true,
  },
];

export function getIssueMatrixColumns(
  language: IssueMatrixLanguage
): IssueMatrixColumn[] {
  return ISSUE_MATRIX_COLUMN_BASE.map((column) => ({
    ...column,
    label:
      issueMatrixText[language].columns[column.key] ??
      issueMatrixText.en.columns[column.key] ??
      String(column.key),
  }));
}