JSFiddle - React, Tailwind, and code Playground
by Umair Rafiq
HTML
<script src="https://raw.githubusercontent.com/anomal/RainbowVis-JS/cfb2b6ca9827697b5424252860a813d6f4d5194d/rainbowvis.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<div id="json-viewer-outline"></div>
<div id="json-viewer"></div>
CSS
body {
font-family:"Roboto", "Helvetica", "Arial", sans-serif;
}
ul {
margin-left: 1em;
list-style: none;
}
#json-viewer-outline{
font-size:10px;
}
.json-key {
font-weight: bold;
}
.json-value {
margin-left: 20px;
}
.json-standard {
margin-right: 0px;
font-weight:bold;
}
.lvl1 {
font-size: 40px;
}
.lvl2 {
font-size: 35px;
}
.lvl3 {
font-size: 30px;
}
.lvl4 {
font-size: 25px;
}
.lvl5 {
font-size: 20px;
}
.lvl6 {
font-size: 15px;
}
.lvl7 {
font-size: 12px;
}
.leaf {
font-size:10px!important;
background: #f7f7f7;
padding: 10px;
}
.yellowColor{background-color: yellow;}
sssttt {line-height: 17px;}
sssss:hover {background: #cfd4d4;padding: 4px;border-radius: 5px;}
.sentiment{padding: 4px;border-radius: 7px;font-weight: 800;}
//.sentiment-ngtv{background: #d46342;}
//.sentiment-pstv{background: #43b542;}
.tooltip{
position:absolute;
top:-15px;
background-color:#333;
color:#fff;
padding:5px;
border-radius:5px;
}
JavaScript
function titleCase(str) {
var splitStr = str.toLowerCase().split(' ');
for (var i = 0; i < splitStr.length; i++) {
// You do not need to check if i is larger than splitStr length, as your for does that for you
// Assign it back to the array
splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);
}
// Directly return the joined string
return splitStr.join(' ');
}
function detectObjFromCurrentObj(obj){
var ObjIdx = '';
for (var prop in obj) {
if (typeof obj[prop] === "object") {
ObjIdx = prop;
}
}
return ObjIdx;
}
function detectSecTextFromCurrentObj(obj){
var STIdx = '';
for (var prop in obj) {
var regex = /^[a-zA-Z]{1}[0-9]{1}$/;
if (prop.includes('-st') || regex.test(prop) || prop == 'data') {
STIdx = prop;
if(obj[prop] == 'data'){
STIdx = 'data';
}
}
}
return STIdx;
}
function detectlevelCurrentObj(obj){
var STIdx = '';
for (var prop in obj) {
var regex = /^l{1}[0-9]{1}$/;
if(prop.includes('-st')){
STIdx = prop;
}else if(typeof obj[prop] === "object"){
STIdx = prop;
}else if (regex.test(prop)) {
STIdx = obj[prop];
if(prop == 'l4'){
STIdx = prop;
if(obj[STIdx] == 'data'){
STIdx = 'data';
}
}
// if(obj[prop] == 'data'){
// STIdx = 'data';
// }
}
}
// console.log(STIdx)
return STIdx;
}
function sortObject(obj) {
var newObj = [];
for (var prop in obj) {
var objs = {};
if(typeof obj[prop] === "object"){
objs[prop] = obj[prop]
newObj.push(objs);
}else{
objs[prop] = obj[prop]
newObj.unshift(objs);
}
}
var fObj = {};
for (var prop1 in newObj) {
// console.log(prop1)
for (var prop2 in newObj[prop1]) {
// console.log(prop2)
fObj[prop2] = newObj[prop1][prop2];
}
}
// console.log(fObj)
// return Object.keys(obj).reverse().reduce(function (result, key) {
// result[key] = obj[key];
// return...