Giter Club home page Giter Club logo

json-tree-view's Introduction

JSONTreeView

A simple JSON viewer with basic edit capabilities. It has styles similar to Chrome's dev tools, so it's perfect for building dev tools extensions... live example.

Install with NPM

npm i json-tree-view

Build example

./example/build.sh See ./example/build directory.

Basic usage

index.js

var JSONTreeView = require('json-tree-view');

var view = new JSONTreeView('example', {
    hello : 'world',
    doubleClick : 'me to edit',
    a : null,
    b : true,
    c : false,
    d : 1,
    e : {nested : 'object'},
    f : [1,2,3]
});

// Listen for change events
view.on('change', function(self, key, oldValue, newValue){
    console.log('change', key, oldValue, '=>', newValue);
});
view.on('rename', function(self, key, oldName, newName) {
    console.log('rename', key, oldName, '=>', newName);
});
view.on('delete', function(self, key) {
    console.log('delete', key);
});
view.on('append', function(self, key, nameOrValue, newValue) {
    console.log('append', key, nameOrValue, '=>', newValue);
});
view.on('click', function(self, key, value) {
    console.log('click', key, '=', value);
});
view.on('expand', function(self, key, value) {
    console.log('expand', key, '=', value);
});
view.on('collapse', function(self, key, value) {
    console.log('collapse', key, '=', value);
});
view.on('refresh', function(self, key, value) {
    console.log('refresh', key, '=', value);
});

// Expand recursively
view.expand(true);

view.withRootName = false;

// Inspect window.data on the console and note that it changes with edits.
window.data = view.value;

view.value.f.pop()
view.value.f.push(9)
view.value.e.a = 'aaa';
delete view.value.c;
view.refresh();

// Do not hide root.
view.alwaysShowRoot = true;

// Set readonly when filtering words automatically.
view.readonlyWhenFiltering = true;
view.filterText = 'a';

// Remove word filter by setting a false value.
view.filterText = null;

// Always show count of object or array.
view.showCountOfObjectOrArray = true;

// Cannot change the value of JSON and remove "+" and "x" buttons.
view.readonly = true;

document.getElementById('filter').addEventListener('input', function() {
    view.filterText = this.value;
});
document.getElementById('root').addEventListener('change', function() {
    view.alwaysShowRoot = !!this.checked;
});
document.getElementById('rowf').addEventListener('change', function() {
    view.readonlyWhenFiltering = !!this.checked;
});
document.getElementById('ro').addEventListener('change', function() {
    view.readonly = !!this.checked;
});
document.getElementById('sc').addEventListener('change', function () {
    view.showCountOfObjectOrArray = !!this.checked;
});

index.html - (don't forget to include the css)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JSONView Example</title>
    <link rel="stylesheet" href="devtools.css">
    <style>
      ul { user-select:none; }
    </style>
    <script src="index.js" defer></script>
</head>
<body>
<h3>Options</h3>
<ul>
  <li>
    <label for="filter">Filter: </label>
    <input type="text" id="filter" />
  </li>
  <li>
    <input type="checkbox" id="root" />
    <label for="root">Always show root</label>
  </li>
  <li>
    <input type="checkbox" id="rowf" />
    <label for="rowf">Automatically set to readonly when filtering</label>
  </li>
  <li>
    <input type="checkbox" id="ro" />
    <label for="ro">Readonly</label>
  </li>
  <li>
    <input type="checkbox" id="sc" checked />
    <label for="sc">Show count of Object or Array</label>
  </li>
</ul>
<h3>JSON</h3>
</body>
</html>

json-tree-view's People

Contributors

luyuan avatar richard-livingston avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.