fix: отображение последнего заполненного значения в дереве справочника
This commit is contained in:
@@ -27,10 +27,17 @@ interface TreeGroup {
|
||||
|
||||
function getRowLabel(row: DataTableRow, displayColumns: number[]): string {
|
||||
const values = Array.isArray(row.values) ? row.values : [];
|
||||
const parts = displayColumns
|
||||
.map((ci) => String(values[ci] ?? '').trim())
|
||||
.filter(Boolean);
|
||||
return parts.length > 0 ? parts.join(' ') : '(без названия)';
|
||||
// Последнее заполненное значение из displayColumns
|
||||
for (let i = displayColumns.length - 1; i >= 0; i--) {
|
||||
const val = String(values[displayColumns[i]] ?? '').trim();
|
||||
if (val) return val;
|
||||
}
|
||||
// Fallback: первая заполненная колонка
|
||||
for (const val of values) {
|
||||
const str = String(val ?? '').trim();
|
||||
if (str) return str;
|
||||
}
|
||||
return '(без названия)';
|
||||
}
|
||||
|
||||
function buildTree(
|
||||
|
||||
@@ -1832,10 +1832,14 @@ export default function TableEditor() {
|
||||
) : (
|
||||
displayRows.map((row) => {
|
||||
const displayCols = treeDisplayColumns.length > 0 ? treeDisplayColumns : [0];
|
||||
const label = displayCols
|
||||
.map((ci) => String(row.values[ci] ?? '').trim())
|
||||
.filter(Boolean)
|
||||
.join(' ') || `Строка ${row.id}`;
|
||||
let label = '';
|
||||
for (let i = displayCols.length - 1; i >= 0; i--) {
|
||||
const val = String(row.values[displayCols[i]] ?? '').trim();
|
||||
if (val) { label = val; break; }
|
||||
}
|
||||
if (!label) {
|
||||
label = row.values.find((v) => String(v ?? '').trim()) || `Строка ${row.id}`;
|
||||
}
|
||||
return (
|
||||
<label key={row.id} className="flex items-center gap-2 p-1.5 hover:bg-muted rounded cursor-pointer">
|
||||
<Checkbox
|
||||
|
||||
@@ -530,10 +530,17 @@ export function registerDataTableRoutes(app: import("express").Express): void {
|
||||
|
||||
const getRowLabel = (row: typeof rows[number]): string => {
|
||||
const values = Array.isArray(row.values) ? row.values : [];
|
||||
const parts = treeDisplayColumns
|
||||
.map((ci) => String(values[ci] ?? '').trim())
|
||||
.filter(Boolean);
|
||||
return parts.length > 0 ? parts.join(' ') : '(без названия)';
|
||||
// Последнее заполненное значение из treeDisplayColumns
|
||||
for (let i = treeDisplayColumns.length - 1; i >= 0; i--) {
|
||||
const val = String(values[treeDisplayColumns[i]] ?? '').trim();
|
||||
if (val) return val;
|
||||
}
|
||||
// Fallback: первая заполненная колонка
|
||||
for (const val of values) {
|
||||
const str = String(val ?? '').trim();
|
||||
if (str) return str;
|
||||
}
|
||||
return '(без названия)';
|
||||
};
|
||||
|
||||
type TreeNode =
|
||||
|
||||
Reference in New Issue
Block a user