Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, meta, cb, target) {}, _process: function(can, msg) { msg.OptionStatus() && can.onmotion.clear(can, can._status) && can.onappend._status(can, can.base.Obj(msg.OptionStatus())) return can.core.CallFunc([can.onimport, msg.OptionProcess()], {can: can, msg: msg}) }, _location: function(can, msg, _arg) { can.user.jumps(_arg); return true }, _replace: function(can, msg, _arg) { location.replace(_arg); return true }, _history: function(can, msg) { history.back(); return true }, _confirm: function(can, msg, _arg) { can.user.confirm(_arg) && can.runAction(can.request({}, msg), "confirm"); return true }, _refresh: function(can, msg) { can.core.Timer(parseInt(msg.Option("_delay")||"500"), function() { can.Update(can.request({}, {_count: parseInt(msg.Option("_count"))-1})) }) return true }, _rewrite: function(can, msg) { for (var i = 0; i < msg._arg.length; i += 2) { can.Option(msg._arg[i], msg._arg[i+1]), can.Action(msg._arg[i], msg._arg[i+1]) } return can.Update() }, _display: function(can, msg) { return can.onappend._output(can, msg, msg.Option(ice.MSG_DISPLAY)), true }, _field: function(can, msg) { msg.Table(function(item) { item.type = chat.STORY, can.onappend._plugin(can, item, {type: chat.STORY, arg: can.base.Obj(item[ice.ARG], [])}, function(sub, meta) { sub.Conf(can.base.Obj(item.conf)) if (sub.Conf("mode") == "simple") { var msg = can.request(); msg.Echo(sub.Conf("result")) sub.ConfHeight(can.ConfHeight()/2) return can.onappend._output(sub, msg, msg.Option(ice.MSG_DISPLAY)||sub.Conf("feature.display")) } var opt = can.base.Obj(item[ice.OPT], []) sub.ConfHeight(can.ConfHeight()) sub.ConfWidth(can.ConfWidth()-4*html.PLUGIN_MARGIN) sub.run = function(event, cmds, cb, silent) { var res = can.request(event, can.Option()) for (var i = 0; i < opt.length; i += 2) { res.Option(opt[i], opt[i+1]) } can.run(event, (msg[ice.MSG_PREFIX]||[]).concat(cmds), cb, true) } }) }) return true }, _inner: function(can, msg) { can.onappend.table(can, msg) can.onappend.board(can, msg) can.onmotion.story.auto(can) can.page.style(can, can._output, html.DISPLAY, html.BLOCK) return true }, _hold: function(can, msg) { return true }, _back: function(can) { can._history.pop() for (var his = can._history.pop(); his; his = can._history.pop()) { if (his[0] == ctx.ACTION) { continue } var index = 0 can.page.SelectArgs(can, can._option, "", function(item) { item.value = his[index++]||"" }) can.page.SelectArgs(can, can._action, "", function(item) { item.value = his[index++]||"" }) can.Update(); break } !his && can.Update() return true }, _rich: function(can, msg, _arg) { if (can.page.Select(can, can._output, [html.TABLE_CONTENT, html.TBODY], function(table) { var head = can.page.Select(can, can._output, [html.TABLE_CONTENT, html.TH], function(th) { return th.innerText }) can.page.Append(can, table, msg.Table(function(value) { return {row: can.core.List(head, function(key) { return value[key] })} })) return true }).length == 0) { can.onappend.table(can, msg) } return true }, _grow: function(can, msg, _arg) { if (can.page.Select(can, can._output, html.DIV_CODE, function(div) { can.page.style(can, div, html.MAX_HEIGHT, 400) can.page.Append(can, div, [{text: _arg}]) div.scrollBy(0, 10000) return true }).length == 0) { can.onappend.board(can, _arg) } return true }, _open: function(can, msg, _arg) { return can.user.open(_arg), can.Update() }, }) Volcanos(chat.ONACTION, {help: "交互操作", list: [ "刷新数据", "切换全屏", "共享工具", "打开链接", "生成链接", "生成脚本", "生成图片", [ "其它", "刷新页面", "清空参数", "扩展参数", "复制数据", "下载数据", "清空数据", "删除工具","摄像头", ], ], _init: function(can, msg, list, cb, target) {}, _engine: function(event, can, button) { can.Update(event, [ctx.ACTION, button].concat(can.Input([], true))) }, "刷新数据": function(event, can) { can.Update({}, can.Input([], true)) }, "切换全屏": function(event, can) { var sub = can._outputs[can._outputs.length-1] if (can.page.ClassList.neg(can, can._target, "Full")) { sub._height_bak = sub.ConfHeight(), sub._width_bak = sub.ConfWidth() var height = can._root._height-(can._status.innerText? 2: 1)*html.ACTION_HEIGHT; can.user.isMobile && (height -= 2*html.ACTION_HEIGHT) can.page.style(can, can._output, html.HEIGHT, sub.ConfHeight(height), html.MIN_WIDTH, sub.ConfWidth(can._root._width)) } else { sub.ConfHeight(sub._height_bak), sub.ConfWidth(sub._width_bak) can.page.style(can, can._output, html.HEIGHT, "", html.MIN_WIDTH, "") } can.core.CallFunc([sub, chat.ONIMPORT, html.LAYOUT], {can: sub}) }, "共享工具": function(event, can) { var meta = can.Conf() can.onmotion.share(event, can, [{name: chat.TITLE, value: meta.name}, {name: chat.TOPIC, values: [cli.WHITE, cli.BLACK]}], [ mdb.NAME, meta.index, mdb.TEXT, JSON.stringify(can.Input([], true)), ]) }, "打开链接": function(event, can) { var meta = can.Conf(), args = can.Option() args.cmd = meta.index||can.core.Keys(meta.ctx, meta.cmd), args.cmd == "web.wiki.word" && (args.cmd = args.path) can.user.isWeiXin? can.user.jumps(can.misc.MergeURL(can, args)): can.user.open(can.misc.MergeURL(can, args)) }, "生成链接": function(event, can) { var meta = can.Conf(), args = can.Option() args.cmd = meta.index||can.core.Keys(meta.ctx, meta.cmd), args.cmd == "web.wiki.word" && (args.cmd = args.path) can.onmotion.share(event, can, [], [mdb.LINK, can.user.copy(event, can, can.misc.MergeURL(can, args))]) }, "生成脚本": function(event, can) { var conf = can.Conf() var args = can.Input("", true).join(ice.SP), list = [ "export ctx_dev="+location.origin+"; ctx_temp=$(mktemp); curl -o $ctx_temp -fsSL $ctx_dev;"+" source $ctx_temp "+(conf.index||"")+ice.SP+args, "ish_sys_dev_run_command "+args, "ish_sys_dev_run_action", "ish_sys_dev_run_source", ] can.user.toastScript(can, '