From 6451c99072e6b777287b0835eb7d93080fef2830 Mon Sep 17 00:00:00 2001 From: shy Date: Wed, 3 Jan 2024 19:42:09 +0800 Subject: [PATCH] add some --- frame.js | 6 ++-- panel/action.js | 15 +++++---- panel/river.js | 84 +++++++++++++++---------------------------------- 3 files changed, 38 insertions(+), 67 deletions(-) diff --git a/frame.js b/frame.js index 8367ed02..c47214c6 100644 --- a/frame.js +++ b/frame.js @@ -146,7 +146,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { }); return sub }, _option: function(can, meta, option, skip) { var index = -1, args = can.base.Obj(meta.args||meta.arg, []), opts = can.base.Obj(meta.opts, {}) - meta.inputs = can.base.Obj(meta.inputs, []), meta.inputs.length == 0 && can.onmotion.delay(can, function() { can.Update() }) + meta.inputs = can.base.Obj(meta.inputs, []), meta.inputs.length == 0 && (!can.Conf("_ismain") || can.Conf("_role") || can.misc.Search(can, log.DEBUG) == ice.TRUE) && can.onmotion.delay(can, function() { can.Update() }) can.core.List([""].concat(meta.inputs), function(item) { if (item != "" && item.type != html.BUTTON) { return } var icon = { "": {name: mdb.DELETE, cb: function(event) { can.onaction.close(event, can) }}, @@ -184,7 +184,9 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { }) }; var auto; can.core.Next(can.core.Value(can, [chat.ONIMPORT, mdb.LIST])||meta.inputs, add, function() { var p = can.misc.Search(can, ctx.ACTION) - if (p && can.isCmdMode()) { + if (can.Conf("_ismain") && !can.Conf("_role") && can.misc.Search(can, log.DEBUG) != ice.TRUE) { + + } else if (p && can.isCmdMode()) { skip || can.Conf(ice.AUTO) == cli.DELAY || can.Update({}, [ctx.ACTION, p]) } else { skip || can.Conf(ice.AUTO) == cli.DELAY || auto && auto.click() diff --git a/panel/action.js b/panel/action.js index c88dc0fa..a6c828b6 100644 --- a/panel/action.js +++ b/panel/action.js @@ -169,14 +169,17 @@ Volcanos(chat.ONENGINE, {_engine: function(event, sup, msg, can, cmds, cb) { if (storm.index) { can.runAction(event, ctx.COMMAND, [].concat(can.core.List(storm.index, function(item) { return item.index||item })), function(msg) { can.core.List(storm.index, function(item) { - msg.Push(ctx.ARGS, JSON.stringify(item.args||[])) - msg.Push(ctx.STYLE, item.style||"") + msg.Push(ctx.ARGS, JSON.stringify(item.args||[])).Push(ctx.STYLE, item.style||"").Push(ctx.DISPLAY, item.display||"") + msg.Push(web.SPACE, item.space||"") + msg.Push("_ismain", ice.TRUE) }), cb(msg) }) - } else { can.core.List(storm.list, function(value) { can.base.isString(value) && (value = {index: value}) - msg.Push(mdb.NAME, value.name||"").Push(mdb.HELP, value.help||"").Push(ctx.INPUTS, JSON.stringify(value.inputs)).Push(ctx.FEATURE, JSON.stringify(value.feature)) - msg.Push(ctx.INDEX, value.index||"").Push(ctx.ARGS, value.args||"[]").Push(ctx.STYLE, value.style||"").Push(ctx.DISPLAY, value.display||"") - msg.Push(web.SPACE, value.space||"") + } else { can.core.List(storm.list, function(item) { can.base.isString(item) && (item = {index: item}) + msg.Push(ctx.INDEX, item.index||"") + msg.Push(mdb.NAME, item.name||"").Push(mdb.HELP, item.help||"").Push(ctx.INPUTS, JSON.stringify(item.inputs)).Push(ctx.FEATURE, JSON.stringify(item.feature)) + msg.Push(ctx.ARGS, item.args||"[]").Push(ctx.STYLE, item.style||"").Push(ctx.DISPLAY, item.display||"") + msg.Push(web.SPACE, item.space||"") + msg.Push("_ismain", ice.TRUE) }), can.base.isFunc(cb) && cb(msg) } return true }}) Volcanos(chat.ONKEYMAP, { diff --git a/panel/river.js b/panel/river.js index 3276a4cb..f8c68822 100644 --- a/panel/river.js +++ b/panel/river.js @@ -1,15 +1,12 @@ (function() { const CAN_RIVER = "can.river", CAN_STORM = "can.storm" -Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onimport._main(can, msg) - - can.onappend.style(can, html.FLEX, can._action) +Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onimport._main(can, msg), can.onappend.style(can, html.FLEX, can._action) var select; can.page.Appends(can, can._output, msg.Table(function(item, index) { return can.onimport._river(can, item, function(target) { (index == 0 || item.hash == can._main_river) && (select = target) }) })), select && select.click(), can.onimport._menu(can, msg) }, - _main: function(can, msg) { can.ui = {river_list: {}, storm_list: {}, sublist: {}} - var ls = location.hash.slice(1).split(nfs.DF) - can._main_river = ls[0]||can.misc.SearchOrConf(can, chat.RIVER)||msg.Option(ice.MSG_RIVER)||"project" - can._main_storm = ls[1]||can.misc.SearchOrConf(can, chat.STORM)||msg.Option(ice.MSG_STORM)||"studio" + _main: function(can, msg) { can.ui = {river_list: {}, storm_list: {}, sublist: {}}; var ls = location.hash.slice(1).split(nfs.DF) + can._main_river = can.misc.SearchOrConf(can, chat.RIVER)||ls[0]||msg.Option(ice.MSG_RIVER)||"project" + can._main_storm = can.misc.SearchOrConf(can, chat.STORM)||ls[1]||msg.Option(ice.MSG_STORM)||"studio" }, _river: function(can, meta, cb) { return {view: html.ITEM, list: [{icon: meta.icon}, {text: meta.name}, {icon: icon.CHEVRON_DOWN}], _init: function(target) { can.ui.river_list[meta.hash] = target, cb(target) }, onclick: function(event) { can.onaction.storm(event, can, meta.hash) }, oncontextmenu: function(event) { can.onaction.carte(event, can, can.onaction._menu, meta.hash) }, @@ -17,13 +14,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onimport._main(can, msg _storm: function(can, meta, river) { return {view: html.ITEM, list: [{icon: meta.icon}, {text: meta.name}], _init: function(target) { can.ui.storm_list[can.core.Keys(river, meta.hash)] = target }, onclick: function(event) { can.onaction.action(event, can, river, meta.hash) }, oncontextmenu: function(event) { can.onaction.carte(event, can, can.ondetail._menu, river, meta.hash) }, } }, - _menu: function(can, msg) { - if (can.user.isMobile || can.user.mod.isPod) { - can.onmotion.hidden(can, can._action) - } else { - can.onappend._action(can, can.onaction.list, can._action) - } - }, + _menu: function(can, msg) { can.user.isMobile || can.user.mod.isPod? can.onmotion.hidden(can, can._action): can.onappend._action(can, can.onaction.list, can._action) }, }) Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: function(can) { can.db.storm_list = {}, can.onmotion.hidden(can) @@ -44,15 +35,12 @@ Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: func onaction_notool: function(can, msg, river, storm) { can.ondetail["addcmd"](msg._event, can, "addcmd", river, storm) }, onsearch: function(can, msg, arg) { if (arg[0] == chat.STORM) { can.onexport.storm(can, msg, arg) } }, onlayout: function(can, layout) { can.user.isMobile || can.onmotion.toggle(can, can._target, !can.base.isIn(layout, "tabview", "horizon","vertical", "page")) }, - ontitle: function(can, msg) { can.misc.sessionStorage(can, CAN_RIVER, ""), can.misc.sessionStorage(can, CAN_STORM, "") }, create: function(event, can) { can.user.input(can.request(event, {title: "创建群组"}), can, [ - {name: mdb.TYPE, values: [aaa.TECH, aaa.ROOT, aaa.TECH, aaa.VOID], _trans: "类型"}, + {name: mdb.TYPE, values: [aaa.TECH, aaa.VOID], _trans: "类型"}, {name: mdb.NAME, value: "hi", _trans: "群名", need: "must"}, {name: mdb.ICON, value: "", _trans: "图标"}, {name: mdb.TEXT, value: "hello", _trans: "简介"}, - ], function(args) { - can.runAction(event, mdb.CREATE, args, function(msg) { can.misc.Search(can, {river: msg.Result()}) }) - }) }, + ], function(args) { can.runAction(event, mdb.CREATE, args, function(msg) { can.misc.Search(can, {river: msg.Result()}) }) }) }, share: function(event, can) { can.core.CallFunc(can.ondetail.share, {event: event, can: can}) }, onsize: function(can, height) { var margin = 0 if (can.page.isDisplay(can._action)) { margin = can._action.offsetHeight + html.PLUGIN_MARGIN } var _margin = margin @@ -88,38 +76,24 @@ Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: func action: function(event, can, river, storm) { can.misc.SearchHash(can, river, storm) can.page.Select(can, can._output, [html.DIV_LIST, html.DIV_ITEM], function(target) { can.page.ClassList.del(can, target, html.SELECT) }) can.onmotion.select(can, can.ui.sublist[river], html.DIV_ITEM, can.ui.storm_list[can.core.Keys(river, storm)]) - // can.onaction.storm({target: can.ui.river_list[river]}, can, river) - // can.page.ClassList.set(can, can.ui.river_list[river], "open", can.onmotion.toggle(can, can.ui.sublist[river], true)) can.onengine.signal(can, chat.ONSTORM_SELECT, can.request(event, {river: can.Conf(chat.RIVER, river), storm: can.Conf(chat.STORM, storm)})) }, carte: function(event, can, list, river, storm) { can.onkeymap.prevent(event); if (can.core.Value(can._root, can.core.Keys(chat.RIVER, river))) { return } can.request(event, {river: river, storm: storm}); storm? can.user.carteRight(event, can, can.ondetail, list): can.user.carteRight(event, can, can.onaction, list) }, - _trans: { - addapp: "添加应用", - rename: "重命名群组", - remove: "删除群组", - }, _menu: ["addapp", "rename", "remove"], + _trans: {addapp: "添加应用", rename: "重命名群组", remove: "删除群组"}, addapp: function(event, can, button, river) { can.ondetail.create(event, can, button, river) }, rename: function(event, can, button, river) { can.user.input(event, can, [mdb.NAME, mdb.ICON], function(args) { can.runAction(event, mdb.MODIFY, [mdb.HASH, river].concat(args), function(msg) { can.page.Modify(can, can.ui.river_list[river], args[1]), can.user.toastSuccess(can) }) }) }, - remove: function(event, can, button, river) { can.runAction(event, mdb.REMOVE, [mdb.HASH, river], function(msg) { - can.misc.localStorage(can, CAN_RIVER, ""), can.misc.localStorage(can, CAN_STORM, ""), can.misc.Search(can, {river: "", storm: ""}) - }) }, + remove: function(event, can, button, river) { can.runAction(event, mdb.REMOVE, [mdb.HASH, river], function(msg) { can.misc.Search(can, {river: "", storm: ""}) }) }, onaction_nostorm: function(can, msg, river) { can.ondetail.create({}, can, mdb.CREATE, river) }, onaction_remove: function(can, msg, river, storm, id) { can.run(can.request({}), [river, storm, chat.STORM, ctx.ACTION, mdb.DELETE, mdb.ID, id], function() { }) }, }) Volcanos(chat.ONDETAIL, { - _trans: { - share: "共享应用", - savearg: "保存参数", - addcmd: "添加工具", - rename: "重命名应用", - remove: "删除应用", - }, _menu: ["share", "savearg", "addcmd", "rename", "remove"], + _trans: {share: "共享应用", savearg: "保存参数", addcmd: "添加工具", rename: "重命名应用", remove: "删除应用"}, share: function(event, can, button, river, storm) { can.onmotion.share(event, can, [{name: chat.TITLE, value: can.user.title()}, {name: chat.THEME, values: [ice.AUTO, html.DARK, html.LIGHT, cli.WHITE, cli.BLACK]}], [mdb.TYPE, chat.STORM, chat.RIVER, river, chat.STORM, storm]) }, savearg: function(event, can, button, river, storm) { can.getAction(ctx.ARGS, function(args, sub, next, index, array) { var toast = can.user.toast(can, (index+1)+nfs.PS+array.length, button, 10000, (index+1)*100/array.length) can.run({}, [river, storm, chat.STORM, ctx.ACTION, mdb.MODIFY, mdb.ID, sub.Conf(mdb.ID), ctx.ARGS, JSON.stringify(args)], function() { @@ -130,11 +104,9 @@ Volcanos(chat.ONDETAIL, { {name: web.SPACE, _trans: "空间"}, {name: ctx.INDEX, need: "must", _trans: "命令"}, {name: ctx.ARGS, _trans: "参数"}, {name: mdb.ICON, _trans: "图标"}, {name: ctx.STYLE, _trans: "样式"}, {name: ctx.DISPLAY, _trans: "脚本"}, - ], function(args) { - can.run({}, [river, storm, chat.STORM, ctx.ACTION, mdb.INSERT].concat(args), function(msg) { - can.onengine.signal(can, chat.ONSTORM_SELECT, can.request(event, {river: can.Conf(chat.RIVER, river), storm: can.Conf(chat.STORM, storm), refresh: ice.TRUE})) - }) - }) }, + ], function(args) { can.run({}, [river, storm, chat.STORM, ctx.ACTION, mdb.INSERT].concat(args), function(msg) { + can.onengine.signal(can, chat.ONSTORM_SELECT, can.request(event, {river: can.Conf(chat.RIVER, river), storm: can.Conf(chat.STORM, storm), refresh: ice.TRUE})) + }) }) }, rename: function(event, can, button, river, storm) { can.user.input(event, can, [mdb.NAME, mdb.ICON], function(args) { can.run(event, [river, storm, chat.STORM, ctx.ACTION, mdb.MODIFY].concat(args), function() { can.page.Modify(can, can.ui.storm_list[can.core.Keys(river, storm)], args[1]), can.user.toastSuccess(can) }) }) }, @@ -143,38 +115,32 @@ Volcanos(chat.ONDETAIL, { {name: mdb.NAME, value: "hi", _trans: "名称", need: "must"}, {name: mdb.ICON, value: "", _trans: "图标"}, {name: mdb.TEXT, value: "hello", _trans: "简介"}, - ], function(args) { - can.run({}, [river, chat.STORM, ctx.ACTION, mdb.CREATE].concat(args), function(msg) { can.misc.Search(can, {river: river, storm: msg.Result()}) }) - }) }, + ], function(args) { can.run({}, [river, chat.STORM, ctx.ACTION, mdb.CREATE].concat(args), function(msg) { can.misc.Search(can, {river: river, storm: msg.Result()}) }) }) }, }) Volcanos(chat.ONEXPORT, {width: function(can) { return can._target.offsetWidth }, storm: function(can, msg, arg) { can.core.Item(can._root.river, function(river, value) { can.core.Item(value.storm, function(storm, item) { if (arg[1] != "" && storm.indexOf(arg[1]) == -1 && item.name.indexOf(arg[1]) == -1) { return } msg.Push({ctx: ice.CAN, cmd: can._name, type: river, name: storm, text: shy("跳转", function(event) { can.onaction.action(event, can, river, storm) })}) }) }) }, - scroll: function(can) { - can.onmotion.delayOnce(can, function() { - if (can._output.offsetHeight == can._output.scrollHeight) { - can.onmotion.hidden(can, can._prev) - can.onmotion.hidden(can, can._next) - } else { - can.onmotion.toggle(can, can._prev, can._output.scrollTop > 10) - can.onmotion.toggle(can, can._next, can._output.scrollTop+can._output.offsetHeight < can._output.scrollHeight-10) - } - }) - }, + scroll: function(can) { can.onmotion.delayOnce(can, function() { + if (can._output.offsetHeight == can._output.scrollHeight) { + can.onmotion.hidden(can, can._prev), can.onmotion.hidden(can, can._next) + } else { + can.onmotion.toggle(can, can._prev, can._output.scrollTop > 10) + can.onmotion.toggle(can, can._next, can._output.scrollTop+can._output.offsetHeight < can._output.scrollHeight-10) + } + }) }, }) Volcanos(chat.ONENGINE, {_engine: function(event, can, msg, panel, cmds, cb) { var list = can.river - cmds.length == 0 && can.core.ItemOrder(list, "order", function(key, value) { + cmds.length == 0 && can.core.ItemOrder(list, mdb.ORDER, function(key, value) { if (can.user.info.userrole == aaa.ROOT || can.base.isIn(value.type||"", "", aaa.VOID, can.user.info.userrole)) { can.core.Item(value.storm).length > 0 && msg.Push({hash: key, name: can.user.isEnglish(can)? key: value.name, icon: value.icon||""}) } }) if (cmds.length != 1 && cmds[1] != chat.STORM) { return false } var river = list[cmds[0]]; if (!river) { return false } - can.core.ItemOrder(river.storm, "order", function(key, value) { + can.core.ItemOrder(river.storm, mdb.ORDER, function(key, value) { if (can.user.info.userrole == aaa.ROOT || can.base.isIn(value.type||"", "", aaa.VOID, can.user.info.userrole)) { msg.Push({hash: key, name: can.user.isEnglish(can)? key: value.name, icon: value.icon||""}) } - }) - can.base.isFunc(cb) && cb(msg); return true + }), can.base.isFunc(cb) && cb(msg); return true }}) })()