1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 08:48:06 +08:00

add carte

This commit is contained in:
shylinux 2020-05-09 00:40:25 +08:00
parent f6119d4b0b
commit be7cb7ce4f
17 changed files with 243 additions and 218 deletions

119
frame.js
View File

@ -1,54 +1,29 @@
Volcanos("onimport", {
_init: function(can, meta, list, cb, target) {
if (Volcanos.meta.follow[can._root]) { debugger }
Volcanos("onaction", { _init: function(can, meta, list, cb, target) {
can.core.Next(meta.panes, function(item, next) {
can.onappend._init(can, item, Config.libs.concat(item.list), function(pane) {
// 插件回调
pane.Conf(item), pane.run = function(event, cmds, cb) { var msg = pane.request(event);
if (can.onaction[cmds[0]]) {
can.onaction[cmds[0]](event, can, msg, pane, cmds, cb);
} else {
can.onaction[meta.main.engine](event, can, msg, pane, cmds, cb);
}
pane.Conf(item), pane.run = function(event, cmds, cb) {
(can.onaction[cmds[0]]||can.onaction[meta.main.engine])(event, can, pane.request(event), pane, cmds, cb);
}, can[item.name] = pane, next();
}, can._target);
}, function() { can.onlayout._init(can, meta, list, function() {
if (Volcanos.meta.follow[can._root]) { debugger }
var pane = can[meta.main.name], msg = can.request(can._event);
pane.onaction._init(pane, msg, msg.option||[], cb, target);
}, target) });
},
})
Volcanos("onaction", {
search: function(event, can, msg, pane, cmds, cb) { var chain = cmds[1]
if (Volcanos.meta.follow[can._root]) { debugger }
var sub, mod = can, key, fun = can; can.core.List(chain.split("."), function(value, index, array) {
fun && (sub = mod, mod = fun, key = value, fun = mod[value])
}); if (!sub || !mod || !fun) { console.error("not found", chain); return }
Volcanos.meta.debug[can._root] && console.log(can._root, can._name, "engine", chain, "match", sub._name+"."+mod._name)
typeof fun == "function" && fun(sub, msg, cmds.slice(2), function(value) {
typeof cb == "function" && cb(value)
}, sub._target)
typeof fun == "function" && fun(sub, msg, cmds.slice(2), cb, sub._target)
},
remote: function(event, can, msg, pane, cmds, cb) {
if (Volcanos.meta.follow[can._root]) { debugger }
if (can.onengine && can.onengine.remote(event, can, msg, pane, cmds, cb)) {
return
}
if (location.protocol == "file:") {
typeof cb == "function" && cb(msg)
return
}
Volcanos.meta.debug[can._root] && console.log(can._root, pane._name, "remote", msg._name, "detail", cmds);
can.misc.Run(event, can, {names: pane._name}, cmds, function(msg) {
typeof cb == "function" && cb(msg);
})
if (can.onengine && can.onengine.remote(event, can, msg, pane, cmds, cb)) { return }
if (location.protocol == "file:") { typeof cb == "function" && cb(msg); return }
can.misc.Run(event, can, {names: pane._name}, cmds, cb)
},
})
Volcanos("onappend", {
_init: function(can, meta, list, cb, target, field) {
Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) {
field = field || can.onappend.field(can, target, meta.type||"plugin", meta);
var option = can.page.Select(can, field, "form.option")[0];
var action = can.page.Select(can, field, "div.action")[0];
@ -56,12 +31,13 @@ Volcanos("onappend", {
var feature = can.base.Obj(meta.feature)
// 添加插件
if (Volcanos.meta.follow[can._root]) { debugger }
var sub = Volcanos(meta.name, { _help: meta.name, _target: field,
_option: option, _action: action, _output: output, _history: [],
_follow: can._follow+"."+meta.name,
}, [Config.volcano].concat(list), function(sub) {
sub.onimport._init(sub, sub.Conf(meta), list, function() {
}, field);
meta.feature = can.base.Obj(meta.feature, {})
meta.detail = meta.feature["detail"] || {}
sub.onimport._init(sub, sub.Conf(meta), list, function() {}, field);
// 添加控件
var args = can.base.Obj(meta.args, [])
@ -69,12 +45,12 @@ Volcanos("onappend", {
sub[item.name] = Volcanos(item.name, { _help: item.name,
_target: can.onappend.input(sub, option, item.type, item, args[index]),
_option: option, _action: action, _output: output,
_follow: can._follow+"."+meta.name+"."+item.name,
}, Config.libs.concat([item.display||"plugin/input.js"]), function(input) {
input.onimport._init(input, input.Conf(item), item.list||[], function() {
}, input._target);
input.onimport._init(input, input.Conf(item), item.list||[], function() {}, input._target);
// 控件回调
input.run = function(event, cmds, cb, silent) {
// 控件回调
switch (item.name) {
case "返回":
// 历史命令
@ -99,12 +75,12 @@ Volcanos("onappend", {
var display = "plugin/"+(msg.Option("_display")||feature.display||"table.js")
sub[display] = Volcanos(display, { _target: output,
_option: option, _action: action, _output: output,
}, Config.libs.concat(["frame.js", display]), function(table) {
table.onimport._init(table, msg, msg.append||[], function() {
}, output)
_follow: can._follow+"."+meta.name+"."+display,
}, Config.libs.concat(["frame.js", display]), function(table) { table.Conf(sub.Conf())
table.onimport._init(table, msg, msg.append||[], function() {}, output)
// 组件回调
table.run = function(event, cmds, cb, silent) {
// 组件回调
cmds[0] == "field"? sub.run(event, cmds.slice(1), cb, silent):
input.run(event, cmds, cb, silent)
}
@ -127,11 +103,9 @@ Volcanos("onappend", {
})
}); cb(sub);
},
item: function(can, target, type, item, cb, cbs) {
var ui = can.page.Append(can, target, [{view: [type, "div", item.nick||item.name],
oncontextmenu: function(event) { cbs(event, ui.item) },
click: function(event) {
oncontextmenu: function(event) { cbs(event, ui.item) }, click: function(event) {
can.page.Select(can, target, "div."+type, function(item) {
can.page.ClassList.del(can, item, "select");
}); can.page.ClassList.add(can, ui.item, "select");
@ -158,7 +132,6 @@ Volcanos("onappend", {
var input = {type: "input", name: item.name, data: item, dataset: {}};
switch (item.type = item.type || item._type || item._input || "text") {
case "upfile": item.type = "file"; break
// case "button": item.value = item.value || item.name || "查看"; break
case "button": item.value = item.name || item.value || "查看"; break
case "select":
item.values = typeof item.values == "string"? item.values.split(" "): item.values;
@ -197,18 +170,64 @@ Volcanos("onappend", {
item.type == "select" && (target.value = item.value || item.values[item.index||0]);
return target;
},
table: function(can, target, type, msg, cb) {
table: function(can, target, type, msg) {
var table = can.page.AppendTable(can, can._output, msg, msg.append, function(event, value, key, index, tr, td) {
can.page.Select(can, can._option, "input.args", function(input) { if (input.name == key) { var data = input.dataset || {}
input.value = value; if (data.action == "auto") {
can.run(event, [], function(msg) {})
}
} })
}, function(event, value, key, index, tr, td) {
can.onappend.carte(can, can.ondetail||{}, msg["_detail"] || can.Conf("detail") || can.ondetail.list, function(event, item, meta) {
var res = can.request(event); can.core.List(msg.append, function(key) {
res.Option(key, msg[key][index])
}); can.run(event, ["field", "action", item, key, value.trim()], function(res) {}, true)
})
})
},
board: function(can, target, type, msg) {
msg.result && can.page.AppendBoard(can, can._output, can.page.Display(msg.Result()))
},
carte: function(can, meta, list, cb) {
can._carte = can._carte || can.page.Append(can, can._target, [{view: "carte", onmouseleave: function(event) {
can.page.Modify(can, can._carte, {style: {display: "none"}})
}}]).last
can.page.Appends(can, can._carte, can.core.List(list, function(item) {
return {view: ["item"], list: [typeof item == "string"? {text: [item], click: function(event) {
typeof cb == "function" && cb(event, item, meta)
}}: item.args? {text: [item.name], click: function(event) {
can.user.input(event, can, item.args, function(event, cmd, form, list) {
var msg = can.Event(event);
can.core.Item(form, function(key, value) {msg.Option(key, value)})
cmd == "提交" && typeof cb == "function" && cb(event, item.name, meta)
return true
})
}}: {select: [item, function(event) {
typeof cb == "function" && cb(event, event.target.value, meta)
}], value: src[item[0]]||""}]}
}))
var pos = {position: "absolute", display: "block", left: event.x, top: event.y}
if (document.body.clientWidth - event.x < 60) {
var pos = {display: "block", right: event.x, top: event.y}
}
pos.left += "px"; pos.top += "px";
can.page.Modify(can, can._carte, {style: pos})
event.stopPropagation()
event.preventDefault()
},
share: function(can, meta) {
return
can._share = can._share || can.page.Append(can, can._target, [{view: "share", onmouseleave: function(event) {
can.page.Modify(can, can._carte, {style: {display: "none"}})
}}]).last
can.page.Appends(can, can._share, [{view: ["title", "div", ]},])
}
}, [], function(can) {})
Volcanos("onlayout", {
_init: function(can, meta, list, cb, target) {
Volcanos("onlayout", { _init: function(can, meta, list, cb, target) {
var width = can._width, height = can._height;
if (Volcanos.meta.follow[can._root]) { debugger }

View File

@ -3,7 +3,6 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=0.7,user-scalable=no">
<title>volcanos</title>
<link rel="shortcut icon" type="image/ico" href="favicon.ico">
<link rel="stylesheet" type="text/css" href="style.css">
</head>

View File

@ -6,7 +6,9 @@ var Config = {name: "demo", volcano: "frame.js", iceberg: "/chat/", intshell: "p
{type: "pane", name: "River", help: "群聊组", pos: "left", list: ["pane/River.js", "pane/River.css"]},
{type: "pane", name: "Storm", help: "应用流", pos: "right", list: ["pane/Storm.js", "pane/Storm.css"]},
{type: "pane", name: "Action", help: "工作台", pos: "middle", list: ["pane/Action.js", "pane/Action.css"]},
{type: "pane", name: "Footer", help: "状态条", pos: "foot", list: ["pane/Footer.js", "pane/Footer.css"]},
{type: "pane", name: "Footer", help: "状态条", pos: "foot", list: ["pane/Footer.js", "pane/Footer.css"], state: [
"ncmd",
]},
], main: {name: "Header", engine: "remote", list: []},
list: ["plugin/state.js", "plugin/input.js", "plugin/table.js",
"plugin/input/key",
@ -21,11 +23,11 @@ var Preload = Config.libs; Config.panes.forEach(function(pane) {
Preload = Preload.concat(pane.list);
}); Preload = Preload.concat(Config.list)
Volcanos(Config.name, { _target: document.body,
Volcanos(Config.name, { _target: document.body, _follow: "demo",
_head: document.head, _body: document.body,
_width: window.innerWidth, _height: window.innerHeight,
}, Preload.concat(Config.volcano), function(can) { // 程序入口
can.onimport._init(can, can.Conf(Config), [], function(msg) {
can.onaction._init(can, can.Conf(Config), [], function(msg) {
console.log(can._root, can._name, "start", can, msg);
can.Footer.onaction._init(can.Footer, msg);
}, can._target)

View File

@ -2,10 +2,16 @@ fieldset.Action {
min-width:160px;
min-height:160px;
}
fieldset.Action>div.output {
overflow:auto;
}
fieldset.Action fieldset.plugin {
margin:5px;
}
fieldset.Action fieldset.plugin:hover {
border-color:red;
}
fieldset.Action fieldset.plugin legend {
border:ridge 2px cyan;
margin-top:5px;
@ -17,9 +23,3 @@ fieldset.Action fieldset.plugin div.output {
margin:5px;
color:white;
}
fieldset.Action fieldset.plugin div.output tr {
background:green;
}

View File

@ -1,6 +1,5 @@
Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, meta, list, cb, target) {
},
_init: function(can, meta, list, cb, target) {},
})
Volcanos("onaction", {help: "交互操作", list: [],
_init: function(can, msg, list, cb, target) {
@ -9,36 +8,25 @@ Volcanos("onaction", {help: "交互操作", list: [],
})
Volcanos("onexport", {help: "导出数据", list: [],
_init: function(can, msg, list, cb, target) { var key = "action";
if (Volcanos.meta.follow[can._root]) { debugger }
can.run(msg._event, ["search", "Storm.onaction._init"], function(msg) {
if (Volcanos.meta.follow[can._root]) { debugger }
can.Cache(can.Conf("river")+can.Conf("storm"), can._output, can.Conf(key));
var river = can.Conf("river", msg.Option("river"));
var storm = can.Conf("storm", msg.Option("storm"));
console.log(can._root, can._name, "show", river, storm);
if (can.Conf(key, msg.Option(key, can.Cache(river+"."+storm, can._output)))) {
typeof cb == "function" && cb(msg); return
}
can.Cache(can.Conf("river")+"."+can.Conf("storm"), can._output, can._output.scrollTop+1);
var river = can.Conf("river", msg.Option("river")), storm = can.Conf("storm", msg.Option("storm"));
var position = can.Conf(key, msg.Option(key, can.Cache(river+"."+storm, can._output)));
if (position) { can._output.scrollTo(0, position-1); typeof cb == "function" && cb(msg); return }
var pod = can.user.Search(can, "pod")
msg = can.request({}, {}), can.run(msg._event, [river, storm], function(msg) { can._output.innerHTML = "";
if (Volcanos.meta.follow[can._root]) { debugger }
msg.Table(function(value, index, array) {
// 添加列表
can.onappend._init(can, value, Config.libs.concat(["plugin/state.js"]), function(sub) {
var pod = can.user.Search(can, "pod"); msg = can.request({}, {});
can.run(msg._event, [river, storm], function(msg) { can._output.innerHTML = ""; msg.Table(function(value, index, array) {
// 添加插件
can.onappend._init(can, value, Config.libs.concat(["plugin/state.js"]), function(sub) {
sub.run = function(event, cmds, cb, silent) {
// 插件回调
sub.run = function(event, cmds, cb, silent) {
var msg = can.request(event)
pod && msg.Option("pod", pod)
can.run(event, [river, storm, index].concat(cmds), cb, silent)
}
}, can._output)
can.Conf(key, "which")
});
msg.Option(key, can.Conf(key))
typeof cb == "function" && cb(msg)
})
})
var msg = can.request(event); pod && msg.Option("pod", pod);
can.run(event, [river, storm, index].concat(cmds), cb, silent);
can.run(msg._event, ["search", "Footer.onaction.cmd"])
}
}, can._output);
}); typeof cb == "function" && cb(msg); })
});
},
})

32
pane/Carte.css Normal file
View File

@ -0,0 +1,32 @@
fieldset.dialog.Carte {
padding:0;
border:solid 2px red;
/* background-color:greenyellow; */
position:absolute;
display:none;
z-index:200;
}
fieldset.dialog.Carte>div.action {
padding:0;
}
fieldset.dialog.Carte>div.output {
padding:0;
}
fieldset.dialog.Carte>div.output button {
display:block;
}
fieldset.dialog.Carte>div.output select {
display:block;
}
fieldset.dialog.Carte>div.output div.layout>div {
float:left;
}
fieldset.dialog.Carte>div.output div.item {
padding:0px 6px;
}
fieldset.dialog.Carte>div.output div.space {
border:solid 1px gray;
margin-top:8px;
clear:both;
}

11
pane/Carte.js Normal file
View File

@ -0,0 +1,11 @@
Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, conf, output, action, option, field) {
},
})
Volcanos("onaction", {help: "组件交互", list: [],
onmouseleave: function(event, can) {can.Hide()},
})
Volcanos("onchoice", {help: "组件菜单", list: []})
Volcanos("ondetail", {help: "组件详情", list: []})
Volcanos("onexport", {help: "导出数据", list: []})

View File

@ -6,20 +6,23 @@ Volcanos("onaction", {help: "交互数据", list: [],
_init: function(can, msg, list, cb, target) {
can.onexport._init(can, msg, list, cb, target)
},
cmd: function(can, msg, list, cb, target) {
can.Conf("ncmd", parseInt(can.Conf("ncmd")||"0")+1+"")
can.onexport._init(can, msg, list, cb, target)
},
})
Volcanos("onexport", {help: "导出数据", list: [],
_init: function(can, msg, list, cb, target) { can._output.innerHTML = "";
msg = can.request({}, {})
can.run(msg._event, [], function(msg) {
console.log(can._root, can._name, "show", msg.result)
_init: function(can, msg, list, cb, target) {
msg = can.request({}, {}), can.run(msg._event, [], function(msg) { can._output.innerHTML = "";
can.core.List(msg.result, function(title) {
can.page.Append(can, can._output, [{view: ["title", "div", title]}])
})
console.log(can._root, can._name, "show", can.Conf("state"))
can.ui = can.page.Append(can, can._output, [{view: "state", list: can.core.List(can.Conf("state"), function(item) {
return {text: can.Conf(item)||"", className: item, click: function(event) {can.onaction[item](event, can, item)}};
})}])
return {view: "item", list: [{text: item}, {text: ": "}, {text: can.Conf(item)||""}], click: function(event) {
can.onaction[item](event, can, item);
}};
}) }])
})
},
})

View File

@ -5,12 +5,15 @@ Volcanos("onimport", {help: "导入数据", list: [],
Volcanos("onaction", {help: "交互数据", list: [],
_init: function(can, msg, list, cb, target) {
can.onexport._init(can, msg, list, cb, target)
can.run(msg._event, ["search", "Footer.onaction._init"], function(msg) {
can.run(msg._event, ["search", "River.onaction._init"], function(msg) {
})
can.run(msg._event, ["search", "Action.onaction._init"], function(msg) {
can.run(msg._event, ["search", "Footer.onaction._init"], function(msg) {
})
},
title: function(event, can, key) {
can.run(event, ["search", "Action.onaction._init"], function(msg) {
console.log(msg)
})
},
username: function(event, can, key) {
// can.ui[key].innerHTML = can.base.Time().split(" ")[1]

View File

@ -1,6 +1,5 @@
Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, meta, list, cb, target) {
},
_init: function(can, meta, list, cb, target) {},
})
Volcanos("onaction", {help: "交互数据", list: [],
_init: function(can, msg, list, cb, target) {
@ -9,30 +8,19 @@ Volcanos("onaction", {help: "交互数据", list: [],
})
Volcanos("onexport", {help: "导出数据", list: [],
_init: function(can, msg, list, cb, target) { var key = "river";
if (Volcanos.meta.follow[can._root]) { debugger }
if (msg.Option(key, can.Conf(key))) {
typeof cb == "function" && cb (msg); return
}
if (msg.Option(key, can.Conf(key))) { typeof cb == "function" && cb (msg); return }
msg = can.request({}, {}), can.run(msg._event, [], function(msg) { can._output.innerHTML = "";
if (Volcanos.meta.follow[can._root]) { debugger }
var select; msg.Table(function(value, index, array) {
// 添加列表
var view = can.onappend.item(can, can._output, "item", value, function(event, item) {
// 左键点击
can.Conf(key, value.key); can.run(event, ["search", "Storm.onaction._init"], function(action) {
// 切换群组
});
}, function(event) {
// 右键点击
});
if (index == 0 || [value.key, value.name].indexOf(can.user.Search(can, key)) > -1) {
msg.Option("river", value.key)
select = view
}
}); select && select.click();
typeof cb == "function" && cb(msg)
})
msg = can.request({}, {}), can.run(msg._event, [], function(msg) { can._output.innerHTML = ""; var select; msg.Table(function(value, index, array) {
var view = can.onappend.item(can, can._output, "item", value, function(event, item) {
// 左键点击
can.Conf(key, value.key); can.run(event, ["search", "Storm.onaction._init"], function(action) { });
}, function(event) {
// 右键点击
});
if (index == 0 || [value.key, value.name].indexOf(can.user.Search(can, key)) > -1) {
msg.Option(key, value.key), select = view
}
}); select && select.click(); typeof cb == "function" && cb(msg); })
},
})

View File

@ -1,42 +1,43 @@
Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, meta, list, cb, target) {
},
_init: function(can, meta, list, cb, target) {},
})
Volcanos("onaction", {help: "交互数据", list: [],
Volcanos("onaction", {help: "交互操作", list: [],
_init: function(can, msg, list, cb, target) {
can.onexport._init(can, msg, list, cb, target)
},
})
Volcanos("ondetail", {help: "交互菜单", list: ["共享", "更名", "删除"],
_init: function(can, msg, list, cb, target) {
can.onexport._init(can, msg, list, cb, target)
},
"共享": function(event, can, value) {
can.onappend.share(can, {river: can.Conf("river"), storm: can.Conf("storm")})
},
})
Volcanos("onexport", {help: "导出数据", list: [],
_init: function(can, msg, list, cb, target) { var key = "storm";
if (Volcanos.meta.follow[can._root]) { debugger }
can.run(msg._event, ["search", "River.onaction._init"], function(msg) {
if (Volcanos.meta.follow[can._root]) { debugger }
can.Cache(can.Conf("river"), can._output, can.Conf(key));
var river = can.Conf("river", msg.Option("river"));
console.log(can._root, can._name, "show", river);
if (can.Conf(key, msg.Option(key, can.Cache(river, can._output)))) {
typeof cb == "function" && cb (msg); return
}
if (can.Conf(key, msg.Option(key, can.Cache(river, can._output)))) { typeof cb == "function" && cb (msg); return }
msg = can.request({}, {}), can.run(msg._event, [river], function(msg) { can._output.innerHTML = "";
if (Volcanos.meta.follow[can._root]) { debugger }
var select; msg.Table(function(value, index, array) {
// 添加列表
var view = can.onappend.item(can, can._output, "item", value, function(event, item) {
// 左键点击
can.Conf(key, value.key); can.run(event, ["search", "Action.onaction._init"], function(msg) {
})
}, function(event, item) {
// 右键点击
});
if (index == 0 || [value.key, value.name].indexOf(can.user.Search(can, key)) > -1) {
msg.Option("storm", value.key)
select = view
}
}); select && select.click();
typeof cb == "function" && cb(msg)
})
msg = can.request({}, {}), can.run(msg._event, [river], function(msg) { can._output.innerHTML = ""; var select; msg.Table(function(value, index, array) {
var view = can.onappend.item(can, can._output, "item", value, function(event, item) {
// 左键点击
can.Conf(key, value.key); can.run(event, ["search", "Action.onaction._init"], function(msg) {})
}, function(event, item) {
// 右键点击
can.onappend.carte(can, can.ondetail, can.ondetail.list, function(event, item, meta) {
meta[item] && meta[item](event, can, value)
console.log(item)
})
});
if (index == 0 || [value.key, value.name].indexOf(can.user.Search(can, key)) > -1) {
msg.Option(key, value.key), select = view
}
}); select && select.click(); typeof cb == "function" && cb(msg); })
})
},
})

View File

@ -14,6 +14,8 @@ Volcanos("onaction", {help: "控件交互", list: [],
switch (event.key) {
case "Enter":
can.run(event, [], function() {})
event.stopPropagation()
event.preventDefault()
break
}
},
@ -21,6 +23,8 @@ Volcanos("onaction", {help: "控件交互", list: [],
switch (event.key) {
case "Enter":
can.run(event, [], function() {})
event.stopPropagation()
event.preventDefault()
break
}
},

View File

@ -13,6 +13,6 @@ Volcanos("onfigure", {help: "控件详情", list: [],
});
}},
}, [
"plugin/github.com/shylinux/echarts/echarts.js",
"plugin/github.com/shylinux/echarts/china.js",
// "plugin/github.com/shylinux/echarts/echarts.js",
// "plugin/github.com/shylinux/echarts/china.js",
])

View File

@ -15,12 +15,9 @@ Volcanos("onimport", {help: "导入数据", list: [],
can.Action("mode", "draw")
can.Action("shape", "path")
},
init: function(can, msg, cb, output, action, option) {output.innerHTML = "";
_init: function(can, msg, list, cb, target) { can._output.innerHTML = "";
if (msg.Option("_display") == "table") {
// 文件目录
can.page.AppendTable(can, output, msg, msg.append, function(event, value, key, index, tr, td) {
can.Export(event, value, key)
})
can.onappend.table(can, target, "table", msg)
return typeof cb == "function" && cb(msg);
}
@ -31,8 +28,8 @@ Volcanos("onimport", {help: "导入数据", list: [],
can.last = null
// 加载绘图
var code = can.page.AppendBoard(can, output, msg.Result()||can.Export(event, null, "file"))
can.page.Select(can, output, "svg", function(svg) {
var code = can.page.AppendBoard(can, can._output, msg.Result()||can.Export(event, null, "file"))
can.page.Select(can, can._output, "svg", function(svg) {
// 画布
can.onaction.init(event, can, msg, "init", svg);
can.group = can.svg = svg;

View File

@ -18,14 +18,15 @@ Volcanos("onimport", {help: "导入数据", list: [],
can.page.ClassList.add(can, can.ui.display, "hidden")
},
}])
can.data = can.msg.Table()
can.data = msg.Table()
can.page.ClassList.add(can, can.ui.total, "status")
can.sub = can.Output(can, {}, "/plugin/local/wiki/draw", can.Event({}), function() {
return
can.sub = can.Output(can, {}, "/plugin/local/wiki/draw", can.request({}), function() {
can.Action("width", 600)
can.onaction["编辑"]({}, can)
can.onaction["股价图"]({}, can)
}, can.ui.output, can.ui.action, option, can.ui.status)
}, can.ui.output, can.ui.action, can._option, can.ui.status)
},
})
Volcanos("onaction", {help: "组件菜单", list: ["编辑", "清空", "股价图", "趋势", "比例", ["width", "200", "400", "600", "800", "1000"], ["height", "200", "400", "600"], "表格"],

View File

@ -1,7 +1,7 @@
Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, msg, list, cb, target) { can._output.innerHTML = "";
can.onappend.table(can, target, "table", msg)
msg.result && can.page.AppendBoard(can, can._output, msg.result.join(""))
can.onappend.board(can, target, "board", msg)
return typeof cb == "function" && cb(msg)
},
})

View File

@ -1,18 +1,18 @@
* {
background:black;
}
body {
background:black;
padding:0;
margin:0;
}
fieldset {
color:cyan;
padding:2px;
margin:0px;
}
legend {
margin-left:10px;
}
div.hidden {
display:none;
}
fieldset>form.option {
padding:0 5px;
@ -51,18 +51,19 @@ fieldset>form.option>div.item input.opts {
width:80px;
}
fieldset>form.option>div.item textarea.args {
background-color:cyan;
width:300px;
height:50px;
background-color:cyan;
}
fieldset>form.option>div.item.text>input {
background-color:cyan;
}
fieldset>form.option>div.item.button>input {
background:black;
color:cyan;
}
fieldset>form.option>div.item.select>select {
background:black;
color:cyan;
}
fieldset>form.option>div.item.textarea {
@ -70,46 +71,37 @@ fieldset>form.option>div.item.textarea {
clear:both;
}
fieldset.Action>div.output {
overflow:auto;
}
fieldset>div.output {
fieldset div.output {
margin-top:4px;
clear:both;
overflow:auto;
}
fieldset div.code {
color:white;
font-size:14px;
font-family:monospace;
background-color:#343a34f2;
white-space:pre;
padding:10px;
overflow:auto;
border:solid 3px green;
max-height:640px;
}
fieldset table {
font-size:14px;
overflow: auto;
}
fieldset table caption {
font-size:18px;
font-style:italic;
border:solid 1px green;
}
fieldset table tbody {
overflow:auto;
}
fieldset table td sup.more {
color:red;
}
fieldset table {
border:solid 1px green;
cursor:pointer;
border:solid 1px green;
overflow: auto;
}
fieldset table tr:hover {
background-color:#0fbd45;
}
fieldset table tr.over {
background:red;
}
fieldset table tr.select {
background-color:#0fbd45;
}
fieldset table th {
background-color:#0fbd45;
fieldset table tr.over {
background:red;
}
fieldset table th {
font-family:monospace;
@ -130,30 +122,15 @@ fieldset table td.select {
background-color:red;
}
fieldset div.code {
color:white;
font-size:14px;
font-family:monospace;
background-color:#343a34f2;
white-space:pre;
padding:10px;
overflow:auto;
border:solid 3px green;
max-height:640px;
div.carte {
background:black;
border:solid 2px red;
}
fieldset div.hidden {
display:none;
div.carte div.item {
padding:0 5px;
}
fieldset div.code {
color:white;
font-size:14px;
font-family:monospace;
background-color:#343a34f2;
white-space:pre;
padding:10px;
overflow:auto;
border:solid 3px green;
max-height:640px;
div.carte div.item:hover {
background:red;
border:solid 2px yellow;
cursor:pointer;
}