1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-26 01:04:06 +08:00
This commit is contained in:
shaoying 2021-02-09 18:09:01 +08:00
parent 1fed6b185e
commit cebbef0366
6 changed files with 113 additions and 71 deletions

View File

@ -114,6 +114,21 @@ Volcanos("base", {help: "数据类型",
return res + (n > 0? "."+parseInt(n/10): "") + "s"
},
Format: shy("数据格式化", function(obj) { return JSON.stringify(obj) }),
Simple: function() { var res = []
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i]; switch (typeof arguments[i]) {
case "number": res.push(arg); break
case "string": res.push(arg); break
case "object":
if (arg.length > 0) {
res = res.concat(arg)
} else {
for (var k in arg) { res.push(k, arg[k]) }
}
}
}
return res
},
Number: shy("数字格式化", function(d, n) { var result = []
while (d > 0) { result.push(d % 10); d = parseInt(d / 10); n-- }
while (n > 0) { result.push("0"); n-- }

View File

@ -1,6 +1,8 @@
Volcanos("user", {help: "用户模块", agent: {
scanQRCode: function(cb) {
typeof cb == "function" && cb({name: "some"})
scanQRCode: function(cb, can) {
can.user.input(event, can, [{_input: "textarea"}], function(ev, button, data, list, args) {
cb(list[0])
})
},
getLocation: function(cb) {
typeof cb == "function" && cb({name: "some"})
@ -122,19 +124,19 @@ Volcanos("user", {help: "用户模块", agent: {
var ui = can.user.input({clientX: 200, clientY: 100}, can, [
{username: "username", name: "用户"},
{password: "password", name: "密码"},
{button: [["登录", function(event) {
can.user.Cookie(can, "sessid", "")
can.run({}, ["login", ui["用户"].value, ui["密码"].value], function(msg) {
if (can.user.Cookie(can, "sessid")||msg.Option("user.name")||msg.Result()) {
can.page.Remove(can, ui.first); return typeof cb == "function" && cb()
}
can.user.alert("用户或密码错误")
})
}], ["扫码", function(event) {
// TODO
}]]},
{button: ["登录", "扫码"]},
], function(event, button, data, list) {
// TODO
switch (button) {
case "登录":
can.user.Cookie(can, "sessid", "")
can.run({}, ["login", ui["用户"].value, ui["密码"].value], function(msg) {
if (can.user.Cookie(can, "sessid")||msg.Option("user.name")||msg.Result()) {
can.page.Remove(can, ui.first); return typeof cb == "function" && cb()
}
can.user.alert("用户或密码错误")
})
break
}
})
},
carte: function(event, can, meta, list, cb, view) {
@ -196,9 +198,7 @@ Volcanos("user", {help: "用户模块", agent: {
var button; var ui = can.page.Append(can, document.body, [{view: ["input inputs", "fieldset"], style: {left: x+"px", top: y+"px"}, list: [
{view: ["option", "table"], list: can.core.List(form, function(item) {
if (item.button) { button = can.core.List(item.button, function(item) {
return {button: typeof item == "object"? item: [item, function(event) { cbs(event, item) }]}
}); return }
if (item.button) { button = item.button; return }
item.run = function(event, cmds, cb) {
var msg = can.request(event, Option())
@ -226,11 +226,12 @@ Volcanos("user", {help: "用户模块", agent: {
]}])
can.onappend._action(can, button||["提交", "关闭"], ui.action, {
_engine: function(event, can, key) { cbs(event, key) },
"提交": function(event) { cbs(event, "提交") },
"关闭": function(event) { can.page.Remove(can, ui.first) },
})
can.page.Select(can, ui.first, "input", function(item, index) {
can.page.Select(can, ui.first, "textarea,input", function(item, index) {
index == 0 && can.core.Timer(100, function() {
item.focus(), item.setSelectionRange(0, -1)
})

View File

@ -47,7 +47,14 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
case "inner": can.onimport.tabview(can, msg.Option("path"), msg.Option("file"), msg.Option("line")); return
} }
can.run(event, ["action", "favor"].concat(cmds), cb, true)
can.run(event, ["action", "favor"].concat(cmds), function(msg) {
typeof cb == "function" && cb(msg)
can.core.Timer(10, function() {
can.onappend._action(sub, ["关闭"], sub._action, {
"关闭": function(event) { can.onmotion.hidden(sub, sub._target) },
})
})
}, true)
}, can.ui.favor = sub
can.onmotion.hidden(sub, sub._target)

View File

@ -1,53 +1,60 @@
Volcanos("onimport", {help: "导入数据", list: [], _merge: function(can, sub) {
can.onimport.inner_init = sub._init
}, _init: function(can, msg, list, cb, target) {
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
can.require(["/plugin/local/code/inner.js"], function(can) {
can.onimport.inner_init(can, msg, list, function() {
can.onimport._input(can), can.onimport._output(can)
can.keylist = [], can.onkeymap._init(can, "insert")
typeof cb == "function" && cb(msg)
var ui = can.page.Append(can, can.ui.content.parentNode, [
{view: ["current", "input"], onkeydown: function(event) {
can.onkeymap.parse(event, can, "insert")
can.core.Timer(10, function() {
can.current.text(can.ui.current.value)
})
}, onblur: function(event) {
can.current.text(can.ui.current.value)
}, onfocus: function(event) {
can._output.scrollLeft += -1000
can.current.scroll(-1000, 0)
}, onclick: function(event) {
can.onkeymap._insert(can)
}},
{view: ["command", "input"], onkeydown: function(event) {
can.onkeymap.parse(event, can, "command")
}, onfocus: function(event) {
can._output.scrollLeft += -1000
can.current.scroll(-1000, 0)
}},
]); can.base.Copy(can.ui, ui, "current", "command")
var ui = can.page.Appends(can, can.ui.display, [
{view: "action", list: [
{input: ["cmd", function(event) {
can.onkeymap.parse(event, can, "command")
}], value: "", onfocus: function(event) {
event.target.setSelectionRange(0, -1)
can.onkeymap._command(can)
}},
{button: ["执行", function(event) {
can.onkeymap.command.Enter(event, can, can.ui.cmd.value)
}]},
{button: ["关闭", function(event) {
can.onmotion.hidden(can, can.ui.display)
} ]},
]}, {view: "output"},
]); can.base.Copy(can.ui, ui, "output", "cmd")
}, target)
}, function(can, name, sub) {
sub._name == "onimport" && (can.onimport.inner_init = sub._init)
})
},
_input: function(can) {
var ui = can.page.Append(can, can.ui.content.parentNode, [
{view: ["current", "input"], onkeydown: function(event) {
can.onkeymap.parse(event, can, "insert")
can.core.Timer(10, function() {
can.current.text(can.ui.current.value)
})
}, onblur: function(event) {
can.current.text(can.ui.current.value)
}, onfocus: function(event) {
can._output.scrollLeft += -1000
can.current.scroll(-1000, 0)
}, onclick: function(event) {
can.onkeymap._insert(can)
}},
{view: ["command", "input"], onkeydown: function(event) {
can.onkeymap.parse(event, can, "command")
}, onfocus: function(event) {
can._output.scrollLeft += -1000
can.current.scroll(-1000, 0)
}},
]); can.base.Copy(can.ui, ui, "current", "command")
},
_output: function(can) {
var ui = can.page.Appends(can, can.ui.display, [
{view: "action", list: [
{input: ["cmd", function(event) {
can.onkeymap.parse(event, can, "command")
}], value: "", onfocus: function(event) {
event.target.setSelectionRange(0, -1)
can.onkeymap._command(can)
}},
{button: ["执行", function(event) {
can.onkeymap.command.Enter(event, can, can.ui.cmd.value)
}]},
{button: ["清空", function(event) {
can.onmotion.clear(can, ui.output)
} ]},
{button: ["关闭", function(event) {
can.onmotion.hidden(can, can.ui.display)
} ]},
]}, {view: "output"},
]); can.base.Copy(can.ui, ui, "output", "cmd")
},
}, ["/plugin/local/code/vimer.css"])
Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"], _init: function(can, mode) {
can.core.List(can.onkeymap.list, function(item) { var engine = {}

View File

@ -76,7 +76,9 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
},
onclick: function(event) { if (event.target.type == "button") {
var msg = can.request(event, can.task)
can.run(event, ["action", event.target.name])
can.run(event, ["action", event.target.name], function(msg) {
can.run()
}, true)
} },
}]) })
@ -84,14 +86,14 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
index: task["extra.ctx"]+"."+task["extra.cmd"], args: task["extra.arg"],
}, function(sub, meta) {
sub.run = function(event, cmds, cb) {
var msg = can.request(event); can.core.Item(can.task, function(key, value) {
msg.Option("task."+key, value)
})
var msg = can.request(event, {"task.zone": task.zone, "task.id": task.id})
can.run(event, ["action", "command", "run", meta.index].concat(cmds), function(msg) {
typeof cb == "function" && cb(msg)
}, true)
}
}, can.ui.display)
can.page.Modify(can, can.ui.display, {style: {display: "block"}})
// can.onmotion.show(can, can.ui.display)
},
day: function(can, msg) {

View File

@ -60,14 +60,24 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
can.user.agent.scanQRCode(function(text) { var cmds = ["action", cmd]
can.core.Item(can.base.parseJSON(text), function(key, value) { cmds.push(key, value) })
can.run(event, cmds, function(msg) { can.user.toast(can, "添加成功"), can.run() }, true)
})
}, can)
},
scanQRCode0: function(event, can) { can.user.agent.scanQRCode() },
getClipboardData: function(event, can, cmd) {
navigator.clipboard.readText().then(text => { var cmds = ["action", cmd]
can.core.Item(can.base.parseJSON(text), function(key, value) { cmds.push(key, value) })
can.run(event, cmds, function(msg) { can.user.toast(can, text, "添加成功"), can.run() }, true)
}).catch((err) => { can.base.Log(err) })
if (navigator.clipboard) {
navigator.clipboard.readText().then(text => {
can.run(event, can.base.Simple("action", cmd, can.base.parseJSON(text)), function(msg) {
can.user.toast(can, text, "添加成功"), can.run()
}, true)
}).catch((err) => { can.base.Log(err) })
return
} else {
can.user.input(event, can, [{_input: "textarea"}], function(ev, button, data, list, args) {
can.run(event, can.base.Simple("action", cmd, can.base.parseJSON(list[0])), function(msg) {
can.user.toast(can, list[0], "添加成功"), can.run()
}, true)
})
}
},
getLocation: function(event, can, cmd) { var msg = can.request(can)
can.user.agent.getLocation(function(res) { can.request(event, res)