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:
katherinehhh 2024-04-11 14:10:30 +08:00 committed by GitHub
parent de935d54b6
commit 82df150c30
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 21 additions and 15 deletions

View File

@ -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) {

View File

@ -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 = {

View File

@ -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;

View File

@ -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;
}, },
}, },
], ],

View File

@ -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;
}, },
}, },
], ],

View File

@ -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();

View File

@ -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();
}); });
}); });

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;
}, },
}, },
], ],