1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00
This commit is contained in:
shaoying 2019-12-23 02:19:53 +08:00
parent 94ee5322a2
commit e249031505
5 changed files with 28 additions and 20 deletions

View File

@ -38,6 +38,9 @@ var can = Volcanos("chat", {
Import: function(event, value, key) {var cb = pane.onimport[key];
typeof cb == "function" && cb(event, pane, value, key, pane.output);
can.core.List(pane._plugins, function(item) {item.Import(event, value, key)})
pane.page.Select(pane, pane.action, "input."+key, function(item) {
item.value = value
})
},
Size: function(event, width, height) {var cb = pane.onimport["size"];
@ -107,7 +110,7 @@ var can = Volcanos("chat", {
}, meta)
return pane
}),
Plugin: shy("构造插件", function(can, name, meta, run, field) {
Plugin: shy("构造插件", function(can, name, meta, run, field, cb) {
var option = field.querySelector("form.option");
var action = field.querySelector("div.action");
var output = field.querySelector("div.output");
@ -191,14 +194,16 @@ var can = Volcanos("chat", {
Show: function(type, msg, cb) {plugin.msg = msg, msg._plugin_name = name;
return plugin._output = plugin[type] = can.Output(plugin, feature, type, msg, cb, output, option)
},
Clone: function(event) {meta.nick = meta.name + can.ID()
Clone: function(event, cb) {meta.nick = meta.name + can.ID()
can.Plugin(can, meta.nick, meta, run,
can.page.AppendField(can, field.parentNode, "item "+meta.group+" "+meta.nick, meta))
can.page.AppendField(can, field.parentNode, "item "+meta.group+" "+meta.nick, meta), cb)
},
Delete: function(event) {field.parentNode.removeChild(field)},
}, Config.libs.concat(["plugin/"+(meta.type||"state")]), function(plugin) {plugin.Conf(meta);
var list = JSON.parse(meta.inputs||"[]");
can.core.Next(list.length>0? list: [{type: "text"}, {type: "button", value: "执行"}], plugin.Append)
can.core.Next(list.length>0? list: [{type: "text"}, {type: "button", value: "执行"}], plugin.Append, function() {
typeof cb == "function" && cb(plugin)
})
}, meta)
return plugin
}),
@ -210,6 +215,8 @@ var can = Volcanos("chat", {
input.target.value = value;
item.action == "auto"? can.Runs(event): can.Check(event, input.target);
},
Append: function(event, value) {can.Append(null, function(input) {can.Select(event, input.target, true)})},
Clone: function(event, value) {can.Clone(event, function(input) {input.Select(event, null, true)})},
run: function(event, cmd, cb, silent) {
(input[item.cb] || can[item.cb] || can.Check)(event, event.target, cb);
},
@ -218,7 +225,7 @@ var can = Volcanos("chat", {
var target = input.onimport.init(input, item, name, value, option);
input.target = target, target.Input = input;
typeof cb == "function" && cb();
typeof cb == "function" && cb(input);
})
return input
}),

View File

@ -37,19 +37,9 @@ Volcanos("onimport", {help: "导入数据", list: [],
can._plugin && can._plugin.Import(event, msg, cmd)
},
pod: function(event, can, value, cmd, output) {
can.page.Select(can, can.action, "input."+cmd, function(item) {
item.value = value
})
},
you: function(event, can, value, cmd, output) {
can.page.Select(can, can.action, "input."+cmd, function(item) {
document.title = item.value = value;
})
},
})
Volcanos("onaction", {help: "组件交互", list: [["layout", "工作", "办公", "聊天"], "清屏", "刷新", "串行", "并行",
{input: "pod"}, {input: "you"}],
{input: "pod"}, {input: "you"}, {input: "hot"}],
"工作": function(event, can, msg, cmd, output) {
can.Export(event, cmd, "layout")
},

View File

@ -1,7 +1,7 @@
Volcanos("onimport", {help: "导入数据", list: [],
init: shy("添加控件", function(can, item, name, value, option) {
var input = {type: "input", name: name, data: item};
item.type = item.type || item._type;
item.type = item.type || item._type || item._input;
switch (item.type) {
case "upfile": item.type = "file"; break
case "select":
@ -40,7 +40,16 @@ Volcanos("onimport", {help: "导入数据", list: [],
Volcanos("onaction", {help: "控件交互", list: [],
onclick: function(event, can) {can.Select(event); can.item.type == "button" && can.run(event)},
onkeydown: function(event, can) {
can.page.oninput(event, can)
can.page.oninput(event, can, function(event) {
switch (event.key) {
case "b":
can.Append(event)
return true
case "m":
can.Clone(event)
return true
}
})
switch (event.key) {
case "Enter": can.run(event, []); break

View File

@ -77,8 +77,10 @@ Volcanos("ondetail", {help: "组件详情", list: ["选择", "编辑", "删除",
"编辑": function(event, can, msg, index, key, cmd, td) {
var text = td.innerHTML;
can.page.Appends(can, td, [{type: "input", style: {width: td.clientWidth+"px"}, data: {onkeydown: function(event) {
if (event.key == " ") {return event.stopPropagation()}
if (event.key != "Enter") {return}
can.run(event, [msg.Ids(index), "modify", key == "value" && msg.key? msg[key][index]: key, event.target.value, text], function(msg) {
if (key == "value" && msg.key) {key = msg.key[index]}
can.run(event, [msg.Ids(index), "modify", key, event.target.value, text], function(msg) {
td.innerHTML = event.target.value;
can.user.toast("修改成功")
}, true)

View File

@ -78,7 +78,7 @@ function Volcanos(name, can, libs, cb, msg) { // 封装模块
msg = event.msg = msg || event.msg || {}, msg.__proto__ = proto || {
_create_time: can.base.Time(), _source: can,
Log: shy("输出日志", function() {console.log(arguments)}),
Ids: function(index) {
Ids: function(index, key) {
var id = index;
msg && msg.id && (id = msg.id[index]) || msg && msg.name && (id = msg.name[index]);
return id;