import {TableData} from 'app/common/TableData';
import {UIRowId} from 'app/common/UIRowId';

/**
 * Return whether a table (identified by the rowId of its metadata record) should
 * normally be hidden from the user (e.g. as an option in the page-widget picker).
 */
export function isHiddenTable(tablesData: TableData, tableRef: UIRowId): boolean {
  const tableId = tablesData.getValue(tableRef, 'tableId') as string|undefined;
  // The `!tableId` check covers the case of censored tables (see isTableCensored() below).
  return !tableId || isSummaryTable(tablesData, tableRef) || tableId.startsWith('GristHidden_');
}

/**
 * Return whether a table (identified by the rowId of its metadata record) is a
 * summary table.
 */
export function isSummaryTable(tablesData: TableData, tableRef: UIRowId): boolean {
  return tablesData.getValue(tableRef, 'summarySourceTable') !== 0;
}

// Check if a table record (from _grist_Tables) is censored.
// Metadata records get censored by clearing certain of their fields, so it's expected that a
// record may exist even though various code should consider it as hidden.
export function isTableCensored(tablesData: TableData, tableRef: UIRowId): boolean {
  const tableId = tablesData.getValue(tableRef, 'tableId');
  return !tableId;
}
