mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-09 23:49:27 +08:00
refactor: tree table is not enabled by default (#4001)
* refactor: table block do not enable trees by default * fix: bug * fix: bug * fix: bug
This commit is contained in:
parent
de935d54b6
commit
82df150c30
@ -50,7 +50,7 @@ const InternalTableBlockProvider = (props: Props) => {
|
|||||||
const allIncludesChildren = useMemo(() => {
|
const allIncludesChildren = useMemo(() => {
|
||||||
const { treeTable } = fieldSchema?.['x-decorator-props'] || {};
|
const { treeTable } = fieldSchema?.['x-decorator-props'] || {};
|
||||||
const data = service?.data?.data;
|
const data = service?.data?.data;
|
||||||
if (treeTable !== false) {
|
if (treeTable) {
|
||||||
const keys = getIdsWithChildren(data);
|
const keys = getIdsWithChildren(data);
|
||||||
return keys;
|
return keys;
|
||||||
}
|
}
|
||||||
@ -120,13 +120,14 @@ export const TableBlockProvider = withDynamicSchemaProps((props) => {
|
|||||||
const params = useTableBlockParamsCompat(props);
|
const params = useTableBlockParamsCompat(props);
|
||||||
|
|
||||||
let childrenColumnName = 'children';
|
let childrenColumnName = 'children';
|
||||||
if (collection?.tree && treeTable !== false) {
|
|
||||||
|
if (treeTable) {
|
||||||
if (resourceName?.includes('.')) {
|
if (resourceName?.includes('.')) {
|
||||||
const f = getCollectionField(resourceName);
|
const f = getCollectionField(resourceName);
|
||||||
if (f?.treeChildren) {
|
if (f?.treeChildren) {
|
||||||
childrenColumnName = f.name;
|
childrenColumnName = f.name;
|
||||||
params['tree'] = true;
|
|
||||||
}
|
}
|
||||||
|
params['tree'] = true;
|
||||||
} else {
|
} else {
|
||||||
const f = collection.fields.find((f) => f.treeChildren);
|
const f = collection.fields.find((f) => f.treeChildren);
|
||||||
if (f) {
|
if (f) {
|
||||||
|
@ -161,7 +161,7 @@ export const TableSelectorProvider = withDynamicSchemaProps((props: TableSelecto
|
|||||||
if (props.dragSort) {
|
if (props.dragSort) {
|
||||||
params['sort'] = ['sort'];
|
params['sort'] = ['sort'];
|
||||||
}
|
}
|
||||||
if (collectionField?.target === collectionField?.collectionName && collection?.tree && treeTable !== false) {
|
if (collectionField?.target === collectionField?.collectionName && collection?.tree && treeTable) {
|
||||||
params['tree'] = true;
|
params['tree'] = true;
|
||||||
if (collectionFieldSchema.name === 'parent') {
|
if (collectionFieldSchema.name === 'parent') {
|
||||||
params.filter = {
|
params.filter = {
|
||||||
|
@ -77,7 +77,7 @@ export const tableSelectorBlockSettings = new SchemaSettings({
|
|||||||
return {
|
return {
|
||||||
title: t('Tree table'),
|
title: t('Tree table'),
|
||||||
defaultChecked: true,
|
defaultChecked: true,
|
||||||
checked: field.decoratorProps.treeTable !== false,
|
checked: field.decoratorProps.treeTable,
|
||||||
onChange: (flag) => {
|
onChange: (flag) => {
|
||||||
field.form.clearFormGraph(`${field.address}.*`);
|
field.form.clearFormGraph(`${field.address}.*`);
|
||||||
field.decoratorProps.treeTable = flag;
|
field.decoratorProps.treeTable = flag;
|
||||||
|
@ -188,7 +188,7 @@ const commonOptions = {
|
|||||||
const fieldSchema = useFieldSchema();
|
const fieldSchema = useFieldSchema();
|
||||||
const collection = useCollection_deprecated();
|
const collection = useCollection_deprecated();
|
||||||
const { treeTable } = fieldSchema?.parent?.parent['x-decorator-props'] || {};
|
const { treeTable } = fieldSchema?.parent?.parent['x-decorator-props'] || {};
|
||||||
return collection.tree && treeTable !== false;
|
return collection.tree && treeTable;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -80,7 +80,7 @@ export const tableActionInitializers_deprecated = new CompatibleSchemaInitialize
|
|||||||
const schema = useFieldSchema();
|
const schema = useFieldSchema();
|
||||||
const collection = useCollection_deprecated();
|
const collection = useCollection_deprecated();
|
||||||
const { treeTable } = schema?.parent?.['x-decorator-props'] || {};
|
const { treeTable } = schema?.parent?.['x-decorator-props'] || {};
|
||||||
return collection.tree && treeTable !== false;
|
return collection.tree && treeTable;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -195,7 +195,7 @@ export const tableActionInitializers = new CompatibleSchemaInitializer(
|
|||||||
const schema = useFieldSchema();
|
const schema = useFieldSchema();
|
||||||
const collection = useCollection_deprecated();
|
const collection = useCollection_deprecated();
|
||||||
const { treeTable } = schema?.parent?.['x-decorator-props'] || {};
|
const { treeTable } = schema?.parent?.['x-decorator-props'] || {};
|
||||||
return collection.tree && treeTable !== false;
|
return collection.tree && treeTable;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -760,6 +760,7 @@ test.describe('actions schema settings', () => {
|
|||||||
test('supported options', async ({ page, mockPage, mockRecord }) => {
|
test('supported options', async ({ page, mockPage, mockRecord }) => {
|
||||||
const nocoPage = await mockPage(oneEmptyTableWithTreeCollection).waitForInit();
|
const nocoPage = await mockPage(oneEmptyTableWithTreeCollection).waitForInit();
|
||||||
await nocoPage.goto();
|
await nocoPage.goto();
|
||||||
|
await page.getByLabel('block-item-CardItem-treeCollection-table').hover();
|
||||||
|
|
||||||
// 添加一行数据
|
// 添加一行数据
|
||||||
// TODO: 使用 mockRecord 为 tree 表添加一行数据无效
|
// TODO: 使用 mockRecord 为 tree 表添加一行数据无效
|
||||||
@ -774,6 +775,9 @@ test.describe('actions schema settings', () => {
|
|||||||
await page.mouse.move(300, 0);
|
await page.mouse.move(300, 0);
|
||||||
await page.getByRole('button', { name: 'Submit' }).click();
|
await page.getByRole('button', { name: 'Submit' }).click();
|
||||||
|
|
||||||
|
await page.getByLabel('designer-schema-settings-CardItem-TableBlockDesigner-treeCollection').hover();
|
||||||
|
await page.getByRole('menuitem', { name: 'Tree table' }).click();
|
||||||
|
|
||||||
// 添加 add child 按钮
|
// 添加 add child 按钮
|
||||||
await page.getByRole('button', { name: 'Actions', exact: true }).hover();
|
await page.getByRole('button', { name: 'Actions', exact: true }).hover();
|
||||||
await page.getByLabel('designer-schema-settings-TableV2.Column-TableV2.ActionColumnDesigner-tree').hover();
|
await page.getByLabel('designer-schema-settings-TableV2.Column-TableV2.ActionColumnDesigner-tree').hover();
|
||||||
|
@ -32,9 +32,10 @@ test.describe('tree table block schema settings', () => {
|
|||||||
// await expect(page.getByLabel('Expand row').first()).toBeVisible({ timeout: 1000 * 60 });
|
// await expect(page.getByLabel('Expand row').first()).toBeVisible({ timeout: 1000 * 60 });
|
||||||
|
|
||||||
await showSettingsMenu(page);
|
await showSettingsMenu(page);
|
||||||
await expect(page.getByRole('menuitem', { name: 'Tree table' }).getByRole('switch')).toBeChecked();
|
//默认不启用
|
||||||
await page.getByRole('menuitem', { name: 'Tree table' }).click();
|
|
||||||
await expect(page.getByRole('menuitem', { name: 'Tree table' }).getByRole('switch')).not.toBeChecked();
|
await expect(page.getByRole('menuitem', { name: 'Tree table' }).getByRole('switch')).not.toBeChecked();
|
||||||
|
await page.getByRole('menuitem', { name: 'Tree table' }).click();
|
||||||
|
await expect(page.getByRole('menuitem', { name: 'Tree table' }).getByRole('switch')).toBeChecked();
|
||||||
// await expect(page.getByLabel('Expand row')).toBeHidden();
|
// await expect(page.getByLabel('Expand row')).toBeHidden();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -50,7 +50,7 @@ export const tableBlockSettings = new SchemaSettings({
|
|||||||
return {
|
return {
|
||||||
title: t('Tree table'),
|
title: t('Tree table'),
|
||||||
defaultChecked: true,
|
defaultChecked: true,
|
||||||
checked: treeCollection ? field.decoratorProps.treeTable !== false : false,
|
checked: treeCollection ? field.decoratorProps.treeTable : false,
|
||||||
onChange: (flag) => {
|
onChange: (flag) => {
|
||||||
field.decoratorProps.treeTable = flag;
|
field.decoratorProps.treeTable = flag;
|
||||||
fieldSchema['x-decorator-props'].treeTable = flag;
|
fieldSchema['x-decorator-props'].treeTable = flag;
|
||||||
|
@ -126,7 +126,7 @@ export const TableBlockDesigner = () => {
|
|||||||
<SchemaSettingsSwitchItem
|
<SchemaSettingsSwitchItem
|
||||||
title={t('Tree table')}
|
title={t('Tree table')}
|
||||||
defaultChecked={true}
|
defaultChecked={true}
|
||||||
checked={treeCollection ? field.decoratorProps.treeTable !== false : false}
|
checked={treeCollection ? field.decoratorProps.treeTable : false}
|
||||||
onChange={(flag) => {
|
onChange={(flag) => {
|
||||||
field.decoratorProps.treeTable = flag;
|
field.decoratorProps.treeTable = flag;
|
||||||
fieldSchema['x-decorator-props'].treeTable = flag;
|
fieldSchema['x-decorator-props'].treeTable = flag;
|
||||||
|
@ -110,7 +110,7 @@ export const TableSelectorDesigner = () => {
|
|||||||
<SchemaSettingsSwitchItem
|
<SchemaSettingsSwitchItem
|
||||||
title={t('Tree table')}
|
title={t('Tree table')}
|
||||||
defaultChecked={true}
|
defaultChecked={true}
|
||||||
checked={field.decoratorProps.treeTable !== false}
|
checked={field.decoratorProps.treeTable}
|
||||||
onChange={(flag) => {
|
onChange={(flag) => {
|
||||||
field.form.clearFormGraph(`${field.address}.*`);
|
field.form.clearFormGraph(`${field.address}.*`);
|
||||||
field.decoratorProps.treeTable = flag;
|
field.decoratorProps.treeTable = flag;
|
||||||
|
@ -78,7 +78,7 @@ export const GanttActionInitializers_deprecated = new CompatibleSchemaInitialize
|
|||||||
const schema = useFieldSchema();
|
const schema = useFieldSchema();
|
||||||
const collection = useCollection_deprecated();
|
const collection = useCollection_deprecated();
|
||||||
const { treeTable } = schema?.parent?.['x-decorator-props'] || {};
|
const { treeTable } = schema?.parent?.['x-decorator-props'] || {};
|
||||||
return collection.tree && treeTable !== false;
|
return collection.tree && treeTable;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -193,7 +193,7 @@ export const ganttActionInitializers = new CompatibleSchemaInitializer(
|
|||||||
const schema = useFieldSchema();
|
const schema = useFieldSchema();
|
||||||
const collection = useCollection_deprecated();
|
const collection = useCollection_deprecated();
|
||||||
const { treeTable } = schema?.parent?.['x-decorator-props'] || {};
|
const { treeTable } = schema?.parent?.['x-decorator-props'] || {};
|
||||||
return collection.tree && treeTable !== false;
|
return collection.tree && treeTable;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user