diff --git a/web/pgadmin/static/js/backgrid/backgrid.pgadmin.js b/web/pgadmin/static/js/backgrid/backgrid.pgadmin.js index a2c133729..51c4199c8 100644 --- a/web/pgadmin/static/js/backgrid/backgrid.pgadmin.js +++ b/web/pgadmin/static/js/backgrid/backgrid.pgadmin.js @@ -904,6 +904,40 @@ } }); + /* + * JSONBCell Formatter. + */ + var JSONBCellFormatter = Backgrid.Extension.JSONBCellFormatter = + function () {}; + _.extend(JSONBCellFormatter.prototype, { + fromRaw: function (rawData, model) { + // json data + if(_.isArray(rawData)) { + var converted_data = ''; + converted_data = _.map(rawData, function(data) { + return JSON.stringify(JSON.stringify(data)); + }); + return '{' + converted_data.join() + '}'; + } else if(_.isObject(rawData)) { + return JSON.stringify(rawData); + } else { + return rawData; + } + }, + toRaw: function (formattedData, model) { + return formattedData; + } + }); + + /* + * JSONBCell for backgrid. + */ + var JSONBCell = Backgrid.Extension.JSONBCell = + Backgrid.StringCell.extend({ + className: "jsonb-cell", + formatter: JSONBCellFormatter + }); + return Backgrid; })); diff --git a/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js b/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js index e57257973..5b08623de 100644 --- a/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js +++ b/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js @@ -1555,6 +1555,12 @@ define( case "timestamp with time zone": col_cell = 'datetime'; break; + case "json": + case "json[]": + case "jsonb": + case "jsonb[]": + col_cell = Backgrid.Extension.JSONBCell; + break; default: col_cell = 'string'; }