From 5dc187e51014379a69019acdb61e358d03498430 Mon Sep 17 00:00:00 2001 From: yann300 Date: Tue, 17 Jan 2017 13:50:13 +0100 Subject: [PATCH 1/7] treeview --- src/ui/TreeView.js | 73 +++++++++++++++++++++++++++++++++++++++ src/ui/styles/treeView.js | 16 +++++++++ 2 files changed, 89 insertions(+) create mode 100644 src/ui/TreeView.js create mode 100644 src/ui/styles/treeView.js diff --git a/src/ui/TreeView.js b/src/ui/TreeView.js new file mode 100644 index 0000000000..806e7ae4bc --- /dev/null +++ b/src/ui/TreeView.js @@ -0,0 +1,73 @@ +'use strict' +var yo = require('yo-yo') +var style = require('./styles/treeView') +var ui = require('../helpers/ui') + +class TreeView { + + constructor (opts) { + function noop (node) { + } + this.beforeJsonNodeRendered = opts.beforeJsonNodeRendered || noop + this.beforeJsonValueRendered = opts.beforeJsonValueRendered || noop + this.view = null + this.cssLabel = ui.formatCss(style.label) + this.cssList = ui.formatCss(style.list) + } + + render (json) { + if (!json) { + json = {} + } + var view = yo`
${this.renderProperties(json, true)}
` + if (!this.view) { + this.view = view + } + return view + } + + update (json) { + if (this.view) { + yo.update(this.view, this.render(json), {onBeforeElUpdated: (fromEl, toEl) => { + toEl.style.display = fromEl.style.display + toEl.className = fromEl.className + return true + }}) + } + } + + renderObject (item, key, expand) { + var label + if (item instanceof Array || item instanceof Object) { + var properties = this.renderProperties(item, false) + label = yo`` + var list = yo`