From cebbef0366e22c0a69d56a908c52157654292fce Mon Sep 17 00:00:00 2001 From: shaoying Date: Tue, 9 Feb 2021 18:09:01 +0800 Subject: [PATCH] opt some --- lib/base.js | 15 ++++++ lib/user.js | 37 +++++++-------- plugin/local/code/inner.js | 9 +++- plugin/local/code/vimer.js | 93 ++++++++++++++++++++------------------ plugin/local/team/plan.js | 10 ++-- plugin/state.js | 20 ++++++-- 6 files changed, 113 insertions(+), 71 deletions(-) diff --git a/lib/base.js b/lib/base.js index fc2b1d05..9b042820 100644 --- a/lib/base.js +++ b/lib/base.js @@ -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-- } diff --git a/lib/user.js b/lib/user.js index 6cf93d85..0a92d60c 100644 --- a/lib/user.js +++ b/lib/user.js @@ -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) }) diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index 9b614bdf..526a7430 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -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) diff --git a/plugin/local/code/vimer.js b/plugin/local/code/vimer.js index 96672f6b..3197af85 100644 --- a/plugin/local/code/vimer.js +++ b/plugin/local/code/vimer.js @@ -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 = {} diff --git a/plugin/local/team/plan.js b/plugin/local/team/plan.js index 970707b2..982f4cf6 100644 --- a/plugin/local/team/plan.js +++ b/plugin/local/team/plan.js @@ -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) { diff --git a/plugin/state.js b/plugin/state.js index 7fef614a..a921088b 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -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)