diff --git a/frame.js b/frame.js index 49e9667e..4f4cfc68 100644 --- a/frame.js +++ b/frame.js @@ -28,7 +28,7 @@ Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta, }, remote: function(event, can, msg, pane, cmds, cb) { msg.Option("_handle", "false") if (pane.onengine.engine(event, can, msg, pane, cmds, cb)) { return } - can.misc.Run(event, can, {names: pane._name}, cmds, cb) + can.misc.Runs(event, can, {names: pane._name}, cmds, cb) pane.run(event, ["search", "Footer.onimport.ncmd"]) }, engine: function(event, can, msg, pane, cmds, cb) { return false }, @@ -126,11 +126,21 @@ Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta, ]}, }}, "profile": {name: "测试群", storm: { - "pprof": {name: "pprof", index: [ + "auto": {name: "智能 auto", index: [ + "web.code.autogen", + "web.code.compile", + "web.code.publish", + ]}, + "code": {name: "性能 code", index: [ "web.code.bench", "web.code.pprof", "web.code.favor", ]}, + "pack": {name: "功能 pack", index: [ + "web.code.webpack", + "web.code.binpack", + "web.code.install", + ]}, }}, "operate": {name: "运维群", storm: { "cli": {name: "系统 cli", index: [ @@ -445,6 +455,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, meta.name = meta.name||value.name||"story" meta.help = meta.help||value.help||"story" meta.width = meta.width||can.Conf("width") + meta.height = meta.width||can.Conf("height") meta.type = meta.type||"story" can.onappend._init(can, meta, ["/plugin/state.js"], function(sub) { @@ -548,7 +559,7 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can) { display: function(can, target) { target = target || can._target return can.page.Appends(can, target, [{view: ["layout", "table"], list: [ {type: "tr", list: [{view: "content"}]}, - {type: "tr", list: [{view: "display", style: {display: "none"}}]}, + {type: "tr", list: [{view: "display"}]}, ]}]) }, }) @@ -690,6 +701,7 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _init: function(can, targe }) Volcanos("onmotion", {help: "动态交互", list: [], _init: function(can, target) { if ((can.user.Search(can, "topic")||"").indexOf("print") > -1) { return } + return var count = 0, add = true can.user.isMobile || can.user.Search(can, "share") || can.core.Timer({interval: 100}, function() { diff --git a/lib/misc.js b/lib/misc.js index 18f5ed69..4df802b2 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -107,6 +107,17 @@ Volcanos("misc", {help: "工具模块", Message: function(event, can) { var msg xhr.setRequestHeader("Accept", "application/json") try { xhr.send(data) } catch(e) { can.base.Log(e) } }), + Runs: shy("请求后端", {order: 0}, function(event, can, dataset, cmds, cb) { + var key = dataset.names+"."+cmds.join(",") + if (can.user.isLocalFile) { var msg = can.request(event); msg.Clear("append") + var res = Volcanos.meta.pack[key]; res && msg.Copy(res) + return typeof cb == "function" && cb(msg) + } + can.misc.Run(event, can, dataset, cmds, function(msg) { + Volcanos.meta.pack[key] = msg + typeof cb == "function" && cb(msg) + }) + }), Run: shy("请求后端", {order: 0}, function(event, can, dataset, cmds, cb) { var msg = can.request(event = event || {}) var form = {cmds: cmds||msg.cmd} diff --git a/pane/Action.js b/pane/Action.js index 0a8a78a1..002dfdc2 100644 --- a/pane/Action.js +++ b/pane/Action.js @@ -43,8 +43,8 @@ Volcanos("onengine", {help: "解析引擎", list: [], var storm = river && river.storm[cmds[1]] if (!storm || cmds.length != 2) { return false } - if (storm.index) { - can.misc.Run(event, can, {names: pane._name}, ["action", "command"].concat(storm.index), cb) + if (storm.index) { cmds = ["action", "command"].concat(storm.index) + can.misc.Runs(event, can, {names: pane._name}, cmds, cb) } else { can.core.List(storm.action, function(value) { msg.Push("name", value.name||"") diff --git a/pane/Header.js b/pane/Header.js index 7198a631..d79923c5 100644 --- a/pane/Header.js +++ b/pane/Header.js @@ -52,7 +52,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, }) }, _background: function(can, msg) { - can.onlayout.background(can, msg.Option("background"), document.body) + can.user.isLocalFile || can.onlayout.background(can, msg.Option("background"), document.body) }, _agent: function(can, msg, target) { if (can.user.isMobile) { @@ -179,12 +179,19 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, print: function(event, can, button) { can.onlayout.topic(can, "white print") }, clear: function(event, can, button) { can.onimport.background(event, can, button) }, pack: function(event, can) { - can.core.Item(Volcanos.meta.pack, function(key, msg) { delete(msg._event), delete(msg._can) }) - var msg = can.request(event, {name: "demo", content: JSON.stringify(Volcanos.meta.pack)}) + can.user.input(event, can, [ + {_input: "text", name: "name", value: "demo"}, + ], function(ev, button, meta, list) { + can.core.Item(Volcanos.meta.pack, function(key, msg) { + can.core.List(["_event", "_can", "_xhr", "sessid", ""], function(key) { delete(msg[key]) }) + }) + var msg = can.request(event, {name: meta.name, content: JSON.stringify(Volcanos.meta.pack)}) - var toast = can.user.toast(can, "打包中...", "webpack", 1000000) - can.run(event, ["pack"], function(msg) { - toast.Close(), can.user.toast(can, "打包成功", "webpack") + var toast = can.user.toast(can, "打包中...", "webpack", 1000000) + can.run(event, ["pack"], function(msg) { + toast.Close(), can.user.toast(can, "打包成功", "webpack") + }) + return true }) }, diff --git a/plugin/input/key.js b/plugin/input/key.js index 94377cd8..a1d0e936 100644 --- a/plugin/input/key.js +++ b/plugin/input/key.js @@ -7,9 +7,9 @@ Volcanos("onfigure", {help: "控件详情", list: [], key: {onclick: function(ev "清空": function(event) { target.value = "" }, }) - can.onappend.table(can, msg, function(value) { + can.onappend.table(can, msg, function(value, key, index, line) { return {text: [value, "td"], onclick: function() { - target.value = value, can.page.Remove(can, can._target) + target.value = line[key], can.page.Remove(can, can._target) }} }), can.Status("count", msg.Length()) can.onlayout.figure(can, event) diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index 54d338eb..e1952621 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -42,12 +42,13 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb, _favor: function(can, target) { can.onappend.plugin(can, {index: "web.code.favor"}, function(sub) { sub.run = function(event, cmds, cb) { + var msg = can.request(event); if (cmds && cmds[0] == "action") { switch (cmds[1]) { + 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.ui.favor = sub - sub.Select = function(line) { - line.path == can.Option("path") && can.onimport.tabview(can, line.path, line.file, line.line) - } can.onmotion.hidden(sub, sub._target) }, target) }, @@ -165,7 +166,7 @@ Volcanos("onaction", {help: "控件交互", list: ["项目", "运行", "搜索"] can.onaction.selectLine(can, ui.tr) }, ondblclick: function(event) { - can.onaction.favorLine(can) + can.onaction.favorLine(can, ui.text.innerText) }}, {view: ["text", "td"], list: [can.onsyntax._parse(can, value)], onclick: function(event) { can.onaction._selectLine(can, ui) @@ -271,8 +272,6 @@ Volcanos("onaction", {help: "控件交互", list: ["项目", "运行", "搜索"] _selectLine: function(can, ui) { can.onkeymap && can.onkeymap._mode(can, "insert") can.onaction.selectLine(can, ui.tr) - can.onkeymap && can.ui.current.focus() - can.ui.current.setSelectionRange(event.offsetX/13, event.offsetX/13) }, favorLine: function(can, value) { @@ -280,10 +279,9 @@ Volcanos("onaction", {help: "控件交互", list: ["项目", "运行", "搜索"] {_input: "text", name: "topic", value: "@key"}, {_input: "text", name: "name", value: "@key"}, ], function(event, button, meta, list) { - can.run(event, [ - "action", "favor", + can.run(event, ["action", "favor", "action", "insert", "topic", meta.topic||"some", - "type", can.parse, "name", meta.name||"some", "text", value, + "type", can.parse, "name", meta.name||"some", "text", value||"", "path", can.Option("path"), "file", can.Option("file"), "line", can.Option("line"), ], function(msg) { can.user.toast(can, "收藏成功") diff --git a/plugin/local/code/vimer.js b/plugin/local/code/vimer.js index 7e4b31c9..9a6e9bc6 100644 --- a/plugin/local/code/vimer.js +++ b/plugin/local/code/vimer.js @@ -134,7 +134,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert" can.onkeymap._normal(can) cb(event, can, line, ls) } else { - can.onkeymap._remote(event, can, line, ["action", "command", "run"].concat(ls)) + can.onkeymap._remote(event, can, line, ["action", "engine"].concat(ls)) } }, jk: function(event, can) { can.keylist = can.keylist.slice(0, -1) @@ -276,6 +276,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert" left: line.offsetLeft, top: line.offsetTop-can.current.offset()-2, height: line.offsetHeight, width: line.offsetWidth }}) + can.ui.current.focus(), can.ui.current.setSelectionRange(event.offsetX/13, event.offsetX/13) can.page.Modify(can, can.ui.command, {className: "command "+can.mode}) }, insertLine: function(can, value, before) { @@ -288,7 +289,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert" can.onaction.rerankLine(can) }, }) -Volcanos("onaction", {help: "控件交互", list: ["项目", "搜索", "收藏"], +Volcanos("onaction", {help: "控件交互", list: ["项目", "搜索", "运行", "收藏"], save: function(event, can) { var msg = can.request(event, {content: can.onexport.content(can)}) can.run(event, ["action", "save", can.parse, can.Option("file"), can.Option("path")], function(msg) { can.user.toast(can, "保存成功") diff --git a/plugin/state.js b/plugin/state.js index 9f4647b5..b35d68cd 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -5,7 +5,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf, }, _progress: function(can, msg, cmds, cb, silent) { var size = msg.Append("size") || msg.Append("count") - if (size != "" && size == msg.Append("total")) { return false } + if (size != "" && size == msg.Append("total")) { return true } can.user.toast(can, { title: can._name+" "+msg.Append("step")+"% ", duration: 1100, diff --git a/plugin/table.js b/plugin/table.js index 454b32ef..ecf278a1 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -23,11 +23,9 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, if (can.sup.onaction.change(event, can.sup, key, value, function(msg) { can.onimport._init(can, msg) }).length > 0) { return } - can.sup.Select && can.sup.Select(line) - }, ondblclick: function(event) { can.onmotion.modify(can, event.target, function(event, value, old) { - var msg = can.sup.request(event, can.Option()); + var msg = can.sup.request(event, can.Option()); msg = can.sup.request(event, line) can.run(event, ["action", "modify", key == "value"? line.key: key, value], function(msg) { }, true) }) }} @@ -59,7 +57,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, _follow: function(can, msg) { if (msg.Option("cache.status") == "stop") { return can.user.toast(can, msg.Option("cache.action")+" done!")} - can.page.Modify(can, can.ui.display, {className: "code", style: {"max-height": 400}}) + can.page.Modify(can, can.ui.display, {className: "code", style: {"max-height": 400, "display": "block"}}) can.page.Append(can, can.ui.display, [{text: msg.Result()}]) can.ui.display.scrollBy(0, 1000) @@ -80,6 +78,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, can.onappend.board(can, msg.Result(), can.ui.display) can.onimport._board(can, msg) + can.page.Modify(can, can.ui.display, {style: {display: "block"}}) return true }, diff --git a/proto.js b/proto.js index 5ec5c9b6..668025e1 100644 --- a/proto.js +++ b/proto.js @@ -11,7 +11,7 @@ function shy(help, meta, list, cb) { cb.list = next("object") || [] return cb }; var _can_name = "" -var Volcanos = shy("火山架", {libs: [], cache: {}}, [], function(name, can, libs, cb) { +var Volcanos = shy("火山架", {pack: {}, libs: [], cache: {}}, [], function(name, can, libs, cb) { var meta = arguments.callee.meta, list = arguments.callee.list if (typeof name == "object") { var Config = name; _can_name = "" meta.libs = Config.libs, meta.volcano = Config.volcano