From dcfdfcd9b562a6f656179803f34dfd09a29cd999 Mon Sep 17 00:00:00 2001 From: shy Date: Mon, 25 Sep 2023 18:45:27 +0800 Subject: [PATCH] opt chat --- const.js | 1 + frame.js | 1 + panel/footer.js | 20 +++++++++++--------- plugin/local/chat/iframe.js | 2 +- plugin/local/chat/location.js | 2 +- plugin/state.js | 21 +++++++++++---------- 6 files changed, 26 insertions(+), 21 deletions(-) diff --git a/const.js b/const.js index 2a0eea91..9bfc9e37 100644 --- a/const.js +++ b/const.js @@ -40,6 +40,7 @@ var ice = { PROCESS_FIELD: "_field", PROCESS_REWRITE: "_rewrite", MSG_PREFIX: "_prefix", + MSG_METHOD: "_method", MSG_USERNICK: "user.nick", MSG_USERNAME: "user.name", MSG_USERROLE: "user.role", MSG_LANGUAGE: "user.lang", MSG_TITLE: "sess.title", MSG_THEME: "sess.theme", MSG_RIVER: "sess.river", MSG_STORM: "sess.storm", diff --git a/frame.js b/frame.js index f72e8e36..536cc5bc 100644 --- a/frame.js +++ b/frame.js @@ -437,6 +437,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { }, plugin: function(can, meta, cb, target, field) { meta = meta||{}, meta.index = meta.index||can.core.Keys(meta.ctx, meta.cmd)||ice.CAN_PLUGIN + // meta._space = can.ConfSpace() var res = {}; function _cb(sub, meta, skip) { kit.proto(res, sub), cb && cb(sub, meta, skip) } if (meta.inputs && meta.inputs.length > 0 || meta.meta) { can.onappend._plugin(can, {meta: meta.meta, list: meta.list}, meta, _cb, target, field); return res } var value = can.onengine.plugin(can, meta.index); if (value) { can.onappend._plugin(can, value, meta, function(sub, meta, skip) { diff --git a/panel/footer.js b/panel/footer.js index 54a6e904..524a47b5 100644 --- a/panel/footer.js +++ b/panel/footer.js @@ -38,16 +38,18 @@ Volcanos(chat.ONACTION, {_init: function(can) {}, onunload: function(can) { can._wss && can._wss.close() }, onaction_cmd: function(can) { can.onappend.style(can, html.HIDE) }, oncommand_focus: function(can) { can.page.Select(can, can._output, ["div.cmd", html.INPUT], function(target) { can.onmotion.focus(can, target) }) }, - ondebugs: function(can, msg) { can.runAction(msg, msg.Option(ctx.ACTION), [msg.Option(ctx.INDEX)], function(_msg) { - _msg.Table(function(item) { item.mode = chat.FLOAT - can.onappend.plugin(can, item, function(sub) { - sub.run = function(event, cmds, cb) { can.run(can.request(event, {space: sub.Conf(web.SPACE)}), [ctx.ACTION, msg.Option(ctx.ACTION), ice.RUN].concat(cmds), cb) } - can.getActionSize(function(left, top, width, height) { sub.onimport.size(sub, sub.ConfHeight(height/2), sub.ConfWidth(width), true) - can.onmotion.move(can, sub._target, {left: left||0, top: (top||0)+height/4}) - }), sub.onaction.close = function() { can.page.Remove(can, sub._target) } - }, document.body) + ondebugs: function(can, msg) { + can.runAction(msg, msg.Option(ctx.ACTION), [msg.Option(ctx.INDEX)], function(_msg) { + _msg.Table(function(item) { item.mode = chat.FLOAT + can.onappend.plugin(can, item, function(sub) { + sub.run = function(event, cmds, cb) { can.run(can.request(event, {_method: http.POST, space: sub.Conf(web.SPACE)}), [ctx.ACTION, msg.Option(ctx.ACTION), ice.RUN].concat(cmds), cb) } + can.getActionSize(function(left, top, width, height) { sub.onimport.size(sub, sub.ConfHeight(height/2), sub.ConfWidth(width), true) + can.onmotion.move(can, sub._target, {left: left||0, top: (top||0)+height/4}) + }), sub.onaction.close = function() { can.page.Remove(can, sub._target) } + }, document.body) + }) }) - }) }, + }, }) Volcanos(chat.ONEXPORT, {height: function(can) { return can._target.offsetHeight }, ntip: function(can) { can.onexport._float(can, NTIP, "can.toast") }, diff --git a/plugin/local/chat/iframe.js b/plugin/local/chat/iframe.js index 4b247300..67c5d94c 100644 --- a/plugin/local/chat/iframe.js +++ b/plugin/local/chat/iframe.js @@ -1,6 +1,6 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.db.current = msg.TableDetail() can.ui.target = can.page.Appends(can, can._output, [{type: html.IFRAME, src: can.db.current.link, height: can.ConfHeight(), width: can.ConfWidth()}])._target - can.page.style(can, can._output, html.OVERFLOW, html.HIDDEN) + can.page.style(can, can._output, "overflow-y", html.HIDDEN) }, layout: function(can) { var item = can.db.current; can.sup.onexport.title(can, item.name||item.link.split(mdb.QS)[0]) diff --git a/plugin/local/chat/location.js b/plugin/local/chat/location.js index 1e9897f1..d380de06 100644 --- a/plugin/local/chat/location.js +++ b/plugin/local/chat/location.js @@ -32,7 +32,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.ui = can.on }) }, _list_result: function(can, msg, cb) { var res = can.base.Obj(msg.Result()); if (res.status) { can.user.toastFailure(can, res.message); return } - return res && can.core.List(res.result[0], function(item) { item.name = item.name||item.fullname; return can.base.isFunc(cb)? cb(item): item }) + return res && res.result && can.core.List(res.result[0], function(item) { item.name = item.name||item.fullname; return can.base.isFunc(cb)? cb(item): item }) }, _district: function(can, id, cb) { can.runAction(can.request({}, {_method: http.GET, id: id}), "district", [], cb) }, _province: function(can, target) { can.onimport._district(can, "", function(msg) { diff --git a/plugin/state.js b/plugin/state.js index 1abcde34..069f56fd 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -61,8 +61,9 @@ Volcanos(chat.ONACTION, {list: [ "打开链接", "生成链接", "生成脚本", "生成图片", ["视图", "参数", "操作", "状态", "专注", "项目", "预览", "演示"], - ["数据", "保存参数", "清空参数", "复制数据", "下载数据", "清空数据", "删除工具"], - ["调试", "打包页面", "查看文档", "查看脚本", "查看源码", "查看配置", "查看日志", "添加工具"], + ["数据", "保存参数", "清空参数", "复制数据", "下载数据", "清空数据", "添加工具"], + ["调试", "查看文档", "查看脚本", "查看源码", "查看配置", "删除工具"], + // ["调试", "打包页面", "查看文档", "查看脚本", "查看源码", "查看配置", "查看日志", "添加工具"], ], _engine: function(event, can, button) { can.Update(event, [ctx.ACTION, button].concat(can.Input())) }, _switch: function(can, sub, mode, save, load) { @@ -116,20 +117,20 @@ Volcanos(chat.ONACTION, {list: [ can.user.downloads(can, sub.onexport.table(sub), list[0], nfs.CSV), can.user.downloads(can, sub.onexport.board(sub), list[0], nfs.TXT) }) }, "清空数据": function(event, can) { can.onmotion.clear(can, can._output) }, - "删除工具": function(event, can) { can.onaction._close(event, can) }, - - "打包页面": function(event, can) { can.onengine.signal(can, "onwebpack", can.request(event)) }, - "查看文档": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: ice.HELP, index: can.Conf(ctx.INDEX)})) }, - "查看脚本": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: nfs.SCRIPT, index: can.Conf(ctx.INDEX)})) }, - "查看源码": function(event, can) { can.request(event).Option(ctx.ACTION, nfs.SOURCE), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) }, - "查看配置": function(event, can) { can.request(event).Option(ctx.ACTION, ctx.CONFIG), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) }, - "查看日志": function(event, can) { var sub = can.sub; sub.onimport.tool(sub, ["can.debug"], function(sub) { sub.select() }) }, "添加工具": function(event, can) { can.user.input(event, can, [ctx.INDEX, ctx.ARGS], function(data) { var sub = can.sub; sub.onimport.tool(sub, [data], function(sub) { sub.select() }) }) }, + "打包页面": function(event, can) { can.onengine.signal(can, "onwebpack", can.request(event)) }, + "查看文档": function(event, can) { can.request(event).Option(ctx.ACTION, ice.HELP), can.onengine.signal(can, "ondebugs", can.request(event, {action: ice.HELP, index: can.Conf(ctx.INDEX)})) }, + "查看脚本": function(event, can) { can.request(event).Option(ctx.ACTION, nfs.SCRIPT), can.onengine.signal(can, "ondebugs", can.request(event, {action: nfs.SCRIPT, index: can.Conf(ctx.INDEX)})) }, + "查看源码": function(event, can) { can.request(event).Option(ctx.ACTION, nfs.SOURCE), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) }, + "查看配置": function(event, can) { can.request(event).Option(ctx.ACTION, ctx.CONFIG), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) }, + "查看日志": function(event, can) { var sub = can.sub; sub.onimport.tool(sub, ["can.debug"], function(sub) { sub.select() }) }, + "删除工具": function(event, can) { can.onaction._close(event, can) }, + refresh: function(event, can) { can.onimport.size(can, can.ConfHeight(), can.ConfWidth(), true, can.Mode()) }, close: function(event, can) { if (can.isCmdMode()) {