forked from x/volcanos
opt cli
This commit is contained in:
parent
6538e662f3
commit
1002e633dd
25
plugin/story/json.css
Normal file
25
plugin/story/json.css
Normal file
@ -0,0 +1,25 @@
|
||||
fieldset.plugin div.output div.item div.item {
|
||||
border:solid 1px #0000000d;
|
||||
border-left:dashed 1px lightblue;
|
||||
margin-left:5px; padding-left:15px;
|
||||
font-size:14px; font-family:monospace;
|
||||
cursor:pointer;
|
||||
}
|
||||
fieldset.plugin div.output div.item div.item:hover {
|
||||
border:solid 1px red;
|
||||
}
|
||||
fieldset.plugin div.output div.item span.nonce {
|
||||
font-size:12px; font-family:auto;
|
||||
color:lightblue;
|
||||
cursor:pointer;
|
||||
}
|
||||
fieldset.plugin div.output div.item span.key {
|
||||
color:yellow;
|
||||
}
|
||||
fieldset.plugin div.output div.item span.string {
|
||||
color:magenta;
|
||||
}
|
||||
fieldset.plugin div.output div.item span.const {
|
||||
color:cyan;
|
||||
}
|
||||
|
60
plugin/story/json.js
Normal file
60
plugin/story/json.js
Normal file
@ -0,0 +1,60 @@
|
||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||
can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg)
|
||||
can.onimport.show(can, can.base.Obj(msg.Result(), {}), target)
|
||||
},
|
||||
show: function(can, data, target) {
|
||||
function show(data, target, index, total) { var list
|
||||
switch (typeof data) {
|
||||
case lang.OBJECT:
|
||||
if (data == null) {
|
||||
return can.page.Append(can, list, [{text: "null"}]).item
|
||||
return
|
||||
}
|
||||
function wrap(begin, end, add, cb) {
|
||||
can.page.Append(can, target, [{text: begin}])
|
||||
add && can.page.Append(can, target, [{text: ["...", html.SPAN, "nonce"]}]), cb()
|
||||
can.page.Append(can, target, [{text: end}])
|
||||
}
|
||||
function toggle(list) { list && can.onmotion.toggle(can, list) }
|
||||
function _item() {
|
||||
list = list || can.page.Append(can, target, [{view: html.LIST}]).list
|
||||
return can.page.Append(can, list, [{view: html.ITEM}]).item
|
||||
}
|
||||
|
||||
if (can.base.isArray(data)) { // 数组
|
||||
wrap("[", "]", data.length > 0, function() { can.core.List(data, function(value, index) { var item = _item()
|
||||
show(value, item, index, data.length)
|
||||
}) })
|
||||
} else { // 对象
|
||||
var length = can.core.Item(data).length, count = 0
|
||||
wrap("{", "}", length > 0, function() { can.core.Item(data, function(key, value) { var item = _item()
|
||||
can.page.Append(can, item, [{text: ['"'+key+'"', html.SPAN, "key"], onclick: function(event) { toggle(sub) }}, {text: ': '}])
|
||||
var sub = show(value, item, count++, length)
|
||||
}) })
|
||||
}
|
||||
break
|
||||
case lang.STRING: /* 字串 */ can.page.Append(can, target, [{text: ['"'+data+'"', html.SPAN, lang.STRING]}]); break
|
||||
default: /* 其它 */ can.page.Append(can, target, [{text: [''+data+'', html.SPAN, "const"]}])
|
||||
}
|
||||
(index < total-1) && can.page.Append(can, target, [{text: ice.FS}])
|
||||
return list
|
||||
}; show(data, can.page.Append(can, target, [{view: html.ITEM}]).item, 0, 0)
|
||||
},
|
||||
}, [""])
|
||||
Volcanos("onaction", {help: "组件菜单", list: ["展开", "折叠", "复制"],
|
||||
"展开": function(event, can) {
|
||||
can.page.Select(can, can._output, "div.list div.list", function(list) {
|
||||
can.onmotion.hidden(can, list, true)
|
||||
})
|
||||
},
|
||||
"折叠": function(event, can) {
|
||||
can.page.Select(can, can._output, "div.list div.list", function(list) {
|
||||
can.onmotion.hidden(can, list)
|
||||
})
|
||||
},
|
||||
"复制": function(event, can) {
|
||||
can.user.copy(event, can, can._msg.Result())
|
||||
},
|
||||
})
|
||||
Volcanos("onexport", {help: "导出数据", list: []})
|
||||
|
@ -1,14 +1,16 @@
|
||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||
can.require(["/plugin/local/wiki/draw.js", "/plugin/local/wiki/draw/path.js"], function() {
|
||||
can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg)
|
||||
can.onmotion.clear(can), can.onimport._show(can, msg)
|
||||
var r = 200, margin = 20; can.svg.Val(html.WIDTH, 2*(r+margin)), can.svg.Val(html.HEIGHT, 2*(r+margin))
|
||||
can.onimport._draw(can, msg, "value", r+margin, r+margin, r, margin, 0)
|
||||
can._args = can.base.Copy({field: "value"}, can.base.ParseURL(can._display))
|
||||
can.onimport._draw(can, msg, can._args.field, r+margin, r+margin, r, margin, 0)
|
||||
can.onmotion.clear(can, can.ui.project), can.onappend.table(can, msg, null, can.ui.project)
|
||||
can.onmotion.hidden(can, can.ui.project, true)
|
||||
can.page.Modify(can, can.ui.project, {style: {"max-width": 480}})
|
||||
can.page.Select(can, can.ui.project, html.TR, function(tr, index) {
|
||||
can.page.Modify(can, tr, {onmouseenter: function(event) {
|
||||
can.onmotion.clear(can, can.svg), can.onimport._draw(can, msg, "value", r+margin, r+margin, r, margin, index-1)
|
||||
can.onmotion.clear(can, can.svg), can.onimport._draw(can, msg, can._args.field, r+margin, r+margin, r, margin, index-1)
|
||||
}})
|
||||
})
|
||||
})
|
||||
|
2
proto.js
2
proto.js
@ -184,7 +184,7 @@ var html = {
|
||||
CLASS: "class", BLOCK: "block", NONE: "none",
|
||||
TITLE: "title", A: "a", LABEL: "label", INNER: "inner",
|
||||
STROKE_WIDTH: "stroke-width", STROKE: "stroke", FILL: "fill", FONT_SIZE: "font-size", MONOSPACE: "monospace",
|
||||
LIST: "list", ITEM: "item", MENU: "menu",
|
||||
LIST: "list", ITEM: "item", MENU: "menu", NODE: "node",
|
||||
SUBMIT: "submit", CANCEL: "cancel",
|
||||
WSS: "wss", SVG: "svg",
|
||||
MAX_HEIGHT: "max-height", MAX_WIDTH: "max-width",
|
||||
|
Loading…
x
Reference in New Issue
Block a user