1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58: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", { Volcanos("onaction", { _init: function(can, meta, list, cb, target) {
_init: function(can, meta, list, cb, target) {
if (Volcanos.meta.follow[can._root]) { debugger }
can.core.Next(meta.panes, function(item, next) { can.core.Next(meta.panes, function(item, next) {
can.onappend._init(can, item, Config.libs.concat(item.list), function(pane) { can.onappend._init(can, item, Config.libs.concat(item.list), function(pane) {
// 插件回调 pane.Conf(item), pane.run = function(event, cmds, cb) {
pane.Conf(item), pane.run = function(event, cmds, cb) { var msg = pane.request(event); (can.onaction[cmds[0]]||can.onaction[meta.main.engine])(event, can, pane.request(event), pane, cmds, cb);
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);
}
}, can[item.name] = pane, next(); }, can[item.name] = pane, next();
}, can._target); }, can._target);
}, function() { can.onlayout._init(can, meta, list, function() { }, 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); var pane = can[meta.main.name], msg = can.request(can._event);
pane.onaction._init(pane, msg, msg.option||[], cb, target); pane.onaction._init(pane, msg, msg.option||[], cb, target);
}, target) }); }, target) });
}, },
})
Volcanos("onaction", {
search: function(event, can, msg, pane, cmds, cb) { var chain = cmds[1] 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) { 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]) fun && (sub = mod, mod = fun, key = value, fun = mod[value])
}); if (!sub || !mod || !fun) { console.error("not found", chain); return } }); 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), cb, sub._target)
typeof fun == "function" && fun(sub, msg, cmds.slice(2), function(value) {
typeof cb == "function" && cb(value)
}, sub._target)
}, },
remote: function(event, can, msg, pane, cmds, cb) { 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 (can.onengine && can.onengine.remote(event, can, msg, pane, cmds, cb)) { if (location.protocol == "file:") { typeof cb == "function" && cb(msg); return }
return can.misc.Run(event, can, {names: pane._name}, cmds, cb)
}
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);
})
}, },
}) })
Volcanos("onappend", { Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) {
_init: function(can, meta, list, cb, target, field) {
field = field || can.onappend.field(can, target, meta.type||"plugin", meta); field = field || can.onappend.field(can, target, meta.type||"plugin", meta);
var option = can.page.Select(can, field, "form.option")[0]; var option = can.page.Select(can, field, "form.option")[0];
var action = can.page.Select(can, field, "div.action")[0]; var action = can.page.Select(can, field, "div.action")[0];
@ -56,12 +31,13 @@ Volcanos("onappend", {
var feature = can.base.Obj(meta.feature) var feature = can.base.Obj(meta.feature)
// 添加插件 // 添加插件
if (Volcanos.meta.follow[can._root]) { debugger }
var sub = Volcanos(meta.name, { _help: meta.name, _target: field, var sub = Volcanos(meta.name, { _help: meta.name, _target: field,
_option: option, _action: action, _output: output, _history: [], _option: option, _action: action, _output: output, _history: [],
_follow: can._follow+"."+meta.name,
}, [Config.volcano].concat(list), function(sub) { }, [Config.volcano].concat(list), function(sub) {
sub.onimport._init(sub, sub.Conf(meta), list, function() { meta.feature = can.base.Obj(meta.feature, {})
}, field); meta.detail = meta.feature["detail"] || {}
sub.onimport._init(sub, sub.Conf(meta), list, function() {}, field);
// 添加控件 // 添加控件
var args = can.base.Obj(meta.args, []) var args = can.base.Obj(meta.args, [])
@ -69,12 +45,12 @@ Volcanos("onappend", {
sub[item.name] = Volcanos(item.name, { _help: item.name, sub[item.name] = Volcanos(item.name, { _help: item.name,
_target: can.onappend.input(sub, option, item.type, item, args[index]), _target: can.onappend.input(sub, option, item.type, item, args[index]),
_option: option, _action: action, _output: output, _option: option, _action: action, _output: output,
_follow: can._follow+"."+meta.name+"."+item.name,
}, Config.libs.concat([item.display||"plugin/input.js"]), function(input) { }, Config.libs.concat([item.display||"plugin/input.js"]), function(input) {
input.onimport._init(input, input.Conf(item), item.list||[], function() { input.onimport._init(input, input.Conf(item), item.list||[], function() {}, input._target);
}, input._target);
// 控件回调
input.run = function(event, cmds, cb, silent) { input.run = function(event, cmds, cb, silent) {
// 控件回调
switch (item.name) { switch (item.name) {
case "返回": case "返回":
// 历史命令 // 历史命令
@ -99,12 +75,12 @@ Volcanos("onappend", {
var display = "plugin/"+(msg.Option("_display")||feature.display||"table.js") var display = "plugin/"+(msg.Option("_display")||feature.display||"table.js")
sub[display] = Volcanos(display, { _target: output, sub[display] = Volcanos(display, { _target: output,
_option: option, _action: action, _output: output, _option: option, _action: action, _output: output,
}, Config.libs.concat(["frame.js", display]), function(table) { _follow: can._follow+"."+meta.name+"."+display,
table.onimport._init(table, msg, msg.append||[], function() { }, Config.libs.concat(["frame.js", display]), function(table) { table.Conf(sub.Conf())
}, output) table.onimport._init(table, msg, msg.append||[], function() {}, output)
// 组件回调
table.run = function(event, cmds, cb, silent) { table.run = function(event, cmds, cb, silent) {
// 组件回调
cmds[0] == "field"? sub.run(event, cmds.slice(1), cb, silent): cmds[0] == "field"? sub.run(event, cmds.slice(1), cb, silent):
input.run(event, cmds, cb, silent) input.run(event, cmds, cb, silent)
} }
@ -127,11 +103,9 @@ Volcanos("onappend", {
}) })
}); cb(sub); }); cb(sub);
}, },
item: function(can, target, type, item, cb, cbs) { item: function(can, target, type, item, cb, cbs) {
var ui = can.page.Append(can, target, [{view: [type, "div", item.nick||item.name], var ui = can.page.Append(can, target, [{view: [type, "div", item.nick||item.name],
oncontextmenu: function(event) { cbs(event, ui.item) }, oncontextmenu: function(event) { cbs(event, ui.item) }, click: function(event) {
click: function(event) {
can.page.Select(can, target, "div."+type, function(item) { can.page.Select(can, target, "div."+type, function(item) {
can.page.ClassList.del(can, item, "select"); can.page.ClassList.del(can, item, "select");
}); can.page.ClassList.add(can, ui.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: {}}; var input = {type: "input", name: item.name, data: item, dataset: {}};
switch (item.type = item.type || item._type || item._input || "text") { switch (item.type = item.type || item._type || item._input || "text") {
case "upfile": item.type = "file"; break 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 "button": item.value = item.name || item.value || "查看"; break
case "select": case "select":
item.values = typeof item.values == "string"? item.values.split(" "): item.values; 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]); item.type == "select" && (target.value = item.value || item.values[item.index||0]);
return target; 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) { 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 || {} 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") { input.value = value; if (data.action == "auto") {
can.run(event, [], function(msg) {}) 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) {}) }, [], function(can) {})
Volcanos("onlayout", { Volcanos("onlayout", { _init: function(can, meta, list, cb, target) {
_init: function(can, meta, list, cb, target) {
var width = can._width, height = can._height; var width = can._width, height = can._height;
if (Volcanos.meta.follow[can._root]) { debugger } if (Volcanos.meta.follow[can._root]) { debugger }

View File

@ -3,7 +3,6 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=0.7,user-scalable=no"> <meta name="viewport" content="width=device-width,initial-scale=0.7,user-scalable=no">
<title>volcanos</title> <title>volcanos</title>
<link rel="shortcut icon" type="image/ico" href="favicon.ico"> <link rel="shortcut icon" type="image/ico" href="favicon.ico">
<link rel="stylesheet" type="text/css" href="style.css"> <link rel="stylesheet" type="text/css" href="style.css">
</head> </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: "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: "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: "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: []}, ], main: {name: "Header", engine: "remote", list: []},
list: ["plugin/state.js", "plugin/input.js", "plugin/table.js", list: ["plugin/state.js", "plugin/input.js", "plugin/table.js",
"plugin/input/key", "plugin/input/key",
@ -21,11 +23,11 @@ var Preload = Config.libs; Config.panes.forEach(function(pane) {
Preload = Preload.concat(pane.list); Preload = Preload.concat(pane.list);
}); Preload = Preload.concat(Config.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, _head: document.head, _body: document.body,
_width: window.innerWidth, _height: window.innerHeight, _width: window.innerWidth, _height: window.innerHeight,
}, Preload.concat(Config.volcano), function(can) { // 程序入口 }, 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); console.log(can._root, can._name, "start", can, msg);
can.Footer.onaction._init(can.Footer, msg); can.Footer.onaction._init(can.Footer, msg);
}, can._target) }, can._target)

View File

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

View File

@ -1,6 +1,5 @@
Volcanos("onimport", {help: "导入数据", list: [], 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) { _init: function(can, msg, list, cb, target) {
@ -9,36 +8,25 @@ Volcanos("onaction", {help: "交互操作", list: [],
}) })
Volcanos("onexport", {help: "导出数据", list: [], Volcanos("onexport", {help: "导出数据", list: [],
_init: function(can, msg, list, cb, target) { var key = "action"; _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) { 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._output.scrollTop+1);
can.Cache(can.Conf("river")+can.Conf("storm"), can._output, can.Conf(key)); var river = can.Conf("river", msg.Option("river")), storm = can.Conf("storm", msg.Option("storm"));
var river = can.Conf("river", msg.Option("river")); var position = can.Conf(key, msg.Option(key, can.Cache(river+"."+storm, can._output)));
var storm = can.Conf("storm", msg.Option("storm")); if (position) { can._output.scrollTo(0, position-1); typeof cb == "function" && cb(msg); return }
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
}
var pod = can.user.Search(can, "pod") var pod = can.user.Search(can, "pod"); msg = can.request({}, {});
msg = can.request({}, {}), can.run(msg._event, [river, storm], function(msg) { can._output.innerHTML = ""; can.run(msg._event, [river, storm], function(msg) { can._output.innerHTML = ""; msg.Table(function(value, index, array) {
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) {
// 添加列表 sub.run = function(event, cmds, cb, silent) {
can.onappend._init(can, value, Config.libs.concat(["plugin/state.js"]), function(sub) {
// 插件回调 // 插件回调
sub.run = function(event, cmds, cb, silent) { var msg = can.request(event); pod && msg.Option("pod", pod);
var msg = can.request(event) can.run(event, [river, storm, index].concat(cmds), cb, silent);
pod && msg.Option("pod", pod) can.run(msg._event, ["search", "Footer.onaction.cmd"])
can.run(event, [river, storm, index].concat(cmds), cb, silent) }
} }, can._output);
}, can._output) }); typeof cb == "function" && cb(msg); })
can.Conf(key, "which") });
});
msg.Option(key, can.Conf(key))
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) { _init: function(can, msg, list, cb, target) {
can.onexport._init(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: [], Volcanos("onexport", {help: "导出数据", list: [],
_init: function(can, msg, list, cb, target) { can._output.innerHTML = ""; _init: function(can, msg, list, cb, target) {
msg = can.request({}, {}) msg = can.request({}, {}), can.run(msg._event, [], function(msg) { can._output.innerHTML = "";
can.run(msg._event, [], function(msg) {
console.log(can._root, can._name, "show", msg.result)
can.core.List(msg.result, function(title) { can.core.List(msg.result, function(title) {
can.page.Append(can, can._output, [{view: ["title", "div", 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) { 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: [], Volcanos("onaction", {help: "交互数据", list: [],
_init: function(can, msg, list, cb, target) { _init: function(can, msg, list, cb, target) {
can.onexport._init(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) { title: function(event, can, key) {
can.run(event, ["search", "Action.onaction._init"], function(msg) {
console.log(msg)
})
}, },
username: function(event, can, key) { username: function(event, can, key) {
// can.ui[key].innerHTML = can.base.Time().split(" ")[1] // can.ui[key].innerHTML = can.base.Time().split(" ")[1]

View File

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

View File

@ -1,42 +1,43 @@
Volcanos("onimport", {help: "导入数据", list: [], 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) { _init: function(can, msg, list, cb, target) {
can.onexport._init(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: [], Volcanos("onexport", {help: "导出数据", list: [],
_init: function(can, msg, list, cb, target) { var key = "storm"; _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) { 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)); can.Cache(can.Conf("river"), can._output, can.Conf(key));
var river = can.Conf("river", msg.Option("river")); 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 = ""; msg = can.request({}, {}), can.run(msg._event, [river], function(msg) { can._output.innerHTML = ""; var select; msg.Table(function(value, index, array) {
if (Volcanos.meta.follow[can._root]) { debugger } var view = can.onappend.item(can, can._output, "item", value, function(event, item) {
var select; msg.Table(function(value, index, array) { // 左键点击
// 添加列表 can.Conf(key, value.key); can.run(event, ["search", "Action.onaction._init"], function(msg) {})
var view = can.onappend.item(can, can._output, "item", value, function(event, item) { }, function(event, item) {
// 左键点击 // 右键点击
can.Conf(key, value.key); can.run(event, ["search", "Action.onaction._init"], function(msg) { can.onappend.carte(can, can.ondetail, can.ondetail.list, function(event, item, meta) {
}) meta[item] && meta[item](event, can, value)
}, function(event, item) { console.log(item)
// 右键点击 })
}); });
if (index == 0 || [value.key, value.name].indexOf(can.user.Search(can, key)) > -1) {
msg.Option("storm", value.key) if (index == 0 || [value.key, value.name].indexOf(can.user.Search(can, key)) > -1) {
select = view msg.Option(key, value.key), select = view
} }
}); select && select.click(); }); select && select.click(); typeof cb == "function" && cb(msg); })
typeof cb == "function" && cb(msg)
})
}) })
}, },
}) })

View File

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

View File

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

View File

@ -15,12 +15,9 @@ Volcanos("onimport", {help: "导入数据", list: [],
can.Action("mode", "draw") can.Action("mode", "draw")
can.Action("shape", "path") 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") { if (msg.Option("_display") == "table") {
// 文件目录 can.onappend.table(can, target, "table", msg)
can.page.AppendTable(can, output, msg, msg.append, function(event, value, key, index, tr, td) {
can.Export(event, value, key)
})
return typeof cb == "function" && cb(msg); return typeof cb == "function" && cb(msg);
} }
@ -31,8 +28,8 @@ Volcanos("onimport", {help: "导入数据", list: [],
can.last = null can.last = null
// 加载绘图 // 加载绘图
var code = can.page.AppendBoard(can, output, msg.Result()||can.Export(event, null, "file")) var code = can.page.AppendBoard(can, can._output, msg.Result()||can.Export(event, null, "file"))
can.page.Select(can, output, "svg", function(svg) { can.page.Select(can, can._output, "svg", function(svg) {
// 画布 // 画布
can.onaction.init(event, can, msg, "init", svg); can.onaction.init(event, can, msg, "init", svg);
can.group = can.svg = 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.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.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.Action("width", 600)
can.onaction["编辑"]({}, can) can.onaction["编辑"]({}, can)
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"], "表格"], Volcanos("onaction", {help: "组件菜单", list: ["编辑", "清空", "股价图", "趋势", "比例", ["width", "200", "400", "600", "800", "1000"], ["height", "200", "400", "600"], "表格"],

View File

@ -1,7 +1,7 @@
Volcanos("onimport", {help: "导入数据", list: [], Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, msg, list, cb, target) { can._output.innerHTML = ""; _init: function(can, msg, list, cb, target) { can._output.innerHTML = "";
can.onappend.table(can, target, "table", msg) 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) return typeof cb == "function" && cb(msg)
}, },
}) })

View File

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