import { createListPageModule } from '../core/app-list-page-module.js';
import { escapeHtml } from './app-list-utils.js';
createListPageModule({
configId: 'admin-tenants-index',
moduleId: 'admin-tenants-index',
missingGridMessage: 'Tenants grid init failed: Grid.js missing',
initErrorMessage: 'Tenants grid init failed',
setup: ({ config, gridjs, appBase, initListPage }) => {
const filterSchema = config.filterSchema ?? [];
const filterChipMeta = config.filterChipMeta ?? [];
const labels = config.labels ?? {};
const tenantUuidIndex = 2;
const initialsForRow = (row) => {
const descriptionCell = row?.cells?.[0]?.data;
const label = typeof descriptionCell === 'object' && descriptionCell !== null
? String(descriptionCell.label ?? '')
: String(descriptionCell ?? '');
const initial = label.trim().charAt(0).toUpperCase();
return initial || '?';
};
const { gridConfig } = initListPage({
grid: {
gridjs,
container: '#tenants-grid',
dataUrl: 'admin/tenants/data',
appBase,
columns: [
{
name: labels.tenant || 'Tenant',
sort: true,
width: '75%',
formatter: (cell, row) => {
const hasAvatar = cell?.has_avatar ? 1 : 0;
const uuid = encodeURIComponent(String(cell?.uuid ?? ''));
let avatarHtml = '';
if (hasAvatar && uuid) {
const src = new URL(`admin/tenants/avatar-file?uuid=${uuid}&size=64`, appBase).toString();
avatarHtml = ``;
} else {
const initials = escapeHtml(initialsForRow(row));
avatarHtml = `${initials}`;
}
const nameText = escapeHtml(String(cell?.label ?? ''));
return gridjs.html(
`