Fix support for bigint's in JSONB data. Fixes #3587

This commit is contained in:
Aditya Toshniwal
2019-02-27 13:39:47 +00:00
committed by Dave Page
parent 6b3a628e7a
commit e6e7cf0f69
6 changed files with 31 additions and 12 deletions

View File

@@ -13,7 +13,9 @@
* @namespace Slick
*/
(function($) {
import JSONBigNumber from 'json-bignumber';
(function($, JSONBigNumber) {
// register namespace
$.extend(true, window, {
'Slick': {
@@ -108,7 +110,7 @@
}
} else {
if(column_type === 'jsonb') {
item[args.column.field] = JSON.parse(state);
item[args.column.field] = JSONBigNumber.stringify(JSONBigNumber.parse(state));
} else {
item[args.column.field] = state;
}
@@ -369,13 +371,13 @@
this.loadValue = function(item) {
var data = defaultValue = item[args.column.field];
/* If jsonb or array */
if (data && typeof data === 'object' && !Array.isArray(data)) {
data = JSON.stringify(data, null, 4);
if(args.column.column_type_internal === 'jsonb' && !Array.isArray(data)) {
data = JSONBigNumber.stringify(JSONBigNumber.parse(data), null, 4);
} else if (Array.isArray(data)) {
var temp = [];
$.each(data, function(i, val) {
if (typeof val === 'object') {
temp.push(JSON.stringify(val, null, 4));
temp.push(JSONBigNumber.stringify(val, null, 4));
} else {
temp.push(val);
}
@@ -411,7 +413,8 @@
};
this.validate = function() {
if(args.column.column_type_internal === 'jsonb') {
if(args.column.column_type_internal === 'jsonb' ||
args.column.column_type_internal === 'json') {
try {
JSON.parse($input.val());
} catch(e) {
@@ -597,13 +600,13 @@
this.loadValue = function(item) {
var data = defaultValue = item[args.column.field];
if (typeof data === 'object' && !Array.isArray(data)) {
data = JSON.stringify(data, null, 4);
if(args.column.column_type_internal === 'jsonb' && !Array.isArray(data)) {
data = JSONBigNumber.stringify(JSONBigNumber.parse(data), null, 4);
} else if (Array.isArray(data)) {
var temp = [];
$.each(data, function(i, val) {
if (typeof val === 'object') {
temp.push(JSON.stringify(val, null, 4));
temp.push(JSONBigNumber.stringify(val, null, 4));
} else {
temp.push(val);
}
@@ -988,4 +991,4 @@
this.init();
}
})(window.jQuery);
})(window.jQuery, JSONBigNumber);