Xikui Wang has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/3142

Change subject: [ASTERIXDB-2514] Fix BigInt display in formatted JSON
......................................................................

[ASTERIXDB-2514] Fix BigInt display in formatted JSON

- user model changes: no
- storage format changes: no
- interface changes: no

Javascript treats all numbers as doubles. This causes large BigInt
values cannot be displayed properly in the formatted JSON option, and
the lower digits are replaced with "0". In this patch, we cast the
numbers into strings with special characters, and cast those strings
back after they are parsed by the JSON parser. Also, to make sure future
new data types can be displayed properly, the default JSON display is
set to "literal".

Change-Id: I1bbef349efba0da24d01afb1cb17b4f7d5b7f261
---
M asterixdb/asterix-app/src/main/resources/webui/querytemplate.html
M asterixdb/asterix-app/src/main/resources/webui/static/js/jquery.json-viewer.js
2 files changed, 11 insertions(+), 5 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/42/3142/1

diff --git a/asterixdb/asterix-app/src/main/resources/webui/querytemplate.html 
b/asterixdb/asterix-app/src/main/resources/webui/querytemplate.html
index 1157c27..31448ee 100644
--- a/asterixdb/asterix-app/src/main/resources/webui/querytemplate.html
+++ b/asterixdb/asterix-app/src/main/resources/webui/querytemplate.html
@@ -181,7 +181,14 @@
                       if (results[iter1].length < 1) {
                         continue;
                       }
-                      var resultJSON = $.parseJSON(results[iter1]);
+                      var str_obj = 
results[iter1].replace(/:\s*(\d+)([\s,])/g, ': "#bigint#$1#bigint#"$2');
+                      resultJSON = JSON.parse(str_obj, (key, value) => {
+                          if (/^#bigint#\d+#bigint#/g.test(value)) {
+                            value = value.substring(8, value.length - 8);
+                            return BigInt(value);
+                          }
+                          return value;
+                        });
                       $(this).append($('<div/>').attr("id", 
"json-record"+idx+"-"+iter1));
                       $('#json-record'+idx+"-"+iter1).jsonViewer(resultJSON, 
{collapsed: true, level: 10});
                     }
diff --git 
a/asterixdb/asterix-app/src/main/resources/webui/static/js/jquery.json-viewer.js
 
b/asterixdb/asterix-app/src/main/resources/webui/static/js/jquery.json-viewer.js
index 5e8a79e..f31b555 100644
--- 
a/asterixdb/asterix-app/src/main/resources/webui/static/js/jquery.json-viewer.js
+++ 
b/asterixdb/asterix-app/src/main/resources/webui/static/js/jquery.json-viewer.js
@@ -56,10 +56,7 @@
       else
         html += '<span class="json-string">"' + json + '"</span>';
     }
-    else if (typeof json === 'number') {
-      html += '<span class="json-literal">' + json + '</span>';
-    }
-    else if (typeof json === 'boolean') {
+    else if (typeof json === 'number' || typeof json === 'boolean' || typeof 
json === 'bigint') {
       html += '<span class="json-literal">' + json + '</span>';
     }
     else if (json === null) {
@@ -111,6 +108,8 @@
       else {
         html += '{}';
       }
+    } else {
+        html += '<span class="json-literal">' + json + '</span>';
     }
     return html;
   }

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/3142
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1bbef349efba0da24d01afb1cb17b4f7d5b7f261
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Xikui Wang <xkk...@gmail.com>

Reply via email to