rootspring a révisé ce gist . Aller à la révision
1 file changed, 75 insertions
fix.ts(fichier créé)
@@ -0,0 +1,75 @@ | |||
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 | + | } |
Plus récent
Plus ancien