fix.ts
· 1.7 KiB · TypeScript
原始檔案
export const createFieldsForUpdate = (
columnField: Record<string, any>,
configOpt: CanonicalConfigOption,
oldFields: Record<string, any>,
allDerivedData: Record<string, DerivedData>
): SettingsExecute => {
let fields: Record<string, any> = {};
let dependencyFields: string[] = [];
Object.keys(columnField).forEach((k) => {
let column = configOpt.columns.find((c) => c.id === k);
if (!column) {
return;
}
if (configOpt.primary_key != column.id && column.ignored_for.includes('Update')) {
return;
}
let dispatchType = getDispatchType(columnField, column);
let referencedVariables = dispatchType.referenced_variables;
//logger.debug('editRow', 'Referenced variables', referencedVariables, k);
// Ignore unchanged fields that are not the primary key
if (isEqual(columnField[k], oldFields[k]) && k != configOpt.primary_key) {
return;
}
// Check if isCleared
if (allDerivedData[k]?.isCleared) {
fields[k] = null;
} else {
fields[k] = columnField[k];
}
// Add to dependencyFields
if (referencedVariables) {
dependencyFields.push(
...referencedVariables.filter((v) => !dependencyFields.includes(v))
);
}
});
logger.info('editRow', 'Dependency fields', dependencyFields);
// Add all dependency fields to the edit
dependencyFields.forEach((k) => {
let column = configOpt.columns.find((c) => c.id === k);
if (!column) {
return;
}
if (configOpt.primary_key != column.id && column.ignored_for.includes('Update')) {
return;
}
if (!columnField[k]) {
fields[k] = null;
} else {
fields[k] = columnField[k];
}
});
let payload: SettingsExecute = {
operation: 'Update',
module: module.id,
setting: configOpt.id,
fields
};
return payload;
}
1 | export const createFieldsForUpdate = ( |
2 | columnField: Record<string, any>, |
3 | configOpt: CanonicalConfigOption, |
4 | oldFields: Record<string, any>, |
5 | allDerivedData: Record<string, DerivedData> |
6 | ): SettingsExecute => { |
7 | let fields: Record<string, any> = {}; |
8 | let dependencyFields: string[] = []; |
9 | Object.keys(columnField).forEach((k) => { |
10 | let column = configOpt.columns.find((c) => c.id === k); |
11 | |
12 | if (!column) { |
13 | return; |
14 | } |
15 | |
16 | if (configOpt.primary_key != column.id && column.ignored_for.includes('Update')) { |
17 | return; |
18 | } |
19 | |
20 | let dispatchType = getDispatchType(columnField, column); |
21 | |
22 | let referencedVariables = dispatchType.referenced_variables; |
23 | |
24 | //logger.debug('editRow', 'Referenced variables', referencedVariables, k); |
25 | |
26 | // Ignore unchanged fields that are not the primary key |
27 | if (isEqual(columnField[k], oldFields[k]) && k != configOpt.primary_key) { |
28 | return; |
29 | } |
30 | |
31 | // Check if isCleared |
32 | if (allDerivedData[k]?.isCleared) { |
33 | fields[k] = null; |
34 | } else { |
35 | fields[k] = columnField[k]; |
36 | } |
37 | |
38 | // Add to dependencyFields |
39 | if (referencedVariables) { |
40 | dependencyFields.push( |
41 | ...referencedVariables.filter((v) => !dependencyFields.includes(v)) |
42 | ); |
43 | } |
44 | }); |
45 | |
46 | logger.info('editRow', 'Dependency fields', dependencyFields); |
47 | |
48 | // Add all dependency fields to the edit |
49 | dependencyFields.forEach((k) => { |
50 | let column = configOpt.columns.find((c) => c.id === k); |
51 | |
52 | if (!column) { |
53 | return; |
54 | } |
55 | |
56 | if (configOpt.primary_key != column.id && column.ignored_for.includes('Update')) { |
57 | return; |
58 | } |
59 | |
60 | if (!columnField[k]) { |
61 | fields[k] = null; |
62 | } else { |
63 | fields[k] = columnField[k]; |
64 | } |
65 | }); |
66 | |
67 | let payload: SettingsExecute = { |
68 | operation: 'Update', |
69 | module: module.id, |
70 | setting: configOpt.id, |
71 | fields |
72 | }; |
73 | |
74 | return payload; |
75 | } |
76 |