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

opt 12306

This commit is contained in:
shaoying 2020-01-08 18:31:12 +08:00
parent d13647258d
commit 806298238c
4 changed files with 35 additions and 100 deletions

View File

@ -199,8 +199,9 @@ var can = Volcanos("chat", {
can.page.AppendField(can, field.parentNode, "item "+meta.group+" "+meta.nick, meta), cb) can.page.AppendField(can, field.parentNode, "item "+meta.group+" "+meta.nick, meta), cb)
}, },
Delete: function(event) {field.parentNode.removeChild(field)}, Delete: function(event) {field.parentNode.removeChild(field)},
}, Config.libs.concat(["plugin/"+(meta.type||"state")]), function(plugin) {plugin.Conf(meta); }, Config.libs.concat(["plugin/"+(meta.type||feature.active||"state")]), function(plugin) {plugin.Conf(meta);
var list = JSON.parse(meta.inputs||"[]"); var list = JSON.parse(meta.inputs||"[]");
plugin.onimport._init? plugin.onimport._init(plugin, feature, plugin.output, plugin.action, plugin.option):
can.core.Next(list.length>0? list: [{type: "text"}, {type: "button", value: "执行"}], plugin.Append, function() { can.core.Next(list.length>0? list: [{type: "text"}, {type: "button", value: "执行"}], plugin.Append, function() {
typeof cb == "function" && cb(plugin) typeof cb == "function" && cb(plugin)
}) })

View File

@ -78,6 +78,9 @@ Volcanos("page", {help: "网页模块",
data.value = data.value || name; data.value = data.value || name;
data.innerText = list[0], data.onclick = function(event) { data.innerText = list[0], data.onclick = function(event) {
typeof list[1] == "function" && list[1](event, name); typeof list[1] == "function" && list[1](event, name);
event.stopPropagation()
event.preventDefault()
return true
} }
} else if (item.select) {var list = item.select; } else if (item.select) {var list = item.select;
@ -106,7 +109,7 @@ Volcanos("page", {help: "网页模块",
} else if (item.username) {var list = can.core.List(item.username); } else if (item.username) {var list = can.core.List(item.username);
type = "input", name = name || list[0] || "username"; type = "input", name = name || list[0] || "username";
data.name = data.name || name; data.name = data.name || name;
data.className = data.className || data.name; data.className = list[1] || data.className || data.name;
data.placeholder = data.placeholder || data.name; data.placeholder = data.placeholder || data.name;
data.title = data.title || data.placeholder; data.title = data.title || data.placeholder;
data.autocomplete = data.autocomplete || "username" data.autocomplete = data.autocomplete || "username"
@ -115,7 +118,7 @@ Volcanos("page", {help: "网页模块",
type = "input", name = name || list[0] || "password"; type = "input", name = name || list[0] || "password";
data.type = "password" data.type = "password"
data.name = data.name || name; data.name = data.name || name;
data.className = data.className || data.name; data.className = list[1], data.className || data.name;
data.placeholder = data.placeholder || data.name; data.placeholder = data.placeholder || data.name;
data.title = data.title || data.placeholder; data.title = data.title || data.placeholder;
data.autocomplete = data.autocomplete || "current-password" data.autocomplete = data.autocomplete || "current-password"

View File

@ -16,6 +16,7 @@ Volcanos("onimport", {help: "导入数据", list: [],
var half = parseFloat(item.half||"1")||1; var half = parseFloat(item.half||"1")||1;
input.type = "textarea", item.style = "height:"+(item.height||"50px")+";width:"+parseInt(((500-35)/half))+"px"; input.type = "textarea", item.style = "height:"+(item.height||"50px")+";width:"+parseInt(((500-35)/half))+"px";
// no break // no break
case "password":
case "text": case "text":
can.page.ClassList.add(can, item, "args"); can.page.ClassList.add(can, item, "args");
item.value = value || item.value || ""; item.value = value || item.value || "";
@ -30,7 +31,8 @@ Volcanos("onimport", {help: "导入数据", list: [],
}) })
var target = can.Dream(option, "input", input)[input.name]; var target = can.Dream(option, "input", input)[input.name];
(item.type == "text" || item.type == "textarea") && !target.placeholder && (target.placeholder = item.name || ""); !target.placeholder && (target.placeholder = item.name || "");
// (item.type == "text" || item.type == "textarea") && !target.placeholder && (target.placeholder = item.name || "");
item.type == "text" && !target.title && (target.title = item.placeholder || item.name || ""); item.type == "text" && !target.title && (target.title = item.placeholder || item.name || "");
item.type == "button" && item.action == "auto" && can.run && can.run({}); item.type == "button" && item.action == "auto" && can.run && can.run({});
return target; return target;

View File

@ -1,110 +1,39 @@
Volcanos("onimport", {help: "导入数据", list: [], Volcanos("onimport", {help: "导入数据", list: [],
init: shy("添加控件", function(can, item, name, value, option) { _init: function(can, feature, output, action, option) {
var input = {type: "input", name: name, data: item}; function passcode(event) {
item.type = item.type || item._type || item._input; can.Run(event, [], function(msg) {
switch (item.type) { can.page.Appends(can, output, [{type: "img", src: "data:image/jpg;base64,"+msg.image[0], onclick: function(event) {
case "upfile": item.type = "file"; break var p = can.page.Append(can, output, [{view: ["what", "div"], dataset: {meta: ""+(event.offsetX+1)+","+(event.offsetY-30+1)+""}, style: {
case "select": background: "red", position: "absolute", width: "20px", height: "20px",
item.values = typeof item.values == "string"? item.values.split(" "): item.values; left: event.offsetX+1+"px", top: event.offsetY+30+1+"px",
input.type = "select", input.list = item.values.map(function(value) { }, onclick: function(event) {
return {type: "option", value: value, inner: value}; p.parentNode.removeChild(p)
}) }}]).what
item.value = value || item.value || item.values[0]; }}])
can.page.ClassList.add(can, item, "args"); }, true)
break
case "textarea":
var half = parseFloat(item.half||"1")||1;
input.type = "textarea", item.style = "height:"+(item.height||"50px")+";width:"+parseInt(((500-35)/half))+"px";
// no break
case "text":
can.page.ClassList.add(can, item, "args");
item.value = value || item.value || "";
item.autocomplete = "off";
break
case "button":
item.value = item.value || item.name;
} }
can.page.ClassList.add(can, item, item.view);
can.core.List((item.clist||"").split(" "), function(value) {
can.page.ClassList.add(can, item, value);
})
var target = can.Dream(option, "input", input)[input.name]; can.page.Append(can, option, [
(item.type == "text" || item.type == "textarea") && !target.placeholder && (target.placeholder = item.name || ""); {button: ["刷新", passcode]},
item.type == "text" && !target.title && (target.title = item.placeholder || item.name || ""); {username: ["账号", "args"]}, {password: ["密码", "args"]},
item.type == "button" && item.action == "auto" && can.run && can.run({}); {button: ["登录", function(event) {
return target; var point = can.page.Select(can, output, "div.what", function(item) {return item.dataset.meta}).join(",")
}), point == ""? can.page.toast("请点击图片"): can.Run(event, ["check", point], function(msg) {
path: function(event, can, value, cmd, target) {
return target.value + (target.value == "" || target.value.endsWith("/")? "": "/") + value
},
})
Volcanos("onaction", {help: "控件交互", list: [],
onclick: function(event, can) {
switch (event.target.value) {
case "登录":
can._plugin.Run(event, ["check", can.page.Select(can, can._plugin._output.target, "div.what", function(item) {return item.dataset.meta}).join(",")], function(msg) {
if (msg.result_code == "4") { if (msg.result_code == "4") {
can._plugin.Run(event, ["login"].concat(can.page.Select(can, can._plugin.target, "input.args", function(item) {return item.value})).concat([msg.cmds[4]]), function(msg) { var input = can.page.Select(can, option, "input.args", function(item) {return item.value})
can.Run(event, ["login"].concat(input).concat([msg.cmds[4]]), function(msg) {
can.page.toast(msg.result_message[0]) can.page.toast(msg.result_message[0])
}) })
} else { } else {
can._plugin.Run(event, []) passcode(event)
} }
}, true) }, true)
break }]},
case "刷新": ])
can.item.type == "button" && can._plugin.Run(event, [])
break
}
},
onkeydown: function(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
case "Escape": event.target.blur(); break
default:
if (event.target.value.endsWith("j") && event.key == "k") {
can.page.DelText(event.target, event.target.selectionStart-1, 2);
event.target.blur();
break
}
return false
}
event.stopPropagation()
event.preventDefault()
return true
},
onkeyup: function(event, can) {
switch (event.key) {
default: return false
}
event.stopPropagation()
event.preventDefault()
return true
},
})
Volcanos("onchoice", {help: "控件菜单", list: ["全选", "复制", "清空"],
"全选": function(event, can, msg, value, target) {
can.target.focus(), can.target.setSelectionRange(0, can.target.value.length);
},
"复制": function(event, can, msg, value, target) {
can.user.toast(can.page.CopyText(can, can.target.value), "复制成功")
},
"清空": function(event, can, msg, value, target) {
can.target.value = "";
}, },
}) })
Volcanos("onaction", {help: "控件交互", list: []})
Volcanos("onchoice", {help: "控件菜单", list: []})
Volcanos("ondetail", {help: "控件详情", list: []}) Volcanos("ondetail", {help: "控件详情", list: []})
Volcanos("onexport", {help: "导出数据", list: []}) Volcanos("onexport", {help: "导出数据", list: []})