fix(plugin-workflow): fix incorrectly schema reaction (#4661)

* fix(plugin-workflow): fix incorrectly schema reaction

* fix(plugin-workflow): add migration
This commit is contained in:
Junyi 2024-06-14 08:49:36 +08:00 committed by GitHub
parent a49d958086
commit c747ea65c4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 57 additions and 8 deletions

View File

@ -69,6 +69,9 @@ export default class extends Instruction {
}, },
], ],
}, },
usingAssignFormSchema: {
type: 'boolean',
},
assignFormSchema: { assignFormSchema: {
type: 'object', type: 'object',
title: '{{t("Fields values")}}', title: '{{t("Fields values")}}',
@ -76,10 +79,10 @@ export default class extends Instruction {
'x-component': 'AssignedFieldsFormSchemaConfig', 'x-component': 'AssignedFieldsFormSchemaConfig',
'x-reactions': [ 'x-reactions': [
{ {
dependencies: ['collection'], dependencies: ['collection', 'usingAssignFormSchema'],
fulfill: { fulfill: {
state: { state: {
display: '{{($deps[0] && $self.value) ? "visible" : "hidden"}}', display: '{{($deps[0] && $deps[1]) ? "visible" : "hidden"}}',
}, },
}, },
}, },
@ -92,7 +95,7 @@ export default class extends Instruction {
...values, ...values,
'x-reactions': [ 'x-reactions': [
{ {
dependencies: ['collection', 'assignFormSchema'], dependencies: ['collection', 'usingAssignFormSchema'],
fulfill: { fulfill: {
state: { state: {
display: '{{($deps[0] && !$deps[1]) ? "visible" : "hidden"}}', display: '{{($deps[0] && !$deps[1]) ? "visible" : "hidden"}}',
@ -107,6 +110,7 @@ export default class extends Instruction {
}; };
createDefaultConfig() { createDefaultConfig() {
return { return {
usingAssignFormSchema: true,
assignFormSchema: {}, assignFormSchema: {},
}; };
} }

View File

@ -95,7 +95,7 @@ export default class extends Instruction {
...values, ...values,
'x-reactions': [ 'x-reactions': [
{ {
dependencies: ['collection', 'assignFormSchema'], dependencies: ['collection', 'usingAssignFormSchema'],
fulfill: { fulfill: {
state: { state: {
display: '{{($deps[0] && !$deps[1]) ? "visible" : "hidden"}}', display: '{{($deps[0] && !$deps[1]) ? "visible" : "hidden"}}',
@ -106,6 +106,9 @@ export default class extends Instruction {
}, },
}, },
}, },
usingAssignFormSchema: {
type: 'boolean',
},
assignFormSchema: { assignFormSchema: {
type: 'object', type: 'object',
title: '{{t("Fields values")}}', title: '{{t("Fields values")}}',
@ -113,10 +116,10 @@ export default class extends Instruction {
'x-component': 'AssignedFieldsFormSchemaConfig', 'x-component': 'AssignedFieldsFormSchemaConfig',
'x-reactions': [ 'x-reactions': [
{ {
dependencies: ['collection'], dependencies: ['collection', 'usingAssignFormSchema'],
fulfill: { fulfill: {
state: { state: {
display: '{{($deps[0] && $self.value) ? "visible" : "hidden"}}', display: '{{($deps[0] && $deps[1]) ? "visible" : "hidden"}}',
}, },
}, },
}, },
@ -125,7 +128,8 @@ export default class extends Instruction {
}; };
createDefaultConfig() { createDefaultConfig() {
return { return {
assignForm: uid(), usingAssignFormSchema: true,
assignFormSchema: {},
}; };
} }
scope = { scope = {

View File

@ -264,7 +264,6 @@ function getNormalizedFields(collectionName, { compile, getCollectionFields }) {
const [dataSourceName, collection] = parseCollectionName(collectionName); const [dataSourceName, collection] = parseCollectionName(collectionName);
// NOTE: `dataSourceName` will be ignored in new version // NOTE: `dataSourceName` will be ignored in new version
const fields = getCollectionFields(collection, dataSourceName); const fields = getCollectionFields(collection, dataSourceName);
console.log('--------------', fields);
const fkFields: any[] = []; const fkFields: any[] = [];
const result: any[] = []; const result: any[] = [];
fields.forEach((field) => { fields.forEach((field) => {

View File

@ -0,0 +1,42 @@
/**
* This file is part of the NocoBase (R) project.
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
* Authors: NocoBase Team.
*
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
* For more information, please refer to: https://www.nocobase.com/agreement.
*/
import { Op } from '@nocobase/database';
import { Migration } from '@nocobase/server';
export default class extends Migration {
on = 'afterSync';
async up() {
const { db } = this.context;
const NodeRepo = db.getRepository('flow_nodes');
await db.sequelize.transaction(async (transaction) => {
const nodes = await NodeRepo.find({
filter: {
type: {
[Op.or]: ['create', 'update'],
},
},
});
for (const node of nodes) {
if (node.usingAssignFormSchema || !node.assignFormSchema) {
continue;
}
node.set({
config: { ...node.config, usingAssignFormSchema: true },
});
node.changed('config');
await node.save({
silent: true,
transaction,
});
}
});
}
}