mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2026-08-13 06:24:45 -05:00
Improve handling of nulls and default values in the data editor. Fixes #2257
This commit is contained in:
committed by
Dave Page
parent
05787fdba9
commit
4f9628ed43
@@ -110,7 +110,12 @@
|
||||
|
||||
// When text editor opens
|
||||
this.loadValue = function (item) {
|
||||
if (item[args.column.pos] === "") {
|
||||
var col = args.column;
|
||||
|
||||
if (_.isUndefined(item[args.column.pos]) && col.has_default_val) {
|
||||
$input.val("");
|
||||
}
|
||||
else if (item[args.column.pos] === "") {
|
||||
$input.val("''");
|
||||
}
|
||||
else {
|
||||
@@ -145,7 +150,14 @@
|
||||
};
|
||||
|
||||
this.isValueChanged = function () {
|
||||
return (!($input.val() == "" && defaultValue == null)) && ($input.val() != defaultValue);
|
||||
// Use _.isNull(value) for comparison for null instead of
|
||||
// defaultValue == null, because it returns true for undefined value.
|
||||
if ($input.val() == "" && _.isUndefined(defaultValue)) {
|
||||
return false;
|
||||
} else {
|
||||
return (!($input.val() == "" && _.isNull(defaultValue))) &&
|
||||
($input.val() != defaultValue);
|
||||
}
|
||||
};
|
||||
|
||||
this.validate = function () {
|
||||
@@ -253,7 +265,7 @@
|
||||
|
||||
this.loadValue = function (item) {
|
||||
var data = defaultValue = item[args.column.pos];
|
||||
if (typeof data === "object" && !Array.isArray(data)) {
|
||||
if (data && typeof data === "object" && !Array.isArray(data)) {
|
||||
data = JSON.stringify(data);
|
||||
} else if (Array.isArray(data)) {
|
||||
var temp = [];
|
||||
@@ -282,7 +294,11 @@
|
||||
};
|
||||
|
||||
this.isValueChanged = function () {
|
||||
return (!($input.val() == "" && defaultValue == null)) && ($input.val() != defaultValue);
|
||||
if ($input.val() == "" && _.isUndefined(defaultValue)) {
|
||||
return false;
|
||||
} else {
|
||||
return (!($input.val() == "" && _.isNull(defaultValue))) && ($input.val() != defaultValue);
|
||||
}
|
||||
};
|
||||
|
||||
this.validate = function () {
|
||||
@@ -498,6 +514,12 @@
|
||||
};
|
||||
|
||||
this.validate = function () {
|
||||
if (args.column.validator) {
|
||||
var validationResults = args.column.validator(this.serializeValue());
|
||||
if (!validationResults.valid) {
|
||||
return validationResults;
|
||||
}
|
||||
}
|
||||
return {
|
||||
valid: true,
|
||||
msg: null
|
||||
@@ -837,7 +859,14 @@
|
||||
};
|
||||
|
||||
this.isValueChanged = function () {
|
||||
return (!($input.val() == "" && defaultValue == null)) && ($input.val() != defaultValue);
|
||||
if ($input.val() == "" && _.isUndefined(defaultValue)) {
|
||||
return false;
|
||||
} else if ($input.val() == "" && defaultValue == "") {
|
||||
return true;
|
||||
} else {
|
||||
return (!($input.val() == "" && _.isNull(defaultValue ))) &&
|
||||
($input.val() != defaultValue);
|
||||
}
|
||||
};
|
||||
|
||||
this.validate = function () {
|
||||
|
||||
@@ -19,8 +19,15 @@
|
||||
});
|
||||
|
||||
function JsonFormatter(row, cell, value, columnDef, dataContext) {
|
||||
if (value == null || value === "") {
|
||||
return "";
|
||||
// If column has default value, set placeholder
|
||||
if (_.isUndefined(value) && columnDef.has_default_val) {
|
||||
return "<span class='pull-left disabled_cell'>[default]</span>";
|
||||
}
|
||||
else if (
|
||||
(_.isUndefined(value) && columnDef.not_null) ||
|
||||
(_.isUndefined(value) || value === null)
|
||||
) {
|
||||
return "<span class='pull-left disabled_cell'>[null]</span>";
|
||||
} else {
|
||||
// Stringify only if it's json object
|
||||
if (typeof value === "object" && !Array.isArray(value)) {
|
||||
@@ -42,11 +49,15 @@
|
||||
}
|
||||
|
||||
function NumbersFormatter(row, cell, value, columnDef, dataContext) {
|
||||
if (_.isUndefined(value) || value === null) {
|
||||
return "<span class='pull-right'>[null]</span>";
|
||||
// If column has default value, set placeholder
|
||||
if (_.isUndefined(value) && columnDef.has_default_val) {
|
||||
return "<span class='pull-right disabled_cell'>[default]</span>";
|
||||
}
|
||||
else if (value === "") {
|
||||
return '';
|
||||
else if (
|
||||
(_.isUndefined(value) || value === null || value === "") ||
|
||||
(_.isUndefined(value) && columnDef.not_null)
|
||||
) {
|
||||
return "<span class='pull-right disabled_cell'>[null]</span>";
|
||||
}
|
||||
else {
|
||||
return "<span style='float:right'>" + _.escape(value) + "</span>";
|
||||
@@ -57,17 +68,30 @@
|
||||
/* Checkbox has 3 states
|
||||
* 1) checked=true
|
||||
* 2) unchecked=false
|
||||
* 3) indeterminate=null/''
|
||||
* 3) indeterminate=null
|
||||
*/
|
||||
if (value == null || value === "") {
|
||||
return "<span class='pull-left'>[null]</span>";
|
||||
if (_.isUndefined(value) && columnDef.has_default_val) {
|
||||
return "<span class='pull-left disabled_cell'>[default]</span>";
|
||||
}
|
||||
else if (
|
||||
(_.isUndefined(value) && columnDef.not_null) ||
|
||||
(value == null || value === "")
|
||||
) {
|
||||
return "<span class='pull-left disabled_cell'>[null]</span>";
|
||||
}
|
||||
return value ? "true" : "false";
|
||||
}
|
||||
|
||||
function TextFormatter(row, cell, value, columnDef, dataContext) {
|
||||
if (_.isUndefined(value) || value === null) {
|
||||
return "<span class='pull-left'>[null]</span>";
|
||||
// If column has default value, set placeholder
|
||||
if (_.isUndefined(value) && columnDef.has_default_val) {
|
||||
return "<span class='pull-left disabled_cell'>[default]</span>";
|
||||
}
|
||||
else if (
|
||||
(_.isUndefined(value) && columnDef.not_null) ||
|
||||
(_.isUndefined(value) || _.isNull(value))
|
||||
) {
|
||||
return "<span class='pull-left disabled_cell'>[null]</span>";
|
||||
}
|
||||
else {
|
||||
return _.escape(value);
|
||||
|
||||
Reference in New Issue
Block a user