Fixes in value revert logic
This commit is contained in:
@@ -178,7 +178,7 @@ class Changeset
|
|||||||
*/
|
*/
|
||||||
public function transformRow($row, $decorate)
|
public function transformRow($row, $decorate)
|
||||||
{
|
{
|
||||||
if ($row instanceof Row) $row = (object)$row->getAttributes();
|
if ($row instanceof Row) $row = (object)$row->getAttributes(); // row must be in the rowData() format
|
||||||
|
|
||||||
if ($decorate) {
|
if ($decorate) {
|
||||||
$row->_remove = false;
|
$row->_remove = false;
|
||||||
@@ -220,7 +220,12 @@ class Changeset
|
|||||||
|
|
||||||
if ($decorate) {
|
if ($decorate) {
|
||||||
$row->_changed = array_keys($newVals);
|
$row->_changed = array_keys($newVals);
|
||||||
$row->_orig = array_only((array)$row, $row->_changed);
|
$row->_orig = array_diff((array)$row, []);
|
||||||
|
unset($row->_orig['_id']);
|
||||||
|
unset($row->_orig['_new']);
|
||||||
|
unset($row->_orig['_remove']);
|
||||||
|
unset($row->_orig['_changed']);
|
||||||
|
unset($row->_orig['_orig']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$row = (object)array_merge((array)$row, $newVals);
|
$row = (object)array_merge((array)$row, $newVals);
|
||||||
@@ -231,6 +236,7 @@ class Changeset
|
|||||||
if (!$decorate) {
|
if (!$decorate) {
|
||||||
foreach ($this->removedColumns as $colId) {
|
foreach ($this->removedColumns as $colId) {
|
||||||
unset($row->$colId);
|
unset($row->$colId);
|
||||||
|
unset($row->_orig[$colId]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -456,9 +462,10 @@ class Changeset
|
|||||||
|
|
||||||
$col = $cols[$colId];
|
$col = $cols[$colId];
|
||||||
$value = $col->cast($value);
|
$value = $col->cast($value);
|
||||||
$origValue = $col->cast(isset($origRow->$colId) ? $origRow->$colId : null);
|
$origValue = isset($origRow->$colId) ? $origRow->$colId : null;
|
||||||
|
$origValueCast = $col->cast($origValue);
|
||||||
|
|
||||||
if ($value !== $origValue) {
|
if ($value !== $origValueCast && !($origValue===null&&$value==="")) { // fix for null in numeric cols being forcibly populated and sticking as change
|
||||||
$updateObj[$colId] = $value;
|
$updateObj[$colId] = $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -290,9 +290,17 @@ Rows are identified by row._id, columns by col.id
|
|||||||
let wasDirty = this.isRowChanged(row, true)
|
let wasDirty = this.isRowChanged(row, true)
|
||||||
|
|
||||||
let changes = []
|
let changes = []
|
||||||
_.each(row._orig, (v, k) => {
|
_.each(this.columns, (col) => {
|
||||||
if (row[k] != v) {
|
let val = row[col.id];
|
||||||
changes.push(k)
|
let orig = row._orig[col.id];
|
||||||
|
if (_.isUndefined(orig)) {
|
||||||
|
// null in DB
|
||||||
|
if (val !== '' && val !== 0) {
|
||||||
|
changes.push(col.id)
|
||||||
|
console.log('is dirty', JSON.stringify(val))
|
||||||
|
}
|
||||||
|
} else if (val != orig) {
|
||||||
|
changes.push(col.id)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user