Skip to content

Commit cbb435d

Browse files
committed
data.RecordFactory: setRecordData() #6260
1 parent bc85ded commit cbb435d

2 files changed

Lines changed: 29 additions & 22 deletions

File tree

src/data/RecordFactory.mjs

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -64,25 +64,19 @@ class RecordFactory extends Base {
6464
return this[dataSymbol][fieldName]
6565
},
6666
set(value) {
67-
let me = this,
68-
oldValue;
69-
70-
if (model.hasNestedFields) {
71-
oldValue = Neo.ns(fieldPath, false, me[dataSymbol])
72-
} else {
73-
oldValue = me[dataSymbol][fieldName]
74-
}
67+
let me = this,
68+
oldValue = me[dataSymbol][fieldName];
7569

7670
value = instance.parseRecordValue(me, field, value);
7771

7872
if (!Neo.isEqual(value, oldValue)) {
79-
this[dataSymbol][fieldName] = value;
73+
instance.setRecordData(fieldPath, model, me, value);
8074

8175
me._isModified = true;
8276
me._isModified = instance.isModified(me, model.trackModifiedFields);
8377

8478
instance.onRecordChange({
85-
fields: [{name: field.name, oldValue, value}],
79+
fields: [{name: fieldPath, oldValue, value}],
8680
model,
8781
record: me
8882
})
@@ -319,6 +313,27 @@ class RecordFactory extends Base {
319313
return value
320314
}
321315

316+
/**
317+
* @param {String} fieldName
318+
* @param {Neo.data.Model} model
319+
* @param {Record} record
320+
* @param {*} value
321+
* @protected
322+
*/
323+
setRecordData(fieldName, model, record, value) {
324+
if (model.hasNestedFields && fieldName.includes('.')) {
325+
let ns, nsArray;
326+
327+
nsArray = fieldName.split('.');
328+
fieldName = nsArray.pop();
329+
ns = Neo.ns(nsArray, true, record[dataSymbol]);
330+
331+
ns[fieldName] = value
332+
} else {
333+
record[dataSymbol][fieldName] = value
334+
}
335+
}
336+
322337
/**
323338
* @param {Neo.data.Model} model
324339
* @param {Object} record
@@ -327,8 +342,8 @@ class RecordFactory extends Base {
327342
* @param {Object[]} changedFields=[] Internal flag
328343
*/
329344
setRecordFields(model, record, fields, silent=false, changedFields=[]) {
330-
let {fieldsMap, hasNestedFields} = model,
331-
fieldExists, fieldName, ns, nsArray, oldValue;
345+
let {fieldsMap} = model,
346+
fieldExists, oldValue;
332347

333348
Object.entries(fields).forEach(([key, value]) => {
334349
fieldExists = fieldsMap.has(key);
@@ -342,15 +357,7 @@ class RecordFactory extends Base {
342357
value = instance.parseRecordValue(record, model.getField(key), value);
343358

344359
if (!Neo.isEqual(oldValue, value)) {
345-
if (hasNestedFields && key.includes('.')) {
346-
nsArray = key.split('.');
347-
fieldName = nsArray.pop();
348-
ns = Neo.ns(nsArray, true, record[dataSymbol]);
349-
350-
ns[fieldName] = value
351-
} else {
352-
record[dataSymbol][key] = value
353-
}
360+
instance.setRecordData(key, model, record, value);
354361

355362
record._isModified = true;
356363
changedFields.push({name: key, oldValue, value})

src/dialog/Base.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ class Dialog extends Panel {
414414
// rendered outside the visible area
415415
await me.render(true);
416416

417-
await me.timeout(20);
417+
await me.timeout(30);
418418

419419
let [dialogRect, bodyRect] = await me.getDomRect([me.id, 'document.body']);
420420

0 commit comments

Comments
 (0)