diff --git a/frame.js b/frame.js index 55ec80f8..c3471af5 100644 --- a/frame.js +++ b/frame.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONENGINE, {help: "搜索引擎", list: [], _init: function(can, meta, list, cb, target) { +Volcanos(chat.ONENGINE, {help: "搜索引擎", _init: function(can, meta, list, cb, target) { if (can.misc.Search(can, ice.MSG_SESSID)) { can.misc.CookieSessid(can, can.misc.Search(can, ice.MSG_SESSID)) return can.misc.Search(can, ice.MSG_SESSID, "") } @@ -105,7 +105,7 @@ Volcanos(chat.ONENGINE, {help: "搜索引擎", list: [], _init: function(can, me return can.core.List(can.onengine.listen.meta[name], function(cb) { can.core.CallFunc(cb, {event: msg._event, msg: msg}) }).length }), }) -Volcanos(chat.ONDAEMON, {help: "推荐引擎", list: [], _init: function(can, name) { if (can.user.isLocalFile) { return } +Volcanos(chat.ONDAEMON, {help: "推荐引擎", _init: function(can, name) { if (can.user.isLocalFile) { return } can.misc.WSS(can, {type: html.CHROME, name: can.misc.Search(can, cli.DAEMON)||name||"", text: can.user.title()}, function(event, msg, cmd, arg) { if (!msg) { return } var sub = can.ondaemon._list[msg.Option(ice.MSG_TARGET)] can.base.isFunc(can.ondaemon[cmd])? can.core.CallFunc(can.ondaemon[cmd], { @@ -119,7 +119,7 @@ Volcanos(chat.ONDAEMON, {help: "推荐引擎", list: [], _init: function(can, na pwd: function(can, msg, arg) { can.ondaemon._list[0] = arg[0] }, exit: function(can, msg, sub) { can.user.close() }, }) -Volcanos(chat.ONAPPEND, {help: "渲染引擎", list: [], _init: function(can, meta, list, cb, target, field) { +Volcanos(chat.ONAPPEND, {help: "渲染引擎", _init: function(can, meta, list, cb, target, field) { meta.name = (meta.name||"").split(ice.SP)[0].split(ice.PT).pop() field = field||can.onappend.field(can, meta.type, meta, target).first var legend = can.page.Select(can, field, html.LEGEND)[0] @@ -427,7 +427,7 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", list: [], _init: function(can, me }) }, }) -Volcanos(chat.ONLAYOUT, {help: "页面布局", list: [], _init: function(can, target) { target = target||can._root._target +Volcanos(chat.ONLAYOUT, {help: "页面布局", _init: function(can, target) { target = target||can._root._target if (can.page.Select(can, target, can.core.Keys(html.FIELDSET_MAIN, html.PAGE)).length > 0) { can.page.Select(can, target, html.FIELDSET_LEFT, function(field) { can.page.styleHeight(can, field, "") can.page.Select(can, target, [[html.FIELDSET_LEFT, html.DIV_OUTPUT]], function(output) { @@ -452,7 +452,7 @@ Volcanos(chat.ONLAYOUT, {help: "页面布局", list: [], _init: function(can, ta can.user.isMobile || (width -= field.offsetWidth) can.page.styleHeight(can, field, height-offset) can.page.Select(can, target, [[html.FIELDSET_LEFT, html.DIV_OUTPUT]], function(output) { - can.page.styleHeight(can, output, height-offset-html.ACTION_HEIGHT-1) + can.page.styleHeight(can, output, height-offset-html.ACTION_HEIGHT-2) }) }) @@ -473,7 +473,7 @@ Volcanos(chat.ONLAYOUT, {help: "页面布局", list: [], _init: function(can, ta if (layout) { return can.page.style(can, target, layout), can.onmotion.move(can, target, layout), layout } if (!event || !event.target || !event.clientX) { return {} } - var left = event.clientX-event.offsetX, top = event.clientY-event.offsetY+event.target.offsetHeight-5; if (right) { + var left = event.clientX-event.offsetX, top = event.clientY-event.offsetY+event.target.offsetHeight-1; if (right) { var left = event.clientX-event.offsetX+event.target.offsetWidth, top = event.clientY-event.offsetY } @@ -535,7 +535,7 @@ Volcanos(chat.ONLAYOUT, {help: "页面布局", list: [], _init: function(can, ta ] }]); return can.ui = ui }, }) -Volcanos(chat.ONMOTION, {help: "动态特效", list: [], _init: function(can, target) { +Volcanos(chat.ONMOTION, {help: "动态特效", _init: function(can, target) { window.addEventListener(html.ORIENTATIONCHANGE, function(event) { can.onengine.signal(can, html.ORIENTATIONCHANGE) }) can.onmotion.float.auto(can, target) }, @@ -775,7 +775,7 @@ Volcanos(chat.ONMOTION, {help: "动态特效", list: [], _init: function(can, ta } can.onkeymap.prevent(event) }, }) -Volcanos(chat.ONKEYMAP, {help: "键盘交互", list: [], _focus: [], _init: function(can, target) { +Volcanos(chat.ONKEYMAP, {help: "键盘交互", _focus: [], _init: function(can, target) { document.body.onclick = function(event) { if (window.webview) { if (event.target.tagName == "A") { can.user.open(event.target.href) } diff --git a/lib/page.js b/lib/page.js index 8ae49bd4..65d14784 100644 --- a/lib/page.js +++ b/lib/page.js @@ -56,6 +56,7 @@ Volcanos("page", {help: "用户界面", ClassList: { "left": true, "right": true, "top": true, "bottom": true, "height": true, "max-height": true, "min-height": true, "width": true, "max-width": true, "min-width": true, + "padding": true, } if (size[k] && v && (can.base.isNumber(v) || v.indexOf && v.indexOf("px") == -1)) { v += "px" } diff --git a/page/index.css b/page/index.css index 4d5aa3f5..aca13ba4 100644 --- a/page/index.css +++ b/page/index.css @@ -1,10 +1,17 @@ body, fieldset, table, tr, th, td { padding:0; border:0; margin:0; } body { background-color:black; color:cyan; font-size:14px; font-family:sans-serif; } +body { overflow:-moz-scrollbars-none; -ms-overflow-style:none; } +body::-webkit-scrollbar { width:0 !important; height:0 !important; } +fieldset.panel.Action>div.output::-webkit-scrollbar { width:0 !important; height:0 !important; } +div.story[data-type=spark]::-webkit-scrollbar { width:0 !important; height:0 !important; } +div.project::-webkit-scrollbar { width:0 !important; height:0 !important; } +div.content::-webkit-scrollbar { width:0 !important; height:0 !important; } + legend { background-color:#339999; color:white; padding:0px 20px; margin-top:4px 5px; } select { background-color:black; color:cyan; padding:0 10px; height:1.92rem; } textarea { background-color:cyan; height:60px; width:400px; } -input[type=button] { background-color:black; color:cyan; } +input[type=button] { background-color:black; color:cyan; height:31px; } input[name=cmd] { background-color:black; color:white; width:240px; } input[type=text] { background-color:cyan; color:black; padding:0 4px; height:27px; width:90px; } input[type=password] { background-color:cyan; color:black; padding:0 4px; height:27px; width:90px; } diff --git a/page/index.js b/page/index.js index c240092f..4b251f17 100644 --- a/page/index.js +++ b/page/index.js @@ -4,7 +4,7 @@ Volcanos({name: "chat", panels: [ {name: "Action", help: "工作台", pos: html.MAIN}, {name: "Footer", help: "状态条", pos: html.FOOT, state: ["ncmd"]}, {name: "Search", help: "搜索框", pos: html.AUTO}, - ], main: {name: "Header", list: []}, river: { + ], main: {name: "Header"}, river: { product: {name: "产品群", storm: { office: {name: "办公 office", list: [ {name: "feel", help: "影音媒体", index: "web.wiki.feel"}, diff --git a/panel/action.css b/panel/action.css index e6ca26a4..d51f448e 100644 --- a/panel/action.css +++ b/panel/action.css @@ -1,5 +1,5 @@ fieldset.Action { background-color:rgba(114, 153, 162, 0.54); min-width:160px; } -fieldset.Action>div.action { background-color:#159cc7b0; padding:0; margin:0; height:28px; display:none; position:absolute; } +fieldset.Action>div.action { background-color:#159cc7b0; padding:0; margin:0; height:29px; display:none; position:absolute; } fieldset.Action.tabs>div.action { display:block; } fieldset.Action.tabs>div.output { margin-top:28px; } diff --git a/panel/action.js b/panel/action.js index 7b18c160..0626d332 100644 --- a/panel/action.js +++ b/panel/action.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { var river = can.Conf(chat.RIVER), storm = can.Conf(chat.STORM) can.onmotion.clear(can), can.core.Next(msg.Table(), function(item, next) { item.height = can.ConfHeight()-can.Conf(html.MARGIN_Y) @@ -54,7 +54,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms can.page.styleHeight(can._target, height) }, }) -Volcanos(chat.ONENGINE, {help: "解析引擎", list: [], _engine: function(event, page, msg, can, cmds, cb) { +Volcanos(chat.ONENGINE, {help: "解析引擎", _engine: function(event, page, msg, can, cmds, cb) { var storm = can.core.Value(can._root, can.core.Keys(chat.RIVER, cmds[0], chat.STORM, cmds[1])) if (!storm || cmds.length != 2) { return false } @@ -75,7 +75,7 @@ Volcanos(chat.ONENGINE, {help: "解析引擎", list: [], _engine: function(event } return true }}) -Volcanos(chat.ONPLUGIN, {help: "注册插件", list: [], +Volcanos(chat.ONPLUGIN, {help: "注册插件", "parse": shy("解析", { "show": function(can, msg, cmds) { can.require(["/plugin/story/parse.js"], function() { @@ -110,7 +110,7 @@ Volcanos(chat.ONPLUGIN, {help: "注册插件", list: [], }), "can.code.inner.plugin": shy("插件", {}, [{type: "button", name: "list", action: "auto"}, "back"], function(can, msg, cmds) {}), }) -Volcanos(chat.ONKEYMAP, {help: "键盘交互", list: [], _focus: [], _init: function(can, target) { +Volcanos(chat.ONKEYMAP, {help: "键盘交互", _focus: [], _init: function(can, target) { can.onkeymap._build(can), can.onengine.listen(can, chat.ONKEYDOWN, function(msg, model) { can._keylist = can.onkeymap._parse(msg._event, can, model, can._keylist||[], can._output) }) @@ -144,7 +144,7 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互", list: [], _focus: [], _init: func }, }, _engine: {}, }) -Volcanos(chat.ONACTION, {help: "交互操作", list: [], _init: function(can, cb, target) { +Volcanos(chat.ONACTION, {help: "交互操作", _init: function(can, cb, target) { can.Conf(html.MARGIN_Y, 4*html.PLUGIN_MARGIN+2*html.ACTION_HEIGHT+html.ACTION_MARGIN) can.Conf(html.MARGIN_X, 4*html.PLUGIN_MARGIN) @@ -232,7 +232,7 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [], _init: function(can, cb }) }, }) -Volcanos(chat.ONLAYOUT, {help: "导出数据", list: [], +Volcanos(chat.ONLAYOUT, {help: "导出数据", auto: function(can) { can.Conf(chat.LAYOUT, "") }, @@ -258,7 +258,7 @@ Volcanos(chat.ONLAYOUT, {help: "导出数据", list: [], return can.onmotion.toimage(event, can, can.Conf(chat.STORM), can._output), true }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], +Volcanos(chat.ONEXPORT, {help: "导出数据", args: function(can, msg, cb, target) { can.core.Next(can.page.Select(can, target, [[html.FIELDSET_PLUGIN, html.FORM_OPTION]]), function(item, next, index, array) { item.dataset.args = JSON.stringify(can.page.Select(can, item, html.OPTION_ARGS, function(item) { return item.value||"" })) diff --git a/panel/footer.js b/panel/footer.js index 1eba48f7..85725bda 100644 --- a/panel/footer.js +++ b/panel/footer.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg) can.onimport._title(can, msg, target) can.onimport._state(can, msg, target) @@ -49,7 +49,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms can.onimport.count(can, "ncmd") }, }) -Volcanos(chat.ONACTION, {help: "交互数据", list: [], _init: function(can, cb, target) { +Volcanos(chat.ONACTION, {help: "交互数据", _init: function(can, cb, target) { if (can.user.mod.isPod || can.user.isExtension) { can.onmotion.hidden(can, can._target) } can.base.isFunc(cb) && cb() }, @@ -59,7 +59,7 @@ Volcanos(chat.ONACTION, {help: "交互数据", list: [], _init: function(can, cb onaction_cmd: function(can, msg) { can.onmotion.hidden(can) }, oncommandfocus: function(can) { can.page.Select(can, can._output, ["div.cmd", "input"], function(target) { can.onmotion.focus(can, target) }) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], +Volcanos(chat.ONEXPORT, {help: "导出数据", height: function(can) { return can._target.offsetHeight }, float: function(can, msg, cb, name, bottom) { if (can[name]) { return can[name].close() } var ui = can.onappend.field(can, "story toast float", {}, can._root._target) diff --git a/panel/header.js b/panel/header.js index e870735c..91cbf68e 100644 --- a/panel/header.js +++ b/panel/header.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.onmotion.clear(can) can.onimport._title(can, msg, target) can.onimport._state(can, msg, target) @@ -102,7 +102,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms }) }]).first }, }) -Volcanos(chat.ONPLUGIN, {help: "注册插件", list: [], +Volcanos(chat.ONPLUGIN, {help: "注册插件", "topic": shy("主题", { "demo": function(can, msg, cmds) { can.onimport.topic(can, cmds[0]) }, }, ["topic:select=white,black", "run:button", "demo:button"], function(can, msg, cmds) { @@ -123,7 +123,7 @@ Volcanos(chat.ONPLUGIN, {help: "注册插件", list: [], console.log(cmds[0]) }), }) -Volcanos(chat.ONACTION, {help: "交互数据", list: [], _init: function(can, cb, target) { +Volcanos(chat.ONACTION, {help: "交互数据", _init: function(can, cb, target) { can.base.isFunc(cb) && cb() }, _menus: [["setting", chat.BLACK, chat.WHITE, chat.PRINT, code.WEBPACK, "toimage", ctx.CONFIG]], @@ -240,7 +240,7 @@ Volcanos(chat.ONACTION, {help: "交互数据", list: [], _init: function(can, cb clear: function(event, can) { can.onimport.background(event, can, ""), can.onimport.avatar(event, can, "") }, logout: function(event, can) { can.user.logout(can) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], +Volcanos(chat.ONEXPORT, {help: "导出数据", height: function(can) { return can._target.offsetHeight }, topic: function(can) { return can._topic }, avatar: function(can) { diff --git a/panel/river.js b/panel/river.js index 8ecd3dca..3d4dbe59 100644 --- a/panel/river.js +++ b/panel/river.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.onmotion.clear(can), can.river_list = {}, can.storm_list = {} can.onimport._main(can, msg), can.onimport._menu(can, msg) @@ -6,9 +6,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms return can.onimport._river(can, item, function(target) { (index == 0 || item.hash == can._main_river) && (select = target) }) - })), select && can.onmotion.delay(can, function() { - can.onlayout._init(can), select.click() - }) + })), select && select.click() }, _main: function(can, msg) { // if (can.user.isMobile) { can._main_river = "product", can._main_storm = "office" } @@ -54,7 +52,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms var show = can.onmotion.toggle(can, can._target); can.onlayout._init(can); return show }, }) -Volcanos(chat.ONENGINE, {help: "解析引擎", list: [], _engine: function(event, can, msg, panel, cmds, cb) { +Volcanos(chat.ONENGINE, {help: "解析引擎", _engine: function(event, can, msg, panel, cmds, cb) { var list = can._root.river cmds.length == 0 && can.core.ItemSort(list, "order", function(key, value) { if (can.core.Item(value.storm).length == 0) { return } @@ -66,7 +64,7 @@ Volcanos(chat.ONENGINE, {help: "解析引擎", list: [], _engine: function(event msg.Push({hash: key, name: can.user.language(can) == "en"? key: value.name}) // 应用列表 }), can.base.isFunc(cb) && cb(msg); return true }}) -Volcanos(chat.ONACTION, {help: "控件交互", list: [], _init: function(can, cb, target) { +Volcanos(chat.ONACTION, {help: "控件交互", _init: function(can, cb, target) { can.onmotion.hidden(can, target), can.base.isFunc(cb) && cb() }, onlogin: function(can, msg) { @@ -111,9 +109,12 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [], _init: function(can, cb can.onmotion.select(can, can._output, html.DIV_ITEM, can.river_list[river]) can.onmotion.select(can, can._output, [html.DIV_LIST, html.DIV_ITEM], can.storm_list[can.core.Keys(river, storm)]) - can.onengine.signal(can, chat.ONSTORM_SELECT, can.request(event, { - river: can.Conf(chat.RIVER, river), storm: can.Conf(chat.STORM, storm), - })) + can.onmotion.delay(can, function() { + can.onlayout._init(can) + can.onengine.signal(can, chat.ONSTORM_SELECT, can.request(event, { + river: can.Conf(chat.RIVER, river), storm: can.Conf(chat.STORM, storm), + })) + }) }, create: function(event, can) { @@ -232,7 +233,7 @@ Volcanos(chat.ONDETAIL, {help: "菜单交互", }) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], +Volcanos(chat.ONEXPORT, {help: "导出数据", width: function(can) { return can._target.offsetWidth }, storm: function(can, msg, word) { var fields = (msg.Option(ice.MSG_FIELDS)||"ctx,cmd,type,name,text").split(",") diff --git a/panel/search.js b/panel/search.js index 088cb633..167ec862 100644 --- a/panel/search.js +++ b/panel/search.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, list, cb, target) { can.list = msg.Table(), can.onmotion.clear(can, can.ui.content) var table = can.onappend.table(can, msg, function(value, key, index, line, array) { can.Status(mdb.TOTAL, index+1) return {text: [key == mdb.TEXT && can.base.isFunc(line.text) && line.text.help || value, html.TD], onclick: function(event) { @@ -126,7 +126,7 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [cli.CLOSE, cli.CLEAR, cli. }, can.ui.profile) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], +Volcanos(chat.ONEXPORT, {help: "导出数据", select: function(can) { return can.page.Select(can, can.ui.display, html.TR, function(tr) { return can.page.Select(can, tr, html.TD, function(td) { return td.innerHTML }) diff --git a/plugin/input.js b/plugin/input.js index 9a40730b..d8034f15 100644 --- a/plugin/input.js +++ b/plugin/input.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONACTION, {help: "控件交互", list: [], _init: function(can, meta, cb, target) { +Volcanos(chat.ONACTION, {help: "控件交互", _init: function(can, meta, cb, target) { can.base.isFunc(cb) && cb(); switch (meta.type) { case html.SELECT: meta.value && (target.value = meta.value); break case html.BUTTON: meta.action == ice.AUTO && target.click(); break diff --git a/plugin/input/date.js b/plugin/input/date.js index 9b448506..9dcd0da2 100644 --- a/plugin/input/date.js +++ b/plugin/input/date.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONFIGURE, {help: "控件详情", list: [], date: {onclick: function(event, can, meta, cb, target) { cb(function(can, cbs) { +Volcanos(chat.ONFIGURE, {help: "控件详情", date: {onclick: function(event, can, meta, cb, target) { cb(function(can, cbs) { function set(now) { target.value = can.user.time(can, now), can.close(), meta && meta.action == ice.AUTO && can.run({}) } // 添加控件 diff --git a/plugin/input/key.js b/plugin/input/key.js index 36fa1a4a..0a6b6327 100644 --- a/plugin/input/key.js +++ b/plugin/input/key.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONFIGURE, {help: "控件详情", list: [], key: { +Volcanos(chat.ONFIGURE, {help: "控件详情", key: { _init: function(event, can, cbs, target, name, value) { var call = arguments.callee can.runAction(event, mdb.INPUTS, [name, value||target.value], function(msg) { can.onmotion.clear(can), can.onappend.table(can, msg, function(value) { diff --git a/plugin/input/province.js b/plugin/input/province.js index 3317d2a7..f0d65475 100644 --- a/plugin/input/province.js +++ b/plugin/input/province.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONFIGURE, {help: "控件详情", list: [], province: {onclick: function(event, can, meta, cb, target) { cb(function(can, cbs) { +Volcanos(chat.ONFIGURE, {help: "控件详情", province: {onclick: function(event, can, meta, cb, target) { cb(function(can, cbs) { can.require(["/require/shylinux.com/x/echarts/echarts.js", "/require/shylinux.com/x/echarts/china.js"], function() { var china_chart = echarts.init(can.page.Append(can, can._output, [{type: html.DIV, style: {width: 600, height: 400}}]).first) china_chart.setOption({geo: {map: 'china'}}), china_chart.on(html.CLICK, function (params) { diff --git a/plugin/local/chat/div.js b/plugin/local/chat/div.js index 0634eb65..ce48e67a 100644 --- a/plugin/local/chat/div.js +++ b/plugin/local/chat/div.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { var meta = {}; msg.Table(function(value) { meta[value.key] = value.value }) can._meta = can.base.Obj(meta.text, {meta: {name: meta.name||"hi"}, list: []}) can.base.isFunc(cb) && cb(msg) @@ -76,7 +76,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms return field }, }, ["/plugin/local/chat/div.css"]) -Volcanos(chat.ONACTION, {help: "操作数据", list: [], +Volcanos(chat.ONACTION, {help: "操作数据", "添加": function(event, can) { can.user.input(event, can, [mdb.NAME, ctx.INDEX, ctx.ARGS, ctx.STYLE, html.HEIGHT, html.WIDTH], function(data) { can.current._add({meta: data, list: []}) @@ -89,4 +89,3 @@ Volcanos(chat.ONACTION, {help: "操作数据", list: [], can.onmotion.share(event, can, [], [mdb.LINK, can.misc.MergeURL(can, {_path: "/chat/div/"+can.Option("hash")})]) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: []}) diff --git a/plugin/local/chat/media.js b/plugin/local/chat/media.js index e883864a..a4a41b34 100644 --- a/plugin/local/chat/media.js +++ b/plugin/local/chat/media.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.ui = can.onlayout.display(can, target) can.ui.canvas = can.page.Append(can, can.ui.display, [{type: "canvas", width: 320, height: 240, style: {display: "none"}}]).first @@ -14,7 +14,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms can.base.isFunc(cb) && cb(msg) }, }) -Volcanos(chat.ONACTION, {help: "操作数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos(chat.ONACTION, {help: "操作数据", _init: function(can, msg, cb, target) { }, open: function(event, can) { @@ -31,5 +31,3 @@ Volcanos(chat.ONACTION, {help: "操作数据", list: [], _init: function(can, ms can.page.Append(can, can.ui.display, [{type: "img", src: can.ui.canvas.toDataURL('image/webp')}]) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], -}) diff --git a/plugin/local/chat/trans.js b/plugin/local/chat/trans.js index b6cf9820..97020aa5 100644 --- a/plugin/local/chat/trans.js +++ b/plugin/local/chat/trans.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.onmotion.clear(can) can.from = can.onimport._plugin(can, nfs.DIR, html.LEFT, "from", "to") can.to = can.onimport._plugin(can, nfs.DIR, html.RIGHT, "to", "from") @@ -21,7 +21,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms }) }, }) -Volcanos(chat.ONACTION, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos(chat.ONACTION, {help: "导入数据", _init: function(can, msg, cb, target) { }, send: function(can, from, to, event, cmds, cb) { var _from = can[from], _to = can[to] var path = can.request(event).Option(nfs.PATH) diff --git a/plugin/local/code/inner.css b/plugin/local/code/inner.css index ec6f415e..fc90d7d3 100644 --- a/plugin/local/code/inner.css +++ b/plugin/local/code/inner.css @@ -21,7 +21,7 @@ fieldset.inner>div.output div.content td.text span.datatype { color:lightgreen; fieldset.inner>div.output div.content td.text span.function { color:cyan; font-weight:bold; } fieldset.inner>div.output div.content td.text span.constant { color:magenta; } fieldset.inner>div.output div.content td.text span.string { color:magenta; } -fieldset.inner>div.output div.content legend { margin-right:4px; height:30px; float:left; } +fieldset.inner>div.output div.content legend { margin-right:4px; float:left; } fieldset.inner>div.output div.profile>div.output>fieldset>legend { padding:0.1rem; float:left; } fieldset.inner>div.output div.display { border:solid 1px greenyellow; } diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index eb12e840..ff816d87 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -279,9 +279,10 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar can.page.styleWidth(can, can.ui.profile_output, can.profile_size[can.onexport.keys(can)]||(width-can.ui.project.offsetWidth)/2) can.page.styleWidth(can, can.ui.content, width-can.ui.project.offsetWidth-can.ui.profile.offsetWidth) can.page.styleWidth(can, can.ui.display, width-can.ui.project.offsetWidth) + can.page.style(can, can._output, html.MAX_WIDTH, "") + if (can.Conf("mode") == "simple") { return } - if (!height && can.Conf("mode") == "simple") { return } - var height = can.ConfHeight()-(can.user.isMobile && can._mode == "cmd"? (can.user.isLandscape()? 14: 54): 0)-(can.user.isWindows? 20: 0) + var height = can.ConfHeight() if (!height || height > can._root._height) { height = can._root._height - 200 } if (can.user.isMobile && can.user.isLandscape() && height < 200) { height = 400 } diff --git a/plugin/local/code/snippet.js b/plugin/local/code/snippet.js index 7481060d..50e19756 100644 --- a/plugin/local/code/snippet.js +++ b/plugin/local/code/snippet.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.onmotion.clear(can) if (msg.Option("content")) { can.onappend.plugin(can, {index: "web.code.vimer", style: "full"}, function(sub) { @@ -19,7 +19,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms can.onappend.board(can, msg) }, }) -Volcanos(chat.ONACTION, {help: "操作数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos(chat.ONACTION, {help: "操作数据", _init: function(can, msg, cb, target) { }, run: function(event, can, msg) { can.runAction(event, ice.RUN, ["go", "hi.go", can.sub.onexport.content(can.sub)], function(msg) { @@ -27,5 +27,3 @@ Volcanos(chat.ONACTION, {help: "操作数据", list: [], _init: function(can, ms }) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], _init: function(can, msg, list, cb, target) { -}}) diff --git a/plugin/local/code/vimer.js b/plugin/local/code/vimer.js index 93ce118a..d11730fd 100644 --- a/plugin/local/code/vimer.js +++ b/plugin/local/code/vimer.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.require(["inner.js"], function(can) { can.onimport.inner_init(can, msg, function() { can.undo = [], can.redo = [] can.onkeymap._build(can), can.onimport._input(can), can.onkeymap._plugin({}, can), can.base.isFunc(cb) && cb(msg) @@ -26,7 +26,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms ]); can.ui.current = ui.current, can.ui.complete = ui.complete }, }, [""]) -Volcanos(chat.ONKEYMAP, {help: "键盘交互", list: [], +Volcanos(chat.ONKEYMAP, {help: "键盘交互", _model: function(can, value) { can.Status("模式", can.mode = value) can.page.styleClass(can, can.ui.current, ["current", can.mode]), value can.page.styleClass(can, can.ui.complete, ["complete", can.mode]), value diff --git a/plugin/local/team/plan.js b/plugin/local/team/plan.js index 462c30ba..e0aed5f9 100644 --- a/plugin/local/team/plan.js +++ b/plugin/local/team/plan.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.onmotion.clear(can, target) can.ui = can.onlayout.profile(can) can.onimport[can.Option("scale")||"week"](can, msg) diff --git a/plugin/local/wiki/data.js b/plugin/local/wiki/data.js index 12b0a2bd..4682c2cd 100644 --- a/plugin/local/wiki/data.js +++ b/plugin/local/wiki/data.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb) { can.ui = can.onlayout.display(can) can.base.isFunc(cb) && cb(msg) @@ -18,7 +18,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms can.onaction._compute(event, can) }, }) -Volcanos(chat.ONFIGURE, {help: "组件菜单", list: [], +Volcanos(chat.ONFIGURE, {help: "组件菜单", "求和": function(event, can, res, td, index) { res[index] = parseInt(td.innerText) + (res[index]||0); }, @@ -131,7 +131,7 @@ Volcanos(chat.ONDETAIL, {help: "组件详情", list: ["复制", "删除"], can.page.Remove(can, event.target.parentNode) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], +Volcanos(chat.ONEXPORT, {help: "导出数据", file: function(can) { return can.page.Select(can, can.ui.content, "tr", function(tr) { return can.page.Select(can, tr, "th,td", function(td) {return td.innerHTML}).join(",") diff --git a/plugin/local/wiki/draw.js b/plugin/local/wiki/draw.js index cad68efb..6f8260ae 100644 --- a/plugin/local/wiki/draw.js +++ b/plugin/local/wiki/draw.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg) can.onimport._show(can, msg), can.onmotion.hidden(can, can._action) can.keylist = [], can.onkeymap._build(can) @@ -114,7 +114,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms return value && g.Value(value), g }, }, [""]) -Volcanos(chat.ONFIGURE, {help: "图形绘制", list: [], +Volcanos(chat.ONFIGURE, {help: "图形绘制", _get: function(can, item, name) { return can.onfigure[name]||can.onfigure[item.getAttribute(mdb.NAME)]||can.onfigure[item.tagName] }, @@ -215,7 +215,7 @@ Volcanos(chat.ONFIGURE, {help: "图形绘制", list: [], text: function(can, data, target) { can.onfigure.rect.text(can, data, target) }, }, }, []) -Volcanos(chat.ONKEYMAP, {help: "键盘交互", list: [], +Volcanos(chat.ONKEYMAP, {help: "键盘交互", _mode: { normal: { gr: function(event, can) { can.Action("go", "run") }, diff --git a/plugin/local/wiki/draw/heart.js b/plugin/local/wiki/draw/heart.js index a2ddaee5..9e16d115 100644 --- a/plugin/local/wiki/draw/heart.js +++ b/plugin/local/wiki/draw/heart.js @@ -1,4 +1,4 @@ -Volcanos("heart", {help: "心形", list: [], +Volcanos("heart", {help: "心形", data: {name: "path", size: {}, copy: ["d", "name", "meta", "tt", "xx", "yy"], x: function(event, can, value, cmd, target) { diff --git a/plugin/local/wiki/draw/path.js b/plugin/local/wiki/draw/path.js index 7714d8db..0bd247d6 100644 --- a/plugin/local/wiki/draw/path.js +++ b/plugin/local/wiki/draw/path.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONFIGURE, {help: "图形绘制", list: [], +Volcanos(chat.ONFIGURE, {help: "图形绘制", path2v: { // data: {name: "path", size: {}, copy: []}, draw: function(event, can, point) { diff --git a/plugin/local/wiki/draw/walk_trash.js b/plugin/local/wiki/draw/walk_trash.js index 24ae647b..23a58a85 100644 --- a/plugin/local/wiki/draw/walk_trash.js +++ b/plugin/local/wiki/draw/walk_trash.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], +Volcanos(chat.ONIMPORT, {help: "导入数据", init: function(can, msg, cb, output, action, option) {output.innerHTML = ""; if (!msg.result || msg.result.length == 0) { var table = can.page.AppendTable(can, msg, output, msg.append); diff --git a/plugin/local/wiki/feel.js b/plugin/local/wiki/feel.js index b9fa9e6e..34ec707e 100644 --- a/plugin/local/wiki/feel.js +++ b/plugin/local/wiki/feel.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.path = can.request(), can.list = [], msg.Table(function(value) { can.base.endWith(value.path, ice.PS)? can.path.Push(value): can.list.push(value) }), can.base.isFunc(cb) && cb(msg) @@ -29,7 +29,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms can.Status({begin: begin, limit: limit, total: can.list.length}) }, }, [""]) -Volcanos(chat.ONFIGURE, {help: "组件菜单", list: [], +Volcanos(chat.ONFIGURE, {help: "组件菜单", png: function(can, path, index) { return can.onfigure.image(can, path, index) }, jpg: function(can, path, index) { return can.onfigure.image(can, path, index) }, jpeg: function(can, path, index) { return can.onfigure.image(can, path, index) }, diff --git a/plugin/local/wiki/word.css b/plugin/local/wiki/word.css index 5dc496e7..6248efa2 100644 --- a/plugin/local/wiki/word.css +++ b/plugin/local/wiki/word.css @@ -1,6 +1,6 @@ fieldset.word form.option input[name=path] { width:127px; } -fieldset.word>div.navmenu { background-color:inherit; overflow:auto; margin-right:10px; min-width:120px; clear:both; float:left; } +fieldset.word>div.navmenu { background-color:inherit; overflow:auto; min-width:120px; clear:both; float:left; } fieldset.word>div.navmenu div.list { margin-left:20px; } fieldset.word>div.navmenu div.item { font-size:1.6em; font-weight:bold; font-family:cursive; padding:4px 10px; } fieldset.word>div.navmenu>div.item { font-size:2em; } @@ -20,6 +20,16 @@ fieldset.word svg.story { font-family:fangsong; } fieldset.word video.story { max-height:320px; } fieldset.word fieldset.story { margin:10px; } +fieldset.word div.story[data-type=spark][data-name=field]>div.menu { + float:left; overflow:auto; +} +fieldset.word div.story[data-type=spark][data-name=field]>div.list { + float:left; overflow:auto; +} +fieldset.word div.story[data-type=spark][data-name=field]>div.menu div.list div.item { + padding:0 20px; +} + fieldset.word.float { padding:0; margin:0; width:-webkit-fill-available; position:fixed; left:0; top:0; z-index:10; } fieldset.word.float>div.action { display:contents; } fieldset.word.float>div.status { clear:none; } diff --git a/plugin/local/wiki/word.js b/plugin/local/wiki/word.js index 19f0338e..a7d0f101 100644 --- a/plugin/local/wiki/word.js +++ b/plugin/local/wiki/word.js @@ -1,5 +1,4 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { - can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg) if (msg.Length() > 0) { return can.onappend.table(can, msg) } @@ -7,23 +6,10 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar can.page.Select(can, target, wiki.ITEM, function(item) { var data = item.dataset||{} can.page.style(can, item, can.base.Obj(data.style)) can.core.CallFunc([can.onimport, data.type], [can, data, item]) - // can.page.style(can, item, html.MAX_WIDTH, can.ConfWidth()-(can.user.isWindows? 40: 30)) }) }, - image: function(can, data, target) { - can.page.style(can, target, html.MAX_HEIGHT, can.ConfHeight()/2, html.MAX_WIDTH, can.ConfWidth()) - - // if (can.user.isMobile) { - if (can.user.isLandscape()) { - } else{ - can.page.style(can, target, html.MAX_HEIGHT, can.ConfHeight(), html.MAX_WIDTH, can.ConfWidth()) - } - // return - // } - // can.page.style(can, target, html.MAX_HEIGHT, can.ConfHeight()/4) - }, navmenu: function(can, data, target) { var nav = can.sup._navmenu - nav = nav||can.page.Append(can, can._fields, [{view: wiki.NAVMENU}]).first + nav = nav||can.page.Append(can, can._fields, [wiki.NAVMENU]).first can.onmotion.clear(can, nav), can._fields.insertBefore(nav, can._output) can.onimport.list(can, can.base.Obj(data.data), function(event, item) { @@ -37,10 +23,11 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar can.getActionSize(function(msg) { can.page.style(can, nav, html.HEIGHT, can.ConfHeight()+(can._mode == "cmd"? msg.Option(html.MARGIN_Y): 0)) - can.ConfWidth(can.ConfWidth()-nav.offsetWidth-(can._mode == "cmd"? 10: 20)-10) + can.ConfWidth(can.ConfWidth()-nav.offsetWidth-20) can.page.style(can, can._output, - html.HEIGHT, can.sup._navmenu.offsetHeight, html.MAX_WIDTH, can.ConfWidth(), - html.FLOAT, html.LEFT, html.CLEAR, html.NONE + html.HEIGHT, can.sup._navmenu.offsetHeight-20, html.MAX_WIDTH, can.ConfWidth(), + html.FLOAT, html.LEFT, html.CLEAR, html.NONE, + html.PADDING, 10, ) }) }, @@ -57,7 +44,6 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar refer: function(can, data, target) { can.page.Select(can, target, html.A, function(item) { item.onclick = function(event) { - can.request(event, kit.Dict(ice.MSG_HANDLE, ice.TRUE)) can.runAction(event, mdb.CREATE, [mdb.TYPE, "refer", mdb.NAME, item.dataset.name, mdb.TEXT, item.href]) } }) @@ -67,8 +53,8 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar function deep(text) { var d = 0 for (var i = 0; i < text.length; i++) { switch (text[i]) { - case "\t": d += 4; break - case " ": d++; break + case ice.TB: d += 4; break + case ice.SP: d++; break default: return d } } @@ -82,40 +68,40 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar var first; function show(item, index, target, output) { var ui = can.page.Append(can, target, [{view: [html.ITEM, html.DIV, item.meta.name||item.meta.index], onclick: function(event) { - if (ui.list.innerText) { return can.onmotion.toggle(can, ui.list) } can.onmotion.select(can, view.menu, html.DIV_ITEM, event.target) + if (ui.list.innerText) { return can.onmotion.toggle(can, ui.list) } if (can.onmotion.cache(can, function() { return index }, output)) { return } + can.core.List(item.list, function(item) { can.onappend.plugin(can, item.meta, function(sub) { - sub.run = function(event, cmds, cb, silent) { - can.runActionCommand(event, item.meta.index, cmds, cb) - } - sub.ConfWidth(item.meta.width = can.ConfWidth()-165) - sub.ConfHeight(item.meta.height = can.ConfHeight()-300) - can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth()-2*html.PLUGIN_MARGIN) - can.page.style(can, sub._status, html.MAX_WIDTH, sub.ConfWidth()-2*html.PLUGIN_MARGIN) + sub.run = function(event, cmds, cb) { can.runActionCommand(event, item.meta.index, cmds, cb) } + sub.ConfHeight(item.meta.height = can.ConfHeight()/2), sub.ConfWidth(item.meta.width = can.ConfWidth()-165) + can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth()) }, output) }) - }}, {view: html.LIST}]) + }}, html.LIST]) can.core.List(item.list, function(item) { item.list.length > 0 && show(item, can.core.Keys(index, item.meta.index), ui.list, output) }) ui.list.innerText == "" && (first = first||ui.item) } - var view = can.page.Appends(can, target, [{view: html.MENU}, {view: html.LIST}]) + var view = can.page.Appends(can, target, [ + {view: html.MENU, style: {height: can.ConfHeight()/2, width: 120}}, + {view: html.LIST, style: {height: can.ConfHeight()/2, width: can.ConfWidth()-165}}, + ]) return show(list[0], list[0]._index, view.menu, view.list), first.click() } + if (data[mdb.NAME] == html.INNER) { return can.onmotion.copy(can, target) } - can.page.Select(can, target, html.A, function(item) { can.onmotion.link(can, item) }) can.page.Select(can, target, html.SPAN, function(item) { can.onmotion.copy(can, item, "", function(event) { - can.runAction(event, mdb.CREATE, [mdb.TYPE, "spark", mdb.NAME, "shell", mdb.TEXT, item.innerText]) + can.runAction(event, mdb.CREATE, [mdb.TYPE, "spark", mdb.NAME, "shell", mdb.TEXT, item.innerText], function() {}) }) }) }, chart: function(can, data, target) { target.oncontextmenu = function(event) { can.user.carteClient(event, can, kit.Dict(mdb.EXPORT, function(event, can, button) { - can.onmotion.toimage(event, can, "hi.png", target) + can.onmotion.toimage(event, can, "hi", target) }), [mdb.EXPORT]) } }, @@ -123,26 +109,25 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar can.page.OrderTable(can, target), can.page.ClassList.add(can, target, chat.CONTENT) can.page.Select(can, target, html.TD, function(item) { can.onmotion.copy(can, item) }) }, + image: function(can, data, target) { + can.page.style(can, target, html.MAX_HEIGHT, can.ConfHeight()/(can.user.isMobile? 2: 1), html.MAX_WIDTH, can.ConfWidth()) + }, field: function(can, data, target, width) { var item = can.base.Obj(data.meta) can.onappend._init(can, item, [chat.PLUGIN_STATE_JS], function(sub) { sub.run = function(event, cmds, cb, silent) { can.runAction(event, chat.STORY, can.misc.concat(can, [data.type, data.name, data.text], cmds), cb) } - sub.ConfHeight(can.ConfHeight()) - sub.ConfWidth(item.width = (width||can.ConfWidth())-(can.user.isWindows? 40: 20)) + + sub.ConfHeight(can.ConfHeight()), sub.ConfWidth(item.width = (width||can.ConfWidth())-(can.user.isWindows? 40: 20)) can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth()) - can.core.Value(item, "auto.cmd") && can.core.Timer300ms(function() { - var msg = sub.request({}, can.core.Value(item, "opts")); msg.Option(ice.MSG_HANDLE, ice.TRUE) - sub.Update(msg, [ctx.ACTION, can.core.Value(item, "auto.cmd")]) + can.core.Value(item, "auto.cmd") && can.onmotion.delay(function() { + sub.runAction(sub.request({}, can.core.Value(item, "opts")), can.core.Value(item, "auto.cmd")) }) }, can._output, target) }, - iframe: function(can, data, target) { var meta = can.base.Obj(data.meta) - can.page.Modify(can, target, {width: can.ConfWidth()-200}) - }, }, [""]) -Volcanos(chat.ONKEYMAP, {help: "键盘交互", list: [], +Volcanos(chat.ONKEYMAP, {help: "键盘交互", _mode: { normal: { "n": function(event, can) { can.ondetail.next(can.sub) }, @@ -157,23 +142,16 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互", list: [], }, }, _engine: {}, }) -Volcanos(chat.ONACTION, {help: "控件交互", list: [], +Volcanos(chat.ONACTION, {help: "控件交互", _trans: {view: "视图"}, play: function(event, can) { var list = [], current = [] can.page.Select(can, can._output, wiki.ITEM, function(item) { - switch (item.tagName) { - case "H1": - case "H2": - case "H3": - list.push(current = []) - break - } - current.push(item) + can.page.tagis(["h1", "h2", "h3"], item) && list.push(current = []), current.push(item) }) can.onappend._init(can, {type: "story word float"}, [], function(sub) { sub.run = can.run, sub.sup = can, can.sub = sub, can.onappend._action(sub, [ - ["布局", "开讲", "快闪", "网格"], "大纲", "首页", "上一页", + ["布局", "开讲", "网格", "快闪"], "大纲", "首页", "上一页", ["菜单"].concat(can.core.List(list, function(page) { return page[0].innerHTML })), "下一页", "隐藏", "结束", ], sub._action, can.ondetail) @@ -216,8 +194,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [], } }, }) -Volcanos(chat.ONDETAIL, {help: "交互操作", list: ["删除"], _init: function(can, msg, list, cb, target) { - }, +Volcanos(chat.ONDETAIL, {help: "交互操作", list: ["删除"], show: function(sub, which) { sub.page.styleClass(sub, sub.ui.content, chat.CONTENT) sub.page.Select(sub, sub.ui.content, wiki.DIV_PAGE, function(page, index) { if (index == which || page == which) { @@ -248,8 +225,8 @@ Volcanos(chat.ONDETAIL, {help: "交互操作", list: ["删除"], _init: function grid: function(sub) { sub.page.styleClass(sub, sub.ui.content, "content grid") }, "开讲": function(event, can) { can.sup.ondetail.show(can, 0) }, - "快闪": function(event, can) { can.sup.ondetail.flash(can) }, "网格": function(event, can) { can.sup.ondetail.grid(can) }, + "快闪": function(event, can) { can.sup.ondetail.flash(can) }, "大纲": function(event, can) { can.onmotion.toggle(can, can.ui.project) }, "首页": function(event, can) { can.sup.ondetail.show(can, 0) }, diff --git a/plugin/state.js b/plugin/state.js index 1c78c75d..77c1e31f 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, meta, cb, target) {}, +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, conf, 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}) @@ -88,7 +88,7 @@ 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)) }, @@ -198,7 +198,7 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [ can.user.input(event, can, [{type: html.TEXTAREA, name: mdb.TEXT}], function(list) { add(list[0]) }) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], +Volcanos(chat.ONEXPORT, {help: "导出数据", table: function(can) { var msg = can._msg; if (msg.Length() == 0) { return } var res = [msg.append && msg.append.join(ice.FS)]; msg.Table(function(line, index, array) { res.push(can.core.Item(line, function(key, value) { return value }).join(ice.FS)) diff --git a/plugin/story/form.js b/plugin/story/form.js index dbc3f1c5..9458357a 100644 --- a/plugin/story/form.js +++ b/plugin/story/form.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.page.ClassList.add(can, target, "form") msg.Push("type", "text") msg.Push("name", "name") diff --git a/plugin/story/json.js b/plugin/story/json.js index 0a6e0df7..cd269cf5 100644 --- a/plugin/story/json.js +++ b/plugin/story/json.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.page.ClassList.add(can, target, "json") can.onmotion.clear(can, target), can.base.isFunc(cb) && cb(msg) can.onappend.table(can, msg), can.onimport.show(can, can.base.Obj(msg.Result(), {}), target) @@ -57,4 +57,3 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: ["展开", "折叠", "复 can.user.copy(event, can, can._msg.Result()) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: []}) diff --git a/plugin/story/media.js b/plugin/story/media.js index ea1b3015..76912c06 100644 --- a/plugin/story/media.js +++ b/plugin/story/media.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.base.isFunc(cb) && cb(msg) }}) Volcanos(chat.ONACTION, {help: "操作数据", list: ["打开屏幕", "打开摄像", "打开录音"], @@ -46,4 +46,3 @@ Volcanos(chat.ONACTION, {help: "操作数据", list: ["打开屏幕", "打开摄 }) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: []}) diff --git a/plugin/story/parse.js b/plugin/story/parse.js index 0e2504a5..5feffef2 100644 --- a/plugin/story/parse.js +++ b/plugin/story/parse.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONAPPEND, {help: "渲染引擎", list: [], +Volcanos(chat.ONAPPEND, {help: "渲染引擎", parse: function(can, list, target, keys, data, type) { target = target||can._output, data = data||{} if (!list) { return } else if (can.base.isArray(list)) { return can.core.List(list, function(meta, index) { diff --git a/plugin/story/pie.js b/plugin/story/pie.js index 27c45021..cc6b8e61 100644 --- a/plugin/story/pie.js +++ b/plugin/story/pie.js @@ -34,7 +34,11 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar var begin = 0; msg[cli.COLOR] = [], msg["weight"] = [], msg.Table(function(value, index) { var span = can.onimport._parseInt(can, value[field])/total*360 var p = index==which? pos(x, y, margin, begin+span/2): [x, y], c = color[index%color.length] - pie(p[0], p[1], r, begin, span, c, function(event) { can.onimport._draw(can, msg, field, color, x, y, r, margin, index) }), begin += span + if (msg.Length() == 1) { + can.onimport.draw({}, can, {shape: svg.CIRCLE, point: [{x: x, y: y}, {x: x, y: y+r}], style: {fill: color[0]}}) + } else { + pie(p[0], p[1], r, begin, span, c, function(event) { can.onimport._draw(can, msg, field, color, x, y, r, margin, index) }), begin += span + } msg.Push(cli.COLOR, ' ') msg.Push("weight", parseInt(span*100/360)+"%") if (index == which) { can.Status(value), can.Status("weight", parseInt(span*100/360)+"%") } @@ -48,4 +52,4 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar return parseInt(value) } }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], _show: function(can) {}}) +Volcanos(chat.ONEXPORT, {help: "导出数据", _show: function(can) {}}) diff --git a/plugin/story/spide.js b/plugin/story/spide.js index 98ad502e..367298cc 100644 --- a/plugin/story/spide.js +++ b/plugin/story/spide.js @@ -121,7 +121,7 @@ Volcanos(chat.ONACTION, {help: "用户操作", list: [ }) }, }) -Volcanos(chat.ONDETAIL, {help: "用户交互", list: [], +Volcanos(chat.ONDETAIL, {help: "用户交互", onmouseenter: function(event, can, tree) { var y = tree.y+tree.height*can.margin/2 can.page.Remove(can, can.pos), can.pos = can.onimport.draw({}, can, {shape: svg.RECT, point: [ {x: tree.x-can.margin/4, y: y-can.margin/2}, {x: tree.x+tree.width+can.margin/8, y: y+can.margin/2}, @@ -156,7 +156,7 @@ Volcanos(chat.ONDETAIL, {help: "用户交互", list: [], sub.run = function(event, cmds, cb) { can.runAction(can.request(event), prefix, cmds, cb) } sub._mode = "float", can.getActionSize(function(left, top, width, height) { left = left||0 var top = can._mode == undefined? 120: 0; if (can.user.isMobile) { top = can.user.isLandscape()? 0: 48 } - sub.ConfHeight(height-top-html.ACTION_HEIGHT-(can.user.isMobile&&!can.user.isLandscape()? 2*html.ACTION_HEIGHT: 0)), sub.ConfWidth(width) + sub.ConfHeight(height-top-2*html.ACTION_HEIGHT-(can.user.isMobile&&!can.user.isLandscape()? 2*html.ACTION_HEIGHT: 0)), sub.ConfWidth(width) can.onmotion.move(can, sub._target, {position: html.FIXED, left: left, top: top}) }) }) diff --git a/plugin/story/trend.js b/plugin/story/trend.js index 6e1134db..6d754448 100644 --- a/plugin/story/trend.js +++ b/plugin/story/trend.js @@ -110,12 +110,12 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: [ space: function(event, can) { can.onimport.layout(can) }, speed: function(event, can) { can.onimport.layout(can) }, }) -Volcanos(chat.ONDETAIL, {help: "用户交互", list: [], +Volcanos(chat.ONDETAIL, {help: "用户交互", onmouseenter: function(event, can, line) { can.Status(line) }, }) Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["from", "commit", "total", "max", "date", "text", "add", "del"], height: function(can) { var height = can.Action(html.HEIGHT) if (height == ice.AUTO) { height = can.ConfHeight() } - return parseInt(height) + return parseInt(height||can._root._height/2) }, }) diff --git a/plugin/story/video.js b/plugin/story/video.js index 352a2000..e8c41d31 100644 --- a/plugin/story/video.js +++ b/plugin/story/video.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.onimport.select(can, msg) can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg) can.onappend.table(can, msg), can.onappend.board(can, msg) @@ -24,7 +24,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms ])) }, }) -Volcanos(chat.ONACTION, {help: "控件交互", list: [], +Volcanos(chat.ONACTION, {help: "控件交互", next: function(event, can) { var msg = can._msg msg.Table(function(line, index) { if (line.link == location.href) { @@ -44,4 +44,3 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [], }) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: []}) diff --git a/plugin/table.js b/plugin/table.js index 7adb173a..340b3ccf 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.user.isMobile && !can.user.isLandscape() && can.onmotion.hidden(can, can._action) var cbs = can.onimport[can._args[ctx.STYLE]]; if (can.base.isFunc(cbs)) { can.page.ClassList.add(can, target, can._args[ctx.STYLE]) diff --git a/proto.js b/proto.js index 6ba2ff62..6159da87 100644 --- a/proto.js +++ b/proto.js @@ -233,7 +233,7 @@ var html = { OPACITY: "opacity", STROKE_WIDTH: "stroke-width", STROKE: "stroke", FILL: "fill", FONT_SIZE: "font-size", FONT_FAMILY: "font-family", MONOSPACE: "monospace", SCROLL: "scroll", HEIGHT: "height", WIDTH: "width", LEFT: "left", TOP: "top", RIGHT: "right", BOTTOM: "bottom", - SPEED: "speed", + SPEED: "speed", PADDING: "padding", MIN_HEIGHT: "min-height", MAX_HEIGHT: "max-height", MAX_WIDTH: "max-width", MIN_WIDTH: "min-width", MARGIN_TOP: "margin-top", MARGIN_X: "margin-x", MARGIN_Y: "margin-y", PLUGIN_MARGIN: 10, ACTION_HEIGHT: 29, ACTION_MARGIN: 200, TEXT_ANCHOR: "text-anchor", diff --git a/publish/client/nodejs/proto.js b/publish/client/nodejs/proto.js index c0591c9a..67988f2c 100644 --- a/publish/client/nodejs/proto.js +++ b/publish/client/nodejs/proto.js @@ -1,4 +1,4 @@ -Volcanos("onappend", {help: "渲染引擎", list: [], +Volcanos("onappend", {help: "渲染引擎", table: function(can, msg) { var max = {}; msg.Table(function(value, index, array) { for (var k in value) { if (value[k].length > (max[k]||0)) {