diff --git a/frame.js b/frame.js index f0b80c33..83d0eaad 100644 --- a/frame.js +++ b/frame.js @@ -13,6 +13,8 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta, can.core.ItemCB(panel.onaction, function(key, cb) { can.onengine.listen(can, key, function(msg) { can.core.CallFunc(cb, {can: panel, msg: msg}) }) }), can.core.CallFunc([panel.onaction, "_init"], {can: panel, cb: next, target: panel._target}) + panel.Conf(can.core.Value(can._root, can.core.Keys(chat.RIVER, item.name))) + panel.Conf("style") && can.page.Modify(can, panel._target, {style: panel.Conf("style")}) }, target) }, function() { can.misc.Log(can.user.title(), ice.RUN, can) can.require([can.volcano], null, function(can, name, sub) { can[name] = sub }) @@ -331,7 +333,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, var name = (item.nick||item.name||"").split(ice.SP)[0] var title = !item.help || can.user.language(can) == "en"? name: name+"("+item.help.split(ice.SP)[0]+")" return can.page.Append(can, target||can._output, [{view: [can.base.join([type||"", item.name||"", item.pos||""]), html.FIELDSET], list: [ - {text: [title, html.LEGEND]}, {view: [html.OPTION, html.FORM]}, {view: [html.ACTION]}, {view: [html.OUTPUT]}, {view: [html.STATUS]}, + name && {text: [title, html.LEGEND]}, {view: [html.OPTION, html.FORM]}, {view: [html.ACTION]}, {view: [html.OUTPUT]}, {view: [html.STATUS]}, ]}]) }, input: function(can, item, value, target, style) { @@ -483,6 +485,21 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe // can.core.Delay(list, 1000, function() { can.onlayout._init(can, target) }) // } // + if (can.page.Select(can, target, html.FIELDSET_MAIN+".page").length > 0) { + can.page.Select(can, target, html.FIELDSET_LEFT, function(field, index) { + can.page.Modify(can, field, {style: {height: ""}}) + can.page.Select(can, target, [[html.FIELDSET_LEFT, html.DIV_OUTPUT]], function(output) { + can.page.Modify(can, output, {style: {height: ""}}) + }) + }) + can.page.Select(can, target, html.FIELDSET_MAIN, function(field, index) { + can.page.style(can, field, html.HEIGHT, "") + can.page.Select(can, target, [[html.FIELDSET_MAIN, html.DIV_OUTPUT]], function(output) { + can.page.style(can, output, html.HEIGHT, "") + }) + }) + return + } var width = window.innerWidth, height = window.innerHeight can.page.Select(can, target, can.page.Keys(html.FIELDSET_HEAD, html.FIELDSET_FOOT), function(field) { height -= field.offsetHeight @@ -500,7 +517,7 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe if (can.user.isMobile) { can.page.style(can, field, "padding-top", can.user.isLandscape()? "0px": "") } else { - can.page.style(can, field, html.HEIGHT, height) + can.page.style(can, field, html.HEIGHT, height, html.WIDTH, width-1) can.page.Select(can, target, [[html.FIELDSET_MAIN, html.DIV_OUTPUT]], function(output) { height -= can.page.Select(can, field, html.DIV_ACTION)[0].offsetHeight can.page.style(can, output, html.HEIGHT, height) @@ -662,6 +679,15 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe delay: function(can, cb) { can.core.Timer(50, cb) }, + toimage: function(event, can, name, target) { + can.user.input(event, can, [{name: "name", value: name}], function(ev, button, data) { + can.require(["https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-rc.5/dist/html2canvas.min.js"], function() { + html2canvas(target||can._target).then(function (canvas) { + can.page.Create(can, html.A, {href: canvas.toDataURL("image/png"), download: data.name}).click() + }) + }) + }) + }, hidden: function(can, target, show) { can.page.Modify(can, target||can._target, {style: {display: show? "": html.NONE}}) @@ -772,6 +798,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe }) }, + selectField: function(event, can) { if (event.ctrlKey && event.key >= "0" && event.key <= "9") { if (event.shiftKey) { diff --git a/lib/user.js b/lib/user.js index 856540ba..42ed2a6a 100644 --- a/lib/user.js +++ b/lib/user.js @@ -195,6 +195,8 @@ Volcanos("user", {help: "用户操作", agent: { can.onmotion.focus(can, input), document.execCommand("Copy") can.page.Remove(can, input), can.user.toastSuccess(can) can.onkeymap.prevent(event) + can.misc.Log("copy", text) + return text }, carte: function(event, can, meta, list, cb, parent) { meta = meta||can.ondetail||can.onaction||{}, list = list&&list.length > 0? list: meta.list||[]; if (list.length == 0) { return } @@ -277,6 +279,10 @@ Volcanos("user", {help: "用户操作", agent: { can.base.isFunc(cb) && !cb(event, button, data, list, args) && action.cancel() }, _target: ui._target, }) + if (button === true) { + action.submit(event, can, "submit") + return action + } can.page.Select(can, ui._target, html.INPUT_ARGS, function(item, index) { index == 0 && can.core.Timer(100, function() { can.onmotion.focus(can, item) }) diff --git a/page/index.css b/page/index.css index 965f5688..bd61dd70 100644 --- a/page/index.css +++ b/page/index.css @@ -1,736 +1,261 @@ -* { - tab-size:4; -} -textarea { - tab-size:2; -} -body { - margin:0; padding:0; - background:black; - color:cyan; -} -a { - color:yellow; -} -h1, h2, h3 { - clear:both; -} -tr.show { - background:red; -} -h1:hover, h2:hover, h3:hover { - background:green; cursor:pointer; -} -.hide { - display:none; -} -.hidden { - display:none; -} -div.item { - cursor:pointer; -} +body { background-color:black; color:cyan; margin:0; padding:0; font-size:14px; } +h1, h2, h3 { clear:both; } +a { color:yellow; } + +.hide, .hidden { display:none; } +tr.show { background-color:red; } +div.item { cursor:pointer; } div.code { - background-color:#343a3445; color:white; - font-size:14px; font-family:monospace; - box-shadow: 4px 4px 20px 4px #626bd0; - border:solid 3px green; padding:10px; - text-align:left; white-space:pre; - clear:both; overflow:auto; -} -div.story { - text-align:left; white-space:pre; + background-color:#343a3445; color:white; + border:solid 3px green; padding:10px; + box-shadow:4px 4px 20px 4px #626bd0; + text-align:left; white-space:pre; + clear:both; overflow:auto; } +div.story { text-align:left; white-space:pre; } div.story[data-type=spark] { - background-color:#2169a9a6; color:white; - font-size:14px; font-family:monospace; - box-shadow:4px 4px 10px 1px #626bd0; - margin:10px 0px; padding:4px 10px; - border-left:solid 4px blue; - overflow:auto; cursor:copy; -} -div.story[data-type=spark] span:hover { - box-shadow: 4px 4px 10px 1px #29318e; - background-color:#c10c8a; -} -p.story[data-type=brief] { - font-size:20px; font-family:cursive; font-weight:bolder; + background-color:#2169a9a6; color:white; + box-shadow:4px 4px 10px 1px #626bd0; + margin:10px 0px; padding:4px 10px; + border-left:solid 4px blue; + overflow:auto; cursor:copy; } select { - background-color:black; color:cyan; - font-size:14px; font-family:monospace; - box-shadow: 4px 4px 10px 1px #626bd0; - height:25px; padding:0 10px; - cursor:pointer; -} -option { - font-family:monospace; -} -textarea { - background-color:cyan; - width:400px; height:60px; - white-space:pre; -} -input[type=button] { - background-color:black; color:cyan; - font-family:monospace; - letter-spacing:4px; - padding-left:10px; - cursor:pointer; -} -input[type=button]:hover { - background-color:gray; color:cyan; + background-color:black; color:cyan; + box-shadow:4px 4px 10px 1px #626bd0; + height:25px; padding:0 10px; + cursor:pointer; } +textarea { background-color:cyan; width:400px; height:60px; white-space:pre; } +input[type=button] { background-color:black; color:cyan; cursor:pointer; } input[type=text] { - background-color:cyan; color:black; - box-shadow:4px 4px 10px 1px #626bd0; - height:21px; width:82px; - font-size:16px; - padding:0 4px; -} -input[type=text]:hover { - background-color:white; -} -input[name=date] { - width:150px; -} -input[name=path] { - width:160px; -} -input[name=line] { - width:40px; -} -input[name=text] { - width:160px; -} -input[name=url] { - width:320px; -} -input[name=cmd] { - background-color:black; color:white; - width:240px; -} -input[name=cmd]:hover { - background-color:white; color:black; + background-color:cyan; color:black; + box-shadow:4px 4px 10px 1px #626bd0; + height:21px; width:82px; + padding:0 4px; } +input[name=date] { width:150px; } +input[name=path] { width:160px; } +input[name=line] { width:40px; } +input[name=text] { width:160px; } +input[name=url] { width:320px; } +input[name=cmd] { width:240px; background-color:black; color:white; } -table.layout { - margin:0; border:0; padding:0; - border-spacing:0; -} -table.layout tr { - margin:0; border:0; padding:0; -} -table.layout th { - margin:0; border:0; padding:0; -} -table.layout td { - margin:0; border:0; padding:0; - vertical-align:top; -} -table.layout td.content { - position:relative; +table.layout { margin:0; border:0; padding:0; border-spacing:0; } +table.layout tr { margin:0; border:0; padding:0; } +table.layout th { margin:0; border:0; padding:0; } +table.layout td { margin:0; border:0; padding:0; vertical-align:top; } +table.layout td.content { position:relative; } +table.layout div.toggle { + background-color:#e1aeae45; + height:100px; top:20%; + position:absolute; } table.layout div.toggle>div { - display: table-cell; - vertical-align: middle; - color:white; - height:95px; -} -table.layout div.toggle { - background:#e1aeae45; - height:100px; top:20%; - position:absolute; -} -table.layout div.toggle.display>div { - height:10px; width:100px; - text-align:center; - color:white; -} -table.layout div.toggle.display { - overflow:hidden; - margin-top:-12px; - height:10px; width:100px; - position:sticky; left:20%; - border-top-left-radius:10px; - border-top-right-radius:10px; + display:table-cell; + vertical-align:middle; + color:white; + height:95px; } table.layout div.toggle.project { - left:0px; - min-width:10px; - border-top-right-radius:10px; - border-bottom-right-radius:10px; + left:0px; min-width:10px; + border-top-right-radius:10px; + border-bottom-right-radius:10px; } table.layout div.toggle.profile { - right:0px; - min-width:10px; - border-top-left-radius:10px; - border-bottom-left-radius:10px; + right:0px; min-width:10px; + border-top-left-radius:10px; + border-bottom-left-radius:10px; } +table.layout div.toggle.display { + overflow:hidden; + margin-top:-12px; + height:10px; width:100px; + position:sticky; left:20%; + border-top-left-radius:10px; + border-top-right-radius:10px; +} +table.layout div.toggle.display>div { height:10px; width:100px; text-align:center; color:white; } -table.content { - font-size:14px; font-family:monospace; - border:0; white-space:pre; - overflow: auto; -} -table.content tr { - background-color:#04272f45; -} -table.content tr.select { - background-color:green; -} -table.content tr:hover { - background-color:green; -} -table.content th { - background-color:#0fbd45; - padding:2px 6px; - cursor:pointer; -} -table.content th:hover { - background-color:red; -} -table.content td { - padding:2px 6px; - max-width:800px; - overflow:auto; - /* white-space:break-spaces; */ -} -table.content td.done { - background-color:green; -} -table.content td.select { - background-color:red; -} -table.content td:hover { - background-color:red; -} +table.content { border:0; white-space:pre; overflow:auto; } +table.content tr { background-color:#04272f45; } +table.content th { background-color:#0fbd45; padding:2px 6px; cursor:pointer; } +table.content td { padding:2px 6px; max-width:800px; overflow:auto; } -td>input[type=button][name=create] { - background-color:blue; -} -td>input[type=button][name=remove] { - background-color:red; -} -td>input[type=button][name=start] { - background-color:blue; -} -td>input[type=button][name=stop] { - background-color:red; -} +td>input[type=button][name=create] { background-color:blue; } +td>input[type=button][name=remove] { background-color:red; } +td>input[type=button][name=start] { background-color:blue; } +td>input[type=button][name=stop] { background-color:red; } -legend { - box-shadow:4px 4px 20px 4px #626bd0; - cursor:pointer; -} -fieldset { - margin:0; border:0; padding:0; -} -fieldset>form.option { - float:left; - display:contents; -} -fieldset>form.option>div.item { - float:left; margin-right:3px; - min-height:25px; vertical-align:middle; -} -fieldset>form.option>div.item>label { - display:none; -} -fieldset>form.option>div.item input.args.char { - width:20px; -} -fieldset>form.option>div.item input.args.tiny { - width:40px; -} -fieldset>form.option>div.item input.args.long { - width:240px; -} -fieldset>form.option>div.item input.args.full { - width:480px; -} -fieldset>form.option>div.item input.args[name=ID] { - width:48px; -} -fieldset>form.option>div.item input.args[name=id] { - width:48px; -} -fieldset>form.option>div.item input.args[name=limit] { - width:48px; -} -fieldset>form.option>div.item input.args[name=offset] { - width:48px; -} -fieldset>form.option>div.item input.args[name=offend] { - width:48px; -} -fieldset>form.option>div.item.textarea { - clear:both; margin-top:4px; -} +legend { box-shadow:4px 4px 20px 4px #626bd0; cursor:pointer; } +fieldset { margin:0; border:0; padding:0; } +fieldset>form.option { float:left; display:contents; } +fieldset>form.option>div.item { float:left; margin-right:3px; min-height:25px; vertical-align:middle; } +fieldset>form.option>div.item>label { display:none; } +fieldset>form.option>div.item input.args.char { width:20px; } +fieldset>form.option>div.item input.args.tiny { width:40px; } +fieldset>form.option>div.item input.args.long { width:240px; } +fieldset>form.option>div.item input.args.full { width:480px; } +fieldset>form.option>div.item input.args[name=ID] { width:48px; } +fieldset>form.option>div.item input.args[name=id] { width:48px; } +fieldset>form.option>div.item input.args[name=limit] { width:48px; } +fieldset>form.option>div.item input.args[name=offset] { width:48px; } +fieldset>form.option>div.item input.args[name=offend] { width:48px; } +fieldset>form.option>div.item.textarea { clear:both; margin-top:4px; } -fieldset>div.action { - float:left; display:contents; -} -fieldset>div.action>div.item { - float:left; margin-right:3px; - vertical-align:middle; -} -fieldset>div.action>div.item.space { - width:10px; -} -fieldset div.action>div.item>label { - display:none; -} -fieldset>div.action>div.tabs { - float:left; padding:4px; margin:0; - cursor:pointer; -} -fieldset>div.action>div.tabs:hover { - border-bottom:solid 2px red; - background-color:#2e515f; -} -fieldset>div.action>div.tabs.over { - background-color:blue; - color:blue; -} -fieldset>div.action>div.tabs.select { - border-bottom:solid 2px red; - background-color:#2e515f; -} +fieldset>div.action { float:left; display:contents; } +fieldset>div.action>div.item { float:left; margin-right:3px; vertical-align:middle; } +fieldset>div.action>div.item.space { width:10px; } +fieldset div.action>div.item>label { display:none; } +fieldset>div.action>div.tabs { float:left; margin:0; padding:4px; cursor:pointer; } +fieldset>div.action>div.tabs.over { background-color:blue; color:blue; } +fieldset>div.output { clear:both; overflow:auto; position:relative; } +fieldset>div.output td.project { background-color:#435f8c8c; } +fieldset>div.output td.project div.project { float:left; overflow:auto; min-width:88px; max-width:240px; } +fieldset>div.output td.project div.project div.item { padding:2px 10px; text-align:left; clear:both; cursor:pointer; white-space:pre; } +fieldset>div.output td.project div.project div.list { margin-left:10px; } +fieldset>div.output td.profile { background-color:#71909c91; } +fieldset>div.output td.profile div.profile { overflow:auto; } +fieldset>div.status { clear:both; } +fieldset>div.status>div.item { float:left; padding:4px; height:18px; } -fieldset>div.status { - clear:both; -} -fieldset>div.status>div.item { - float:left; padding:4px; - height:18px; -} -fieldset>div.status>div.item:hover { - background:green; -} -fieldset>div.status>div.item>label { - font-size:10px; color:#bdb8b8e0; -} +fieldset.panel>legend { display:none; } +fieldset.plugin { margin:10px; padding:10px; background-color:#061c3c9e; box-shadow:2px 2px 10px 4px #626bd0; } +fieldset.plugin>div.status { border-top:1px solid darkcyan; } +fieldset.output { margin:0; padding:0; } +fieldset.output>legend { display:none; } +fieldset.output>form.option { display:none; } +fieldset.output>div.action { display:none; } +fieldset.output>div.status { display:none; } +fieldset.story>legend { display:block; padding:2px 20px; letter-spacing:4px; } +fieldset.story>div.status { border-top:1px solid darkcyan; } +fieldset.float { background-color:#023531cf; margin:0px; padding:0px; position:absolute; } +fieldset.float>legend { float:left; } +fieldset.float table { color:white; } -fieldset>div.output { - clear:both; overflow:auto; - position:relative; -} -fieldset>div.output div.project { - min-width:88px; max-width:240px; - float:left; overflow:auto; -} -fieldset>div.output div.project div.item { - padding:2px 10px; text-align:left; - clear:both; cursor:pointer; - white-space:pre; -} -fieldset>div.output div.project div.item.select { - background-color:red; -} -fieldset>div.output div.project div.item:hover { - background-color:red; -} -fieldset>div.output div.project div.list { - margin-left:10px; -} -fieldset>div.output td.project { - background-color:#435f8c8c; -} -fieldset>div.output td.profile { - background-color:#71909c91; -} -fieldset>div.output td.profile div.profile { - overflow:auto; -} +fieldset.input { background-color:#0d4142a6; position:fixed; top:32px; } +fieldset.input legend { display:none; } +fieldset.input div.output { max-height:400px; } +fieldset.input table { color:white; } +fieldset.input td { word-break:keep-all; } +fieldset.input.date table { text-align:center; width:280px; } -fieldset.panel>legend { - display:none; -} -fieldset.plugin { - box-shadow:2px 2px 10px 4px #626bd0; - background-color:#061c3c9e; - margin:10px; padding:10px; -} -fieldset.plugin>div.status { - border-top:1px solid darkcyan; -} -fieldset.output { - margin:0; padding:0; -} -fieldset.output>legend { - display:none; -} -fieldset.output>form.option { - display:none; -} -fieldset.output>div.action { - display:none; -} -fieldset.output>div.status { - display:none; -} -fieldset.story>legend { - display:block; - padding:2px 20px; - letter-spacing:4px; -} -fieldset.story>div.status { - border-top:1px solid darkcyan; -} -fieldset.float { - background-color:#023531cf; - margin:0px; padding:0px; - position:absolute; -} -fieldset.float>legend { - float:left; -} -fieldset.float table { - color:white; -} +body>div.toast { background-color:#0e3369b3; color:yellow; padding:5px; overflow:auto; position:fixed; } +body>div.toast div.title { float:left; cursor:copy; word-break:break-all; } +body>div.toast div.duration { float:right; cursor:pointer; } +body>div.toast div.content { text-align:center; white-space:pre; clear:both; } +body>div.toast div.progress { height:10px; border:solid 2px green; margin-left:-2px; clear:both; } +body>div.toast div.progress div.current { height:10px; background-color:red; } +body>div.toast div.action div.item { float:left; } -body>fieldset.input { - background-color:#0d4142a6; - position:fixed; top:32px; -} -body>fieldset.input div.output { - max-height:400px; -} -body>fieldset.input table { - color:white; -} -body>fieldset.input td { - word-break:keep-all; -} -body>fieldset.input.key { -} -body>fieldset.input.date { -} -body>fieldset.input.date legend { - display:none; -} -body>fieldset.input.date table { - text-align:center; - width:280px; -} -body>fieldset.input.date table td:hover { - background-color:red; -} - -body>div.toast { - background:#0e3369b3; color:yellow; - padding:5px; overflow:auto; - position:fixed; -} -body>div.toast a { - color:yellow; -} -body>div.toast div.title { - float:left; word-break:break-all; - color:#cae850; font-size:14px; - cursor:copy; -} -body>div.toast div.duration { - color:gray; font-size:14px; - float:right; - cursor:pointer; -} -body>div.toast div.content { - text-align:center; - white-space:pre; - clear:both; -} -body>div.toast div.action div.item { - float:left; -} -body>div.toast div.progress { - height:10px; border:solid 2px green; - margin-left:-2px; - clear:both; -} -body>div.toast div.progress div.current { - height:10px; background:red; -} - -body>div.carte { - position:fixed; - background:#295b61; - color:white; - padding:4px; - min-width:80px; - z-index:0; -} -body>div.carte div.item { - padding:3px 12px; -} -body>div.carte div.item:hover { - background:red; -} -body>div.input { - position:fixed; - background-color:#0d4142a6; - z-index:0; -} -body>div.input input[type=text] { - width:171px; -} -body>div.input input[name=username] { - width:171px; -} -body>div.input input[name=password] { - width:171px; -} +body>div.carte { background-color:#295b61; color:white; min-width:80px; padding:4px; position:fixed; z-index:0; } +body>div.carte div.item { padding:3px 12px; } +body>div.input { background-color:#0d4142a6; position:fixed; z-index:0; } +body>div.input div.item { float:left; } +body>div.input input[type=text] { width:171px; } +body>div.input input[name=username] { width:171px; } +body>div.input input[name=password] { width:171px; } body>div.input textarea { - box-shadow: 4px 4px 10px 1px #626bd0; - border:2px inset #14a58e; - width:171px; height:60px; - background-color: cyan; - padding:4px; -} -body>div.input div.item { - float:left; -} -body>div.input.login { - padding:10px; -} -body>div.input.login input { - font-size:18px; + box-shadow:4px 4px 10px 1px #626bd0; + border:2px inset #14a58e; + width:171px; height:60px; + background-color:cyan; + padding:4px; } +body>div.input.login { padding:10px; } -body>div.upload { - background:black; color:yellow; - position:fixed; - padding:5px; -} -body>div.upload div.item { - float:left; -} -body>div.upload div.output { - border:solid 1px red; - clear:both; -} -body>div.upload div.progress { - width:0; height:10px; - background:red; -} -body>div.upload div.status div.cost { - float:left; -} -body>div.upload div.status div.show { - float:right; -} -body>div.upload div.status div.size { - text-align:center; -} -body>div.upload input[type=file] { - width: 240px; -} +body>div.upload { background-color:black; color:yellow; position:fixed; padding:5px; } +body>div.upload div.item { float:left; } +body>div.upload div.output { border:solid 1px red; clear:both; } +body>div.upload div.progress { background-color:red; width:0; height:10px; } +body>div.upload div.status div.cost { float:left; } +body>div.upload div.status div.show { float:right; } +body>div.upload div.status div.size { text-align:center; } +body>div.upload input[type=file] { width:240px; } -body.white { - background-color:rgba(5,34,56,0.75); color:white; -} -body.white select { - background-color:#99CC66; color:white; - border-radius:10px 10px 10px 10px; - border:2px solid #99CC66; -} -body.white input[type=button] { - background-color:#FF9900; color:white; - border:2px solid #FF9900; - border-radius:10px; -} -body.white input[type=button]:hover { - background-color:#FFCC33; - border:2px solid #FFCC33; -} -body.white input[type=text] { - background-color:white; color:black; - border:2px solid #14a58e; - border-radius:6px; -} -body.white input[type=text]:hover { - background-color:cyan; -} -body.white input[name=cmd] { - background-color:black; color:white; - width:240px; -} -body.white input[name=cmd]:hover { - background-color:white; color:black; -} +* { tab-size:4; } +textarea { tab-size:2; } +input, select, option, table.content, div.item, div.code, code.story, div.story[data-type=spark] { font-size:1.1em; font-family:monospace; } +legend { font-size:1.4em; } +fieldset>div.status>div.item>label { font-size:0.6em; color:#bdb8b8e0; } +body>div.toast div.title { color:#cae850; } +body>div.toast div.duration { color:gray; } -body.white table { - color:black; -} -body.white table tr { - background-color:#e1f1ff1f; -} -body.white table th { - background-color:#99CCFF; -} -body.white table.content tr:hover { - background-color:green; -} -body.white table input[type=button][value=结束] { - background:red; -} -body.white table input[type=button][value=停止] { - background:red; -} -body.white table input[type=button][value=启动] { - background:#52ce78; -} -body.white td>input[type=button][name=create] { - background-color:blue; -} -body.white td>input[type=button][name=remove] { - background-color:red; -} +div.item.select, div.item:hover { background-color:red; } +div.tabs.select, div.tabs:hover { background-color:#2e515f; border-bottom:solid 2px red; } +div.story[data-type=spark] span:hover { background-color:#c10c8a; box-shadow:4px 4px 10px 1px #29318e; } +h1:hover, h2:hover, h3:hover { background-color:green; cursor:pointer; } +input[type=button]:hover { background-color:gray; color:cyan; } +input[type=text]:hover { background-color:white; } +input[name=cmd]:hover { background-color:white; color:black; } +table.content tr.select, table.content tr:hover { background-color:green; } +table.content th:hover, table.content td.select, table.content td:hover { background-color:red; } +body>fieldset.input.date table td:hover { background-color:red; } -body.white fieldset>div.status>div.item>label { - font-size:10px; color:#cefbfbe0; -} -body.white fieldset.Action { - color:black; -} -body.white fieldset.Action>div.action { - color:white; -} -body.white fieldset.Action>div.action div.item { - height:21px; -} -body.white fieldset.Action fieldset.plugin { - background-color:#ffffff78; -} -body.white fieldset.Action fieldset.plugin legend { - background-color:#339999; color:white; - border-radius:10px 10px 10px 10px; -} -body.white fieldset.Action fieldset.plugin legend:hover { - background-color:#6ee4e4; -} -body.white>div.input textarea { - border-radius:6px; - border:2px solid #14a58e; -} +body.white { background-color:rgba(5,34,56,0.75); color:white; } +body.white select { background-color:#99CC66; color:white; border:2px solid #99CC66; border-radius:10px 10px 10px 10px; } +body.white input[type=button] { background-color:#FF9900; color:white; border:2px solid #FF9900; border-radius:10px; } +body.white input[type=text] { background-color:white; color:black; border:2px solid #14a58e; border-radius:6px; } +body.white input[name=cmd] { background-color:black; color:white; width:240px; } -body.print { - background-color:white; - color:black; -} -body.print a { - color:blue; -} -body.print select { - box-shadow:0px 0px 0px 0px #626bd0; -} -body.print input[type=text] { - box-shadow:0px 0px 0px 0px #626bd0; -} -body.print div.code { - background-color:white; -} -body.print legend { - box-shadow:0px 0px 0px 0px #626bd0; -} -body.print fieldset.Header { - background-color:white; - color:black; -} -body.print fieldset.River { - background-color:white; - color:black; -} -body.print fieldset.River>div.output div.list div.item { - background-color:white; -} -body.print fieldset.River>div.output div.item.select { - background-color:white; - border:solid 2px red; -} -body.print fieldset.Action { - background-color:white; -} -body.print fieldset.Action fieldset.plugin { - padding-left:40px; -} -body.print fieldset.Footer { - background-color:white; - color:black; -} +body.white table { color:black; } +body.white table tr { background-color:#e1f1ff1f; } +body.white table th { background-color:#99CCFF; } +body.white table td>input[type=button][value=结束] { background-color:red; } +body.white table td>input[type=button][value=停止] { background-color:red; } +body.white table td>input[type=button][value=启动] { background-color:#52ce78; } +body.white table td>input[type=button][name=create] { background-color:blue; } +body.white table td>input[type=button][name=remove] { background-color:red; } -body.mobile select { - font-size:18px; - margin-top:5px; -} -body.mobile input { - font-size:18px; -} -body.mobile input[type=text] { - margin-top:5px; - height:26px; -} -body.mobile fieldset.Header.head { - position:fixed; top:0; - width:-webkit-fill-available; - height:2em; font-size:24px; - background-color:#000000b8; -} -body.mobile fieldset.Header.head div.output { - height:2em; -} -body.mobile fieldset.Header>div.output>div { - height:1.5em; -} -body.mobile fieldset.Header>div.output div.menu { - height:1.5em; -} -body.mobile fieldset.Header.head div.state.time { - display:none; -} -body.mobile fieldset.River.left { - position:fixed; top:48px; - background-color:#243950bf; - min-width:240px; font-size:24px; - /* width:-webkit-fill-available; */ -} -body.mobile fieldset.River>div.output div.list div.item { - font-size:24px; -} -body.mobile fieldset.Action.main.cmd { - margin-top:0; margin-bottom:0; -} -body.mobile fieldset.Action.main { - margin-top:48px; margin-bottom:64px; -} -body.mobile fieldset.Footer.foot { - position:fixed; bottom:0; - width:-webkit-fill-available; - height:64px; font-size:24px; - background-color:#000000b8; - display:none; -} -body.mobile.landscape fieldset.Header.head { - position:unset; -} -body.mobile.landscape fieldset.Header.head div.state.time { - display:block; -} -body.mobile.landscape fieldset.Action.main { - margin-top:0; margin-bottom:0; -} -body.mobile.landscape fieldset.Footer.foot { - position:unset; -} -body.mobile>div.carte { - font-size:24px; -} -body.mobile>div.input.login input { - font-size:24px -} -body.en input[type=button] { - letter-spacing:2px; -} +body.white fieldset>div.status>div.item>label { font-size:0.6em; color:#cefbfbe0; } +body.white fieldset.Action { color:black; } +body.white fieldset.Action>div.action { color:white; } +body.white fieldset.Action>div.action div.item { height:21px; } +body.white fieldset.Action fieldset.plugin { background-color:#ffffff78; } +body.white fieldset.Action fieldset.plugin legend { background-color:#339999; color:white; border-radius:10px 10px 10px 10px; } +body.white>div.input textarea { border:2px solid #14a58e; border-radius:6px; } + +body.print { background-color:white; color:black; } +body.print a { color:blue; } +body.print select { box-shadow:0px 0px 0px 0px #626bd0; } +body.print input[type=text] { box-shadow:0px 0px 0px 0px #626bd0; } +body.print div.code { background-color:white; } +body.print legend { box-shadow:0px 0px 0px 0px #626bd0; } +body.print fieldset.Header { background-color:white; color:black; } +body.print fieldset.River { background-color:white; color:black; } +body.print fieldset.River>div.output div.list div.item { background-color:white; } +body.print fieldset.Action { background-color:white; } +body.print fieldset.Footer { background-color:white; color:black; } + +body.white input[type=button]:hover { background-color:#FFCC33; border:2px solid #FFCC33; } +body.white input[type=text]:hover { background-color:cyan; } +body.white input[name=cmd]:hover { background-color:white; color:black; } +body.white table.content tr:hover { background-color:green; } +body.white fieldset.Action fieldset.plugin legend:hover { background-color:#6ee4e4; } +body.print fieldset.River>div.output div.item.select { background-color:white; border:solid 2px red; } + +body.mobile select { font-size:1.6rem; height:1.6em; } +body.mobile legend { font-size:2rem; } +body.mobile input { font-size:1.6rem; } +body.mobile input[type=text] { margin-top:5px; height:1.2em; } +body.mobile fieldset.Header.head { width:-webkit-fill-available; } +body.mobile fieldset.Header.head { background-color:#000000b8; font-size:2rem; height:2em; position:fixed; top:0; } +body.mobile fieldset.Header.head div.output { height:2em; } +body.mobile fieldset.Header.head>div.output>div { height:1.5em; } +body.mobile fieldset.Header.head>div.output div.menu { height:1.5em; } +body.mobile fieldset.Header.head div.state.time { display:none; } +body.mobile fieldset.River.left { position:fixed; top:2em; background-color:#243950bf; min-width:240px; font-size:2rem; } +body.mobile fieldset.River>div.output div.list div.item { font-size:2rem; } +body.mobile fieldset.Action.main { margin-top:4em; } +body.mobile fieldset.Action.main.cmd { margin-top:0; margin-bottom:0; } +body.mobile fieldset.Footer.foot { width:-webkit-fill-available; } +body.mobile fieldset.Footer.foot { background-color:#000000b8; font-size:2rem; height:2em; position:fixed; bottom:0; } +body.mobile fieldset.Footer.foot { display:none; } +body.mobile.landscape fieldset.Header.head { position:unset; } +body.mobile.landscape fieldset.Header.head div.state.time { display:block; } +body.mobile.landscape fieldset.Action.main { margin-top:0; margin-bottom:0; } +body.mobile.landscape fieldset.Footer.foot { position:unset; } +body.mobile>div.carte { font-size:2rem; } +body.mobile>div.input.login input { font-size:1.2rem; } diff --git a/panel/action.css b/panel/action.css index c40a9418..4f0894cb 100644 --- a/panel/action.css +++ b/panel/action.css @@ -1,62 +1,64 @@ fieldset.Action { - background-color:#7299a28c; - min-width:160px; + background-color:#7299a28c; + min-width:160px; } fieldset.Action>div.action { - width:-webkit-fill-available; - background-color:#159cc7b0; - display:none; height:28px; - padding:0; margin:0; - position:absolute; + /* width:-webkit-fill-available; */ + background-color:#159cc7b0; + display:none; height:28px; + padding:0; margin:0; + position:absolute; } fieldset.Action div.output fieldset.plugin:hover { - box-shadow:4px 4px 12px 6px #626bd0; + box-shadow:4px 4px 12px 6px #626bd0; } fieldset.Action div.output fieldset.plugin legend { - font-size:16px; font-family:monospace; - margin-top:4px 5px; padding:2px 20px; - background-color:#0c739cd9; + margin-top:4px 5px; padding:2px 20px; + background-color:#0c739cd9; } fieldset.Action div.output fieldset.plugin legend:hover { - background:red; + background:red; } fieldset.Action.tabs>div.action { - display:block; + display:block; } fieldset.Action.tabs>div.output { - margin-top:28px; + margin-top:28px; +} +fieldset.Action.tabs>div.output>fieldset>legend { + display:none; } fieldset.Action.flow>div.output fieldset.plugin { - float:left; + float:left; } fieldset.Action.grid>div.output fieldset.plugin { - float:left; overflow:auto; + float:left; overflow:auto; } fieldset.Action.grid>div.output fieldset.plugin>div.output { - overflow:auto; + overflow:auto; } fieldset.Action.tabs>div.output fieldset.plugin { - display:none; - float:left; + display:none; + float:left; } fieldset.Action.tabs>div.output fieldset.plugin.select { - display:block; + display:block; } fieldset.Action.free>div.output fieldset.plugin { - position:absolute; + position:absolute; } fieldset.Action.free>div.output fieldset.plugin.select { - display:block; + display:block; } fieldset.panel.cmd>div.output>fieldset.plugin { - margin:0; padding:0; + margin:0; padding:0; } fieldset.panel.cmd>div.output>fieldset.plugin>legend { - float:left; padding:0 10px; margin-right:3px; - height:25px; font-size:18px; - background-color:darkcyan; - cursor:pointer; + float:left; padding:0 10px; margin-right:3px; + height:25px; + background-color:darkcyan; + cursor:pointer; } diff --git a/panel/action.js b/panel/action.js index 458d4043..122abf7e 100644 --- a/panel/action.js +++ b/panel/action.js @@ -10,7 +10,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) can.onimport._plugin(can, river, storm, sub, meta), skip || next() }) }, function() { can.onimport._menu(can, msg), can.onkeymap._init(can) - can.onaction.layout(can, can.misc.SearchOrConf(can, chat.LAYOUT)) + can.onaction.onstorm_select(can, msg, river, storm) }) }, _plugin: function(can, river, storm, sub, meta) { sub._target._meta = meta @@ -18,7 +18,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) return can.run(event, can.misc.concat(can, [river, storm, meta.id||meta.index], cmds), function(msg) { can.base.isFunc(cb) && cb(msg) }) - }, can._plugins = can.misc.concat(can, can._plugins, [sub]) meta.id && (sub._option.dataset = sub._option.dataset||{}, sub._option.dataset.id = meta.id) @@ -27,13 +26,12 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) can.page.Append(can, can._action, [{view: [chat.TABS, html.DIV, meta.name], onclick: function(event) { can.onmotion.select(can, can._output, html.FIELDSET_PLUGIN, sub._target) can.onmotion.select(can, can._action, chat.DIV_TABS, event.target) - }}]) + }, onmouseenter: sub._legend.onmouseenter}]) }, _menu: function(can, msg) { if (can.user.mod.isPod||can.user.isMobile) { return } - can.setHeaderMenu(can.base.Obj(msg.Option(chat.MENUS), [ - [chat.LAYOUT, "auto", "flow", "grid", "tabs", "free"], - [ice.HELP, "tutor", "manual", "service", "devops", "refer"], - ]), function(event, button, list) { can.core.CallFunc([can.onaction, list[0]], [can, button]) }) + can.setHeaderMenu(can.base.Obj(msg.Option(chat.MENUS), can.Conf(chat.MENUS)||can.onaction._menus), function(event, button, list) { + can.core.CallFunc([can.onaction, list[0]], [can, button]) + }) }, _share: function(can, share) { share && can.run({}, ["_share", share], function(msg) { @@ -88,6 +86,10 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, cb, t can.onengine.signal(can, "onaction_touch", can.request(event)) }, can.base.isFunc(cb) && cb() }, + _menus: [ + [chat.LAYOUT, "auto", "flow", "grid", "tabs", "free", "page", "toimage"], + [ice.HELP, "tutor", "manual", "service", "devops", "refer"], + ], _trans: { "layout": "布局", "auto": "默认布局", @@ -95,6 +97,8 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, cb, t "grid": "网格布局", "tabs": "标签布局", "free": "自由布局", + "page": "网页布局", + "toimage": "生成图片", "help": "帮助", "tutor": "入门简介", @@ -122,7 +126,14 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, cb, t }) }, onstorm_select: function(can, msg, river, storm) { can.onlayout._init(can) - if (can.onmotion.cache(can, function() { return can.core.Keys(can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm)) }, can._action, can._output)) { return } + if (can.onmotion.cache(can, function() { + var key = can.core.Keys(can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm)) + return key + }, can._action, can._output)) { + var conf = can.core.Value(can._root, can.core.Keys(chat.RIVER, river, chat.STORM, storm))||{} + can.onaction.layout(can, conf.layout||can.misc.SearchOrConf(can, chat.LAYOUT)||"auto", true) + return + } can.run({}, [river, storm], function(msg) { if (msg.Length() > 0) { return can.onimport._init(can, msg) } can.onengine.signal(can, "onaction_notool", can.request({}, {river: river, storm: storm})) @@ -134,7 +145,11 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, cb, t onsize: function(can, msg, height, width) { can.Conf({height: height, width: width}) }, help: function(can, button) { can.user.open("/help/"+button+".shy") }, - layout: function(can, button) { + layout: function(can, button, slient) { + if (button == "toimage") { + can.onmotion.toimage(event, can, document.title, can._output) + return + } can.page.ClassList.del(can, can._target, can.Conf(chat.LAYOUT)) can.page.ClassList.add(can, can._target, can.Conf(chat.LAYOUT, button)) @@ -151,7 +166,7 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, cb, t can.getActionSize(function(height, width) { var m = parseInt(data.m)||2, n = parseInt(data.n)||2 can.page.css(can.base.replaceAll(chat.ACTION_LAYOUT_FMT, "_width", (width-(4*m+1)*html.PLUGIN_MARGIN)/m+"px", "_height", (height-(4*n+1)*html.PLUGIN_MARGIN)/n+"px")) }) - }) + }, true) } can.onlayout._init(can) }, diff --git a/panel/footer.css b/panel/footer.css index 949ac7a2..2193949c 100644 --- a/panel/footer.css +++ b/panel/footer.css @@ -1,36 +1,36 @@ fieldset.Footer { - height:32px; padding:0 5px; - clear:both; + height:32px; padding:0 5px; + clear:both; } fieldset.Footer>div.output { - height:32px; overflow:hidden; + height:32px; overflow:hidden; } fieldset.Footer>div.output>div { - height:22px; padding:5px; - cursor:pointer; + height:22px; padding:5px; + cursor:pointer; } fieldset.Footer>div.output>div:hover { - border-top:solid 2px red; - background-color:#2e515f; + border-top:solid 2px red; + background-color:#2e515f; } fieldset.Footer>div.output div.title { - float:left; + float:left; } fieldset.Footer>div.output div.state { - float:right; + float:right; } fieldset.Footer>div.output div.toast { - float:right; background-color:darkcyan; + float:right; background-color:darkcyan; } fieldset.Footer>div.output div.cmd { - float:left; padding:0px; + float:left; padding:0px; } fieldset.Footer>div.output input[name=cmd] { - width:120px; height:25px; - border-radius:0; + width:120px; height:25px; + border-radius:0; } fieldset.Footer>div.output input[name=cmd]:focus { - width:320px; + width:320px; } diff --git a/panel/header.css b/panel/header.css index f03c2a9c..0cff2139 100644 --- a/panel/header.css +++ b/panel/header.css @@ -1,43 +1,46 @@ fieldset.Header { - height:32px; padding:0 5px; - overflow:hidden; - z-index:10; + font-size:1.2em; +} +fieldset.Header { + height:32px; padding:0 5px; + overflow:hidden; + z-index:10; } fieldset.Header>div.output { - height:32px; overflow:hidden; + height:32px; overflow:hidden; } fieldset.Header>div.output>div { - height:22px; padding:5px; - cursor:pointer; + height:22px; padding:5px; + cursor:pointer; } fieldset.Header>div.output>div:hover { - border-bottom:solid 2px red; - background-color:#2e515f; + border-bottom:solid 2px red; + background-color:#2e515f; } fieldset.Header>div.output>div.title { - float:left; + float:left; } fieldset.Header>div.output>div.state { - float:right; + float:right; } fieldset.Header>div.output>div.state.avatar>img { - height:1.4em; + height:1.4em; } fieldset.Header>div.output>div.search { - float:left; margin-left:20px; + float:left; margin-left:20px; } fieldset.Header>div.output>div.search>input { - height:25px; margin-top:-5px; - border-radius:0; + height:25px; margin-top:-5px; + border-radius:0; } fieldset.Header>div.output div.menu { - height:21px; padding:5px; - cursor:pointer; - float:left; + height:21px; padding:5px; + cursor:pointer; + float:left; } fieldset.Header>div.output div.menu:hover { - border-bottom:solid 2px red; - background-color:#2e515f; + border-bottom:solid 2px red; + background-color:#2e515f; } diff --git a/panel/header.js b/panel/header.js index 44851edf..108ec506 100644 --- a/panel/header.js +++ b/panel/header.js @@ -1,4 +1,4 @@ -Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { +Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, cb, target) { can.Conf(aaa.USERNICK, msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNAME)||can.Conf(aaa.USERNICK)) can.onmotion.clear(can) @@ -36,11 +36,10 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, }, _title: function(can, msg, target) { can.user.title(can.misc.Search(can, chat.TITLE)||can.misc.Search(can, ice.POD)) - !can.user.isMobile && can.core.List(msg.result||["shylinux.com/x/contexts"], function(item) { + !can.user.isMobile && can.core.List(can.base.getValid(msg.result, can.Conf(chat.TITLE)||["shylinux.com/x/contexts"]), function(item) { can.page.Append(can, target, [{view: [chat.TITLE, html.DIV, item], title: "返回主页", onclick: function(event) { can.onaction.title(event, can) - }, onmouseenter: function(event) { - var list = msg.Table() + }, onmouseenter: function(event) { var list = msg.Table() can.user.carte(event, can, {}, can.core.List(list, function(item) { return item.name }), function(event, item, meta, index) { event.shiftKey? can.user.open(list[index].path): can.user.jumps(list[index].path) }) @@ -76,8 +75,8 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, msg.Option(aaa.AVATAR) && can.page.Modify(can, "div.state.avatar>img", {src: "/share/local/avatar"}) }, _menus: function(can, msg, target) { - var menus = can.base.Obj(msg.Option(chat.MENUS)||can.Conf(chat.MENUS), [chat.HEADER, ["setting", chat.BLACK, chat.WHITE, chat.PRINT]]) - can.onimport.menu(can, can.user.mod.isPod||can.user.isMobile||can.user.isExtension? [chat.HEADER, chat.RIVER]: menus, function(event, button) { + can.setHeaderMenu(can.user.mod.isPod||can.user.isMobile||can.user.isExtension? [chat.RIVER]: + can.base.Obj(msg.Option(chat.MENUS)||can.Conf(chat.MENUS), can.onaction._menus), function(event, button) { can.core.CallFunc(can.onaction[button]||function(event, can) { can.run(event, [button], function(msg) { can.user.toast(can, "执行成功", can.user.trans(can, button)) }) }, {event: event, can: can, button: button}) @@ -126,6 +125,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, cb, target) { can.base.isFunc(cb) && cb() }, + _menus: [["setting", chat.BLACK, chat.WHITE, chat.PRINT, "webpack", "devpack", "toimage"]], _trans: { "river": "菜单", "search": "搜索", @@ -136,6 +136,7 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, cb, t "black": "黑色主题", "white": "白色主题", "print": "打印主题", + "toimage": "生成图片", "shareuser": "共享用户", "setnick": "设置昵称", @@ -146,7 +147,7 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, cb, t onmain: function(can, msg) { function init() { can.run({}, [], function(msg) { can.base.Copy(can.onaction._trans, can.base.Obj(msg.Option(chat.TRANS), {})) - can.onimport._init(can, msg, [], function(msg) { can.onengine.signal(can, chat.ONLOGIN, msg) }, can._output) + can.onimport._init(can, msg, function(msg) { can.onengine.signal(can, chat.ONLOGIN, msg) }, can._output) can.search({}, ["River.onmotion.toggle"]) }) }; can.search({}, ["River.onmotion.hidden"]) @@ -197,6 +198,7 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, cb, t }) }) }, + toimage: function(event, can, button) { can.onmotion.toimage(event, can, document.title, document.body) }, carte: function(event, can, list, cb, trans) { can.user.carte(event, can, can.onaction, list, cb) }, share: function(event, can, args) { diff --git a/panel/river.css b/panel/river.css index 6c438335..4f04036d 100644 --- a/panel/river.css +++ b/panel/river.css @@ -1,31 +1,29 @@ fieldset.River { - float:left; overflow:auto; + float:left; overflow:auto; } fieldset.River>div.output div.item { - border-left:solid 3px #00ffae; - padding:3px 16px; + border-left:solid 3px #00ffae; + padding:3px 16px; } fieldset.River>div.output div.item.select { - background-color:#2e515f; + background-color:#2e515f; } fieldset.River>div.output div.item:hover { - background-color:#2e515f; + background-color:#2e515f; } fieldset.River>div.output div.list { - margin-left:8px; padding-left:5px; + margin-left:8px; padding-left:5px; } fieldset.River>div.output div.list div.item { - border-left:solid 3px #ccdc4c; - background-color:#073540b5; - font-family:monospace; - font-size:14px; + border-left:solid 3px #ccdc4c; + background-color:#073540b5; } fieldset.River>div.output div.list div.item.select { - background-color:#2e515f; + background-color:#2e515f; } fieldset.River>div.output div.list div.item:hover { - background-color:#2e515f; + background-color:#2e515f; } body.mobile fieldset.River { - z-index:10; + z-index:10; } diff --git a/panel/river.js b/panel/river.js index e1af0d98..5e24e210 100644 --- a/panel/river.js +++ b/panel/river.js @@ -21,11 +21,13 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, can._main_storm = can.misc.Search(can, chat.STORM)||msg.Option(ice.MSG_STORM)||Volcanos.meta.args.storm||can._main_storm }, _menu: function(can, msg) { if (can.user.mod.isPod) { return } - can.setHeaderMenu(can.base.Obj(msg.Option(chat.MENUS), can.ondetail.menus), function(event, button) { + can.setHeaderMenu(can.base.Obj(msg.Option(chat.MENUS), can.Conf(chat.MENUS)||can.ondetail._menus), function(event, button) { can.core.CallFunc([can.ondetail, button], [event, can, button, can.Conf(chat.RIVER), can.Conf(chat.STORM)]) }) }, _carte: function(can, list, river, storm) { if (can.user.isMobile) { return } + if (can.core.Value(can._root, can.core.Keys(chat.RIVER, river))) { return } + can.onaction.carte(event, can, list, function(event, button, module) { module[button](event, can, button, river, storm) }) @@ -57,6 +59,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, can, msg, panel, cmds, cb) { var list = can._root.river cmds.length == 0 && can.core.Item(list, function(key, value) { + if (can.core.Item(value.storm).length == 0) { return } msg.Push({hash: key, name: can.user.language(can) == "en"? key: value.name}) // 群组列表 }); if (cmds.length != 1 && cmds[1] != chat.STORM) { return false } @@ -149,7 +152,7 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, cb, t Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加应用", "添加设备", "添加用户", "重命名群组", "删除群组"], sublist: ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"], - menus: [chat.RIVER, + _menus: [ ["create", "创建群组", "添加应用", "添加工具", "添加设备", "创建空间"], ["share", "共享群组", "共享应用", "共享工具", "共享主机", "访问空间"], ], diff --git a/panel/search.css b/panel/search.css index 78842fff..d9c56875 100644 --- a/panel/search.css +++ b/panel/search.css @@ -1,31 +1,31 @@ fieldset.Search { - background:#041a25bd; padding:10px; - left:0px; top:26px; - position:fixed; - display:none; + background:#041a25bd; padding:10px; + left:0px; top:26px; + position:fixed; + display:none; } body.white fieldset.Search table { - color:white; + color:white; } fieldset.Search input.word { - width:-webkit-fill-available; + width:-webkit-fill-available; } fieldset.Search div.output { - overflow:auto; + overflow:auto; } fieldset.Search div.output div.content { - overflow:auto; + overflow:auto; } fieldset.Search div.output div.content a { - color:yellow; + color:yellow; } fieldset.Search div.output div.content table { - min-width:400px; + min-width:400px; } fieldset.Search div.output div.display { - max-height:200px; - overflow:auto; + max-height:200px; + overflow:auto; } fieldset.Search div.output div.profile { - overflow:auto; + overflow:auto; } diff --git a/panel/search.js b/panel/search.js index 66d57e74..1de1689c 100644 --- a/panel/search.js +++ b/panel/search.js @@ -101,7 +101,7 @@ Volcanos("onaction", {help: "交互操作", list: [cli.CLEAR, cli.CLOSE, cli.DON sub.Conf(html.HEIGHT, height+28), sub.Conf(html.WIDTH, width-60) }) - sub.run = function(event, cmds, cb) { var msg = can.request(event, line) + sub.run = function(event, cmds, cb) { var msg = can.request(event) can.run(event, can.misc.concat(can, [ctx.ACTION, ice.RUN, meta.index], cmds), cb, true) } }, can.ui.profile) diff --git a/plugin/input/date.css b/plugin/input/date.css index a80080ae..6de461cd 100644 --- a/plugin/input/date.css +++ b/plugin/input/date.css @@ -1,13 +1,13 @@ fieldset.input.date div.action div.space { - clear:both; width:0; + clear:both; width:0; } fieldset.input.date div.output td.prev { - color:gray; + color:gray; } fieldset.input.date div.output td.next { - color:gray; + color:gray; } fieldset.input.date div.output td { - padding:2px 12px; + padding:2px 12px; } diff --git a/plugin/local/chat/div.css b/plugin/local/chat/div.css index 09f0de0f..7ae84e23 100644 --- a/plugin/local/chat/div.css +++ b/plugin/local/chat/div.css @@ -1,25 +1,25 @@ fieldset.div div.output td { - vertical-align:top; + vertical-align:top; } fieldset.div div.output fieldset.span>fieldset { - float:left; overflow:auto; + float:left; overflow:auto; } fieldset.panel.cmd.main fieldset.div { - padding:0; - margin:0; + padding:0; + margin:0; } fieldset.panel.cmd.main fieldset.div>legend { - display: none; + display:none; } fieldset.panel.cmd.main fieldset.div>form.option { - display: none; + display:none; } fieldset.panel.cmd.main fieldset.div>div.action { - display: none; + display:none; } fieldset.panel.cmd.main fieldset.div div.project { - display: none; + display:none; } fieldset.panel.cmd.main fieldset.div div.profile { - display: none; + display:none; } diff --git a/plugin/local/code/inner.css b/plugin/local/code/inner.css index 50fe21b2..06d725d6 100644 --- a/plugin/local/code/inner.css +++ b/plugin/local/code/inner.css @@ -1,188 +1,190 @@ fieldset.inner>div.action { - float:none; display:block; - height:26px; overflow:auto; + float:none; display:block; + height:26px; overflow:auto; } fieldset.inner>div.action div.tabs { - border:solid 2px red; padding:2px; + border:solid 2px red; padding:2px; } fieldset.inner>div.action div.tabs.over { - background-color:blue; + background-color:blue; } fieldset.inner>div.action div.tabs.select { - background-color:green; + background-color:green; } fieldset.inner>div.output { - color:white; + color:white; } fieldset.inner>div.output>table.layout div.toggle.project { - min-width:15px; font-size:24px; + min-width:15px; font-size:24px; } fieldset.inner>div.output>table.layout div.toggle.profile { - min-width:15px; font-size:24px; + min-width:15px; font-size:24px; } fieldset.inner>div.output>table.layout div.toggle.display { - height:15px; font-size:24px; - margin-top:-17px; + height:15px; font-size:24px; + margin-top:-17px; } fieldset.inner>div.output div.project { - font-size:14px; font-family:monospace; - max-width:180px; overflow:auto; + max-width:180px; overflow:auto; } fieldset.inner>div.output div.content { - position:relative; - padding-right:25px; - font-size:16px; font-family:monospace; - overflow:auto; - color:white; + position:relative; + padding-right:25px; + font-size:1.2em; font-family:monospace; + overflow:auto; + color:white; } fieldset.inner>div.output div.content table.layout { - width:-webkit-fill-available; + width:-webkit-fill-available; } fieldset.inner>div.output div.content tr.select { - background-color:#0000ff6b; + background-color:#0000ff6b; } fieldset.inner>div.output div.content tr.select td.line { - background-color:blue; - border:solid 1px red; - border-right:solid 2px red; + background-color:blue; + border:solid 1px red; + border-right:solid 2px red; } fieldset.inner>div.output div.content td.line:hover { - background-color:green; + background-color:green; } fieldset.inner>div.output div.content td.line { - text-align:right; padding:0 6px; - border-right:solid 2px red; + text-align:right; padding:0 6px; + border-right:solid 2px red; } fieldset.inner>div.output div.content td.text { - text-align:left; height:20px; - padding-left:10px; - white-space:pre; - tab-size:4; + text-align:left; height:20px; + padding-left:10px; + white-space:pre; + tab-size:4; } fieldset.inner>div.output div.content td.text span.comment { - color:cyan; background-color:blue; + color:cyan; background-color:blue; } fieldset.inner>div.output div.content td.text span.keyword { - color:yellow; font-weight:bold; + color:yellow; font-weight:bold; } fieldset.inner>div.output div.content td.text span.function { - color:cyan; font-weight:bold; + color:cyan; font-weight:bold; } fieldset.inner>div.output div.content td.text span.datatype { - color:lightgreen; font-weight:bold; + color:lightgreen; font-weight:bold; } fieldset.inner>div.output div.content td.text span.constant { - color:magenta; + color:magenta; } fieldset.inner>div.output div.content td.text span.string { - color:magenta; + color:magenta; } fieldset.inner>div.output div.display>div.action>div.item { - float:left; + float:left; } fieldset.inner>div.output div.profile>div.action>div.item { - float:left; + float:left; } fieldset.inner>div.output div.profile>div.output { - clear:both; overflow:auto; + clear:both; overflow:auto; } fieldset.inner>div.output div.profile>div.output>fieldset { - margin:0; padding:0; + margin:0; padding:0; } fieldset.inner>div.output div.profile>div.output>fieldset>legend { - float:left; + float:left; } fieldset.inner>div.output div.display>div.output { - clear:both; overflow:auto; + clear:both; overflow:auto; } fieldset.inner>div.output div.display { - border:solid 1px greenyellow; + border:solid 1px greenyellow; } fieldset.inner div.output fieldset.toolkit { - position:absolute; - bottom:0px; right:0px; + position:absolute; + bottom:0px; right:0px; } fieldset.inner>div.output fieldset.toolkit>div.output>fieldset { - display:none; margin:0;padding:0; + display:none; margin:0;padding:0; } fieldset.inner>div.output fieldset.toolkit>div.output>fieldset.select { - display:block; + display:block; } fieldset.inner>div.output fieldset.toolkit>div.output>fieldset>legend { - float:left; + float:left; +} +fieldset.inner>div.output fieldset.toolkit>div.status { + height:32px; overflow:auto; } fieldset.inner>div.output fieldset.toolkit>div.status>legend { - float:right; padding:4px; cursor:pointer; - padding:4px 4px; border-left:solid 2px red; - background:#0d969f8a; + float:right; padding:4px; cursor:pointer; + padding:4px 4px; border-left:solid 2px red; + background:#0d969f8a; } fieldset.inner>div.output fieldset.toolkit>div.status>legend.select { - background:green; + background:green; } fieldset.inner>div.output fieldset.toolkit>div.status>legend:hover { - background:green; + background:green; } fieldset.inner>div.status { - height:26px; overflow:auto; + height:26px; overflow:auto; } fieldset.inner>div.status legend { - float:right; padding:4px; cursor:pointer; - padding:4px 4px; border-left:solid 2px red; - background:#0d969f8a; + float:right; padding:4px; cursor:pointer; + padding:4px 4px; border-left:solid 2px red; + background:#0d969f8a; } fieldset.inner>div.status legend.select { - background:green; + background:green; } fieldset.inner>div.status legend:hover { - background:green; + background:green; } fieldset.inner.full>legend { - display:none; + display:none; } fieldset.inner.full>div.action { - display:none; + display:none; } fieldset.inner.full>form.option { - display:none; + display:none; } fieldset.inner.full>div.status { - display:none; + display:none; } fieldset.inner.full>div.status { - display:none; + display:none; } fieldset.inner.full>div.output div.profile>div.action { - display:none; + display:none; } fieldset.inner.full>div.output div.display>div.action { - display:none; + display:none; } body.white fieldset.inner>div.output div.project { - color:#a2dad2; + color:#a2dad2; } body.white fieldset.inner>div.output div.content { - background-color:#013b675c; + background-color:#013b675c; } body.white fieldset.inner>div.output div.content tr { - background-color:#e1f1ff00; + background-color:#e1f1ff00; } body.white fieldset.inner>div.output div.content tr.select { - background-color:#0000ff6b; + background-color:#0000ff6b; } body.white fieldset.inner>div.output div.content td.text span.string { - color:#a703a7; + color:#a703a7; } .unselectable { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select:none; - user-select: none; + -webkit-touch-callout:none; + -webkit-user-select:none; + -khtml-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + -o-user-select:none; + user-select:none; } diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index a2ddb6a8..bf3aa54a 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -174,7 +174,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target } 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-25) + can.page.styleWidth(can, can.ui.content, width-can.ui.project.offsetWidth-can.ui.profile.offsetWidth-26) if (can.page.ClassList.has(can, can._fields, "full")) { can.page.styleHeight(can, can.ui.profile_output, can.ui.content.offsetHeight) @@ -183,10 +183,11 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target } can.page.Select(can, can.ui.profile_output, html.IFRAME, function(item) { can.page.style(can, item, - html.HEIGHT, can.ui.profile_output.offsetHeight-5, + html.HEIGHT, can.ui.profile_output.offsetHeight-4, html.WIDTH, can.ui.profile_output.offsetWidth-5, - "margin-left", "-12px", "margin-top", "-12px", + "margin-left", "-10px", "margin-top", "-10px", "position", "absolute", + "border", "0", ) }) }, diff --git a/plugin/local/code/vimer.css b/plugin/local/code/vimer.css index 26d28331..36630f71 100644 --- a/plugin/local/code/vimer.css +++ b/plugin/local/code/vimer.css @@ -1,15 +1,15 @@ fieldset.vimer>div.output input.current { - background-color:#00000000; color:#00000000; - font-family:monospace; font-size:16px; - position:absolute; left:0; - margin:0; margin-top:-2px; - padding:0; padding-left:9px; - width:-webkit-fill-available; - tab-size:4; + background-color:#00000000; color:#00000000; + font-size:1.2em; font-family:monospace; + position:absolute; left:0; + margin:0; margin-top:-2px; + padding:0; padding-left:9px; + width:-webkit-fill-available; + tab-size:4; } fieldset.vimer>div.output input.current.insert { - caret-color:yellow; + caret-color:yellow; } fieldset.vimer>div.output input.current.normal { - caret-color:blue; + caret-color:blue; } diff --git a/plugin/local/team/plan.css b/plugin/local/team/plan.css index dbab07fa..8052c00a 100644 --- a/plugin/local/team/plan.css +++ b/plugin/local/team/plan.css @@ -1,30 +1,30 @@ fieldset.plan>div.output div.prepare { - background-color:blue; - color:white; + background-color:blue; + color:white; } fieldset.plan>div.output div.process { - background-color:green; - color:white; + background-color:green; + color:white; } fieldset.plan>div.output div.cancel { - background-color:yellow; - color:white; + background-color:yellow; + color:white; } fieldset.plan>div.output div.finish { - background-color:red; - color:white; + background-color:red; + color:white; } fieldset.plan>div.output td { - vertical-align:top; + vertical-align:top; } fieldset.plan>div.output td.over { - border:solid 2px red; + border:solid 2px red; } fieldset.plan>div.output td div.date { - color:gray; + color:gray; } fieldset.plan>div.output div.project { - max-height:400px; - overflow:auto; + max-height:400px; + overflow:auto; } diff --git a/plugin/local/wiki/draw.css b/plugin/local/wiki/draw.css index 54c892ab..32c94f6d 100644 --- a/plugin/local/wiki/draw.css +++ b/plugin/local/wiki/draw.css @@ -1,14 +1,14 @@ fieldset.draw div.output { - background-color:#1b5b738c; - font-size:20px; + background-color:#1b5b738c; + font-size:20px; } fieldset.draw div.output div.content svg { - background-color:#1b5b738c; + background-color:#1b5b738c; } fieldset.draw div.output div.profile div.action div.item { - float:left; + float:left; } fieldset.draw div.output div.display { - max-height:400px; - overflow:auto; + max-height:400px; + overflow:auto; } diff --git a/plugin/local/wiki/draw.js b/plugin/local/wiki/draw.js index e1ed80f6..5e31277c 100644 --- a/plugin/local/wiki/draw.js +++ b/plugin/local/wiki/draw.js @@ -388,7 +388,7 @@ Volcanos("onaction", {help: "组件菜单", list: [ can.ondetail.label(event, can) }, }) -Volcanos("ondetail", {help: "组件详情", list: [cli.START, ice.RUN, ice.COPY, html.LABEL, mdb.MODIFY, mdb.DELETE], +Volcanos("ondetail", {help: "组件详情", list: [cli.START, ice.RUN, ice.COPY, html.LABEL, mdb.MODIFY, "toimage", mdb.DELETE], start: function(event, can) { var target = event.target var list = [target], dict = {} for (var i = 0; i < list.length; i++) { var ship = list[i].Value("ship") @@ -440,6 +440,7 @@ Volcanos("ondetail", {help: "组件详情", list: [cli.START, ice.RUN, ice.COPY, }) }, modify: function(event, can) { can.onimport._profile(can, event.target) }, + toimage: function(event, can) { can.onmotion.toimage(event, can, can.Option(nfs.PATH).split("/").pop().split(".")[0], can.svg) }, "delete": function(event, can) { var target = event.target if (target == can.svg) { return } can.core.List(target.Value(ice.SHIP), function(value) { diff --git a/plugin/local/wiki/feel.css b/plugin/local/wiki/feel.css index b388dcfd..a0e0f3e3 100644 --- a/plugin/local/wiki/feel.css +++ b/plugin/local/wiki/feel.css @@ -1,15 +1,15 @@ fieldset.feel div.output img { - display:block; float:left; + display:block; float:left; } fieldset.feel div.output video { - display:block; float:left; + display:block; float:left; } fieldset.feel.float>legend { - display:none; + display:none; } fieldset.feel.float { - margin:0 10px; padding:0 10px; - background-color:#4eaad0c2; - position:absolute; - top:26px; + margin:0 10px; padding:0 10px; + background-color:#4eaad0c2; + position:absolute; + top:26px; } diff --git a/plugin/local/wiki/word.css b/plugin/local/wiki/word.css index 6ac36afb..c7961b12 100644 --- a/plugin/local/wiki/word.css +++ b/plugin/local/wiki/word.css @@ -1,154 +1,156 @@ fieldset.word>div.output fieldset.span>fieldset { - float:left; overflow:auto; + float:left; overflow:auto; } fieldset.word>div.navmenu { - clear:both; - float:left; - min-width:120px; - background-color:inherit; - margin-right:10px; - overflow:auto; + clear:both; + float:left; + min-width:120px; + background-color:inherit; + margin-right:10px; + overflow:auto; } fieldset.word>div.navmenu>div.item { - font-weight:bold; - font-size:24px; - padding:4px 10px; + font-weight:bold; + font-size:2em; + padding:4px 10px; } fieldset.word>div.navmenu>div.list>div.item { - font-weight:bold; - font-size:18px; + font-weight:bold; + font-size:1.6em; } fieldset.word>div.navmenu div.item { - font-family:cursive; - padding:4px 10px; + font-family:cursive; + padding:4px 10px; } fieldset.word>div.navmenu div.item.select { - background-color:red; + background-color:red; } fieldset.word>div.navmenu div.item:hover { - cursor:pointer; - background-color:red; + cursor:pointer; + background-color:red; } fieldset.word>div.navmenu div.list { - margin-left:20px; + margin-left:20px; } fieldset.word a { - word-break:break-word; + word-break:break-word; } fieldset.word ul.story[data-type=premenu] { - cursor:pointer; + cursor:pointer; } fieldset.word ul.story[data-type=premenu] li:hover { - background:cyan; - color:blue; + background:cyan; + color:blue; } fieldset.word ul.story[data-type=endmenu] { - clear:both; + clear:both; } fieldset.word ul.story li.H2 { - font-weight:bold; - font-size:20px; + font-weight:bold; + font-size:2em; } fieldset.word br.story { - clear:both; + clear:both; } fieldset.word p.story { - white-space:pre; + white-space:pre; } fieldset.word p.story[data-name=inner] { - padding:4px 10px; margin:10px 0px; - background-color:#4b6c8a7a; - border-left:solid 4px blue; + padding:4px 10px; margin:10px 0px; + background-color:#4b6c8a7a; + border-left:solid 4px blue; } fieldset.word p.story[data-name=inner]:hover { - background-color:#c10c8a; - cursor:copy; + background-color:#c10c8a; + cursor:copy; } fieldset.word svg.story { - display:block; float:left; + display:block; float:left; } fieldset.word code.story { - display:block; border:solid 3px green; - color:white; background-color:#272822; - font-size:14px; font-family:monospace; - max-height:640px; overflow:auto; - padding:10px; white-space:pre; - clear:both; + display:block; border:solid 3px green; + color:white; background-color:#272822; + max-height:640px; overflow:auto; + padding:10px; white-space:pre; + clear:both; } fieldset.word video.story { - max-height:320px; + max-height:320px; } fieldset.word fieldset.story { - margin:10px; border:0; - clear:both; float:left; - box-shadow:4px 4px 10px 1px #626bd0; + margin:10px; border:0; + clear:both; float:left; + box-shadow:4px 4px 10px 1px #626bd0; } fieldset.word fieldset.story:hover { - box-shadow:12px 12px 12px 6px #5764efd1; + box-shadow:12px 12px 12px 6px #5764efd1; } fieldset.word.float { - width:-webkit-fill-available; - position:fixed; left:0; top:0; - background-color:aliceblue; - color:black; + width:-webkit-fill-available; + position:fixed; left:0; top:0; + background-color:aliceblue; + color:black; } fieldset.word.float>div.output { - background-color:#f0f8ff80; - overflow:auto; - padding:20px; + background-color:#f0f8ff80; + overflow:auto; + padding:20px; } fieldset.word.float>div.output>div.project { - background:cornsilk; - left:0; top:25px; - position:fixed; - padding:10px; - z-index:100; + background:cornsilk; + left:0; top:25px; + position:fixed; + padding:10px; + z-index:100; } fieldset.word.float div.content div.page { - background-color:#194c79d4; - margin-top:30px; - display:none; + background-color:#194c79d4; + margin-top:30px; + display:none; } fieldset.word.float div.content div.page.show { - display:block; + display:block; } fieldset.word.float div.content.grid div.page { - float:left; display:block; - width:200px; height:200px; - overflow:auto; margin:10px; - background-color:#a4cbecb5; + float:left; display:block; + width:200px; height:200px; + overflow:auto; margin:10px; + background-color:#a4cbecb5; } fieldset.word.float h1 { - text-align:center; + text-align:center; } fieldset.word.float h2 { - text-align:center; + text-align:center; } fieldset.word.float h3 { - text-align:center; + text-align:center; } fieldset.word.float div.status { - clear:none; + clear:none; } fieldset.word.float div.status label { - color:black; + color:black; } fieldset.word.float div.status span { - color:black; + color:black; } +fieldset.panel.cmd fieldset.word>legend { + display:none; +} fieldset.panel.cmd fieldset.word>form.option { - display:none; + display:none; } fieldset.panel.cmd fieldset.word>div.action { - display:none; + display:none; } fieldset.panel.cmd fieldset.word>div.status { - display:none; + display:none; } diff --git a/plugin/state.js b/plugin/state.js index e27737f9..663bc7be 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -72,7 +72,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf, }, }) Volcanos("onaction", {help: "交互操作", list: [ - "共享工具", "生成链接", "生成脚本", "清空参数", "刷新数据", [ + "共享工具", "打开链接", "生成链接", "生成脚本", "生成图片", "清空参数", "刷新数据", [ "其它 ->", "复制数据", "下载数据", "清空数据", "删除工具", "摄像头", "生成图片", ], ], _init: function(can, msg, list, cb, target) {}, @@ -84,12 +84,20 @@ Volcanos("onaction", {help: "交互操作", list: [ mdb.NAME, meta.index, mdb.TEXT, JSON.stringify(can.Input([], true)), ]) }, - "生成链接": function(event, can) { var meta = can.Conf() + "打开链接": function(event, can) { var meta = can.Conf() var pre = "/chat/cmd/"; if (can.user.mod.isPod) { pre = "/chat/pod/"+can.misc.Search(can, ice.POD)+"/cmd/" } var args = can.Option(); args._path = pre+(meta.index||can.core.Keys(meta.ctx, meta.cmd)) args._path.indexOf("/cmd/web.wiki.word") > -1 && (args = {_path: pre+args.path}) - can.onmotion.share(event, can, [], [mdb.LINK, can.misc.MergeURL(can, args)]) + can.user.open(can.misc.MergeURL(can, args)) + }, + "生成链接": function(event, can) { var meta = can.Conf() + var pre = "/chat/cmd/"; if (can.user.mod.isPod) { pre = "/chat/pod/"+can.misc.Search(can, ice.POD)+"/cmd/" } + var args = can.Option(); args._path = pre+(meta.index||can.core.Keys(meta.ctx, meta.cmd)) + args._path.indexOf("/cmd/web.wiki.word") > -1 && (args = {_path: pre+args.path}) + var url = can.misc.MergeURL(can, args) + can.user.copy(event, can, url) + can.onmotion.share(event, can, [], [mdb.LINK, url]) }, "生成脚本": function(event, can, button) { var conf = can.Conf() var args = can.Input("", true).join(ice.SP); var list = [ @@ -104,6 +112,7 @@ Volcanos("onaction", {help: "交互操作", list: [ can.onmotion.story.auto(can, ui._target) can.user.copy(event, can, list[0]) }, + "生成图片": function(event, can) { can.onmotion.toimage(event, can, can._name) }, "保存参数": function(event, can) { can.search(event, ["River.ondetail.保存参数"]) }, "清空参数": function(event, can) { can.page.SelectArgs(can, can._option, "", function(item) { return item.value = "" }) @@ -128,9 +137,9 @@ Volcanos("onaction", {help: "交互操作", list: [ }, "清空数据": function(event, can) { can.onmotion.clear(can, can._output) }, "删除工具": function(event, can) { can.page.Remove(can, can._target) }, - "生成图片": function(event, can) { - can.user.toPNG(can, "hi.png", can._target.outerHTML, can.Conf(html.HEIGHT), can.Conf(html.WIDTH)) - }, + // "生成图片": function(event, can) { + // can.user.toPNG(can, "hi.png", can._target.outerHTML, can.Conf(html.HEIGHT), can.Conf(html.WIDTH)) + // }, "摄像头": function(event, can) { var constraints = {audio: false, video: {width: 200, height: 200}} diff --git a/plugin/story/json.css b/plugin/story/json.css index f213fbbb..f4309b96 100644 --- a/plugin/story/json.css +++ b/plugin/story/json.css @@ -1,25 +1,23 @@ fieldset.plugin div.output div.item div.item { - border:solid 1px #0000000d; - border-left:dashed 1px lightblue; - margin-left:5px; padding-left:15px; - font-size:14px; font-family:monospace; - cursor:pointer; + border:solid 1px #0000000d; + border-left:dashed 1px lightblue; + margin-left:5px; padding-left:15px; + cursor:pointer; } fieldset.plugin div.output div.item div.item:hover { - border:solid 1px red; + border:solid 1px red; } fieldset.plugin div.output div.item span.nonce { - font-size:12px; font-family:auto; - color:lightblue; - cursor:pointer; + color:lightblue; + cursor:pointer; } fieldset.plugin div.output div.item span.key { - color:yellow; + color:yellow; } fieldset.plugin div.output div.item span.string { - color:magenta; + color:magenta; } fieldset.plugin div.output div.item span.const { - color:cyan; + color:cyan; } diff --git a/plugin/story/spide.css b/plugin/story/spide.css index d2431fdf..d5a38631 100644 --- a/plugin/story/spide.css +++ b/plugin/story/spide.css @@ -1,9 +1,9 @@ fieldset.draw.spide div.output { - font-family:monospace; + font-family:monospace; } fieldset.draw.spide div.output div.toggle { - display:none; + display:none; } fieldset.inner.float div.output { - background-color:#332f1ecf; + background-color:#332f1ecf; } diff --git a/plugin/story/spide.js b/plugin/story/spide.js index 8a6c70ff..8b3dae2f 100644 --- a/plugin/story/spide.js +++ b/plugin/story/spide.js @@ -143,7 +143,7 @@ Volcanos("ondetail", {help: "用户交互", list: [], can.request(event, node.meta) } var msg = can.request(event, can.Option()) - can.run(event, can.base.Obj(can._args.prefix, []).concat([can.Option(mdb.NAME)||"", tree.file||"", tree.name]), function(msg) { + can.run(event, can.base.Obj(can._args.prefix, []).concat([can.Option("repos")||"", tree.file||"", tree.name]), function(msg) { if (msg.Length() == 0) { return can.ondetail.plugin(can, tree, {}, "web.code.inner", [can.dir_root, tree.file, tree.line], [ctx.ACTION, "inner"]) } diff --git a/plugin/story/trend.css b/plugin/story/trend.css index 04b83500..038f887a 100644 --- a/plugin/story/trend.css +++ b/plugin/story/trend.css @@ -1,4 +1,4 @@ fieldset.draw.trend div.output div.toggle { - display:none; + display:none; } diff --git a/proto.js b/proto.js index 473fd457..0d22dce2 100644 --- a/proto.js +++ b/proto.js @@ -340,6 +340,11 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args: ConfWidth: function(value) { return can.Conf(html.WIDTH, value) }, Conf: function(key, value) { var res = can._conf for (var i = 0; i < arguments.length; i += 2) { + if (typeof key == lang.OBJECT) { + res = can.core.Value(can._conf, arguments[i]) + i-- + return + } res = can.core.Value(can._conf, arguments[i], arguments[i+1]) } return res diff --git a/publish/chrome/contexts.css b/publish/chrome/contexts.css index 087a5345..19e3d84d 100644 --- a/publish/chrome/contexts.css +++ b/publish/chrome/contexts.css @@ -1,211 +1,211 @@ fieldset.contexts { - color:white; - position:fixed; - background:radial-gradient(black, #00000073); - top:100px; - left:100px; - z-index:10; + color:white; + position:fixed; + background:radial-gradient(black, #00000073); + top:100px; + left:100px; + z-index:10; } fieldset.contexts legend { - text-align:left; - cursor:pointer; + text-align:left; + cursor:pointer; - background:radial-gradient(black, #00000073); + background:radial-gradient(black, #00000073); } fieldset.contexts form.option div.item { - float:left; margin-right:3px; - min-height:25px; vertical-align:middle; + float:left; margin-right:3px; + min-height:25px; vertical-align:middle; } fieldset.contexts div.output { - clear:both; - overflow:auto; + clear:both; + overflow:auto; } fieldset.contexts div.status div.item { - float:left; padding:4px; - height:18px; + float:left; padding:4px; + height:18px; } fieldset.contexts div.status div.item>label { - font-size:10px; - /* color:#504242e0; */ + font-size:10px; + /* color:#504242e0; */ } fieldset.contexts select { - height:25px; font-size:14px; - box-shadow: 4px 4px 10px 1px #626bd0; - background-color:black; color:cyan; - padding:0 10px; - cursor:pointer; + height:25px; font-size:14px; + box-shadow:4px 4px 10px 1px #626bd0; + background-color:black; color:cyan; + padding:0 10px; + cursor:pointer; } fieldset.contexts option { - font-family:monospace; + font-family:monospace; } fieldset.contexts textarea { - width:400px; height:60px; - background-color:cyan; + width:400px; height:60px; + background-color:cyan; } fieldset.contexts input[type=button] { - background-color:black; color:cyan; - letter-spacing:4px; - padding-left:10px; - cursor:pointer; - font-family:monospace; + background-color:black; color:cyan; + letter-spacing:4px; + padding-left:10px; + cursor:pointer; + font-family:monospace; } fieldset.contexts input[type=button]:hover { - background-color:gray; color:cyan; + background-color:gray; color:cyan; } fieldset.contexts input[type=text] { - width:82px; height:21px; font-size:16px; - box-shadow:4px 4px 10px 1px #626bd0; - background-color:cyan; color:black; - padding:0 4px; + width:82px; height:21px; font-size:16px; + box-shadow:4px 4px 10px 1px #626bd0; + background-color:cyan; color:black; + padding:0 4px; } fieldset.contexts input[type=text]:hover { - background-color:white; + background-color:white; } fieldset.contexts table.content a { - color:white; + color:white; } fieldset.contexts table.content { - color:white; + color:white; } fieldset.contexts div.code { - background-color:#343a3445; color:white; - font-size:14px; font-family:monospace; - box-shadow: 4px 4px 20px 4px #626bd0; - padding:10px; border:solid 3px green; - text-align:left; white-space:pre; - overflow:auto; - clear:both; + background-color:#343a3445; color:white; + font-size:14px; font-family:monospace; + box-shadow:4px 4px 20px 4px #626bd0; + padding:10px; border:solid 3px green; + text-align:left; white-space:pre; + overflow:auto; + clear:both; } div.input.contexts input { - color:black; + color:black; } table.content { - border:0; white-space:pre; - font-size:14px; font-family:monospace; - text-align:left; - overflow: auto; + border:0; white-space:pre; + font-size:14px; font-family:monospace; + text-align:left; + overflow:auto; } table.content tr { - background-color:#04272f45; + background-color:#04272f45; } table.content tr.select { - background-color:green; + background-color:green; } table.content tr:hover { - background-color:green; + background-color:green; } table.content th { - background-color:#0fbd45; - padding:2px 6px; - cursor:pointer; + background-color:#0fbd45; + padding:2px 6px; + cursor:pointer; } table.content th:hover { - background-color:red; + background-color:red; } table.content td { - padding:2px 6px; - overflow:auto; + padding:2px 6px; + overflow:auto; } table.content td.done { - background-color:green; + background-color:green; } table.content td.select { - background-color:red; + background-color:red; } table.content td:hover { - background-color:red; + background-color:red; } body>div.toast { - background:#0e3369b3; color:yellow; - position:fixed; - padding:5px; overflow:auto; - z-index:10; + background:#0e3369b3; color:yellow; + position:fixed; + padding:5px; overflow:auto; + z-index:10; } body>div.toast a { - color:yellow; + color:yellow; } body>div.toast div.title { - float:left; word-break:break-all; - color:#cae850; font-size:14px; - cursor:copy; + float:left; word-break:break-all; + color:#cae850; font-size:14px; + cursor:copy; } body>div.toast div.duration { - color:gray; font-size:14px; - float:right; - cursor:pointer; + color:gray; font-size:14px; + float:right; + cursor:pointer; } body>div.toast div.content { - text-align:center; - white-space:pre; - clear:both; + text-align:center; + white-space:pre; + clear:both; } body>div.toast div.action div.item { - float:left; + float:left; } body>div.toast div.progress { - height:10px; border:solid 2px green; - margin-left:-2px; - clear:both; + height:10px; border:solid 2px green; + margin-left:-2px; + clear:both; } body>div.toast div.progress div.current { - height:10px; background:red; + height:10px; background:red; } body>div.carte { - position:fixed; - background:#295b61; - color:white; - padding:4px; - min-width:80px; - z-index:10; + position:fixed; + background:#295b61; + color:white; + padding:4px; + min-width:80px; + z-index:10; } body>div.carte div.item { - padding:3px 12px; + padding:3px 12px; } body>div.carte div.item:hover { - background:red; + background:red; } body>div.input { - position:fixed; - background-color:#0d4142a6; - z-index:10; + position:fixed; + background-color:#0d4142a6; + z-index:10; } body>div.input input[type=text] { - width:171px; + width:171px; } body>div.input input[name=username] { - width:171px; + width:171px; } body>div.input input[name=password] { - width:171px; + width:171px; } body>div.input textarea { - box-shadow: 4px 4px 10px 1px #626bd0; - border:2px inset #14a58e; - width:171px; height:60px; - background-color: cyan; - padding:4px; + box-shadow:4px 4px 10px 1px #626bd0; + border:2px inset #14a58e; + width:171px; height:60px; + background-color:cyan; + padding:4px; } body>div.input div.item { - float:left; + float:left; } body>div.input.login { - padding:10px; + padding:10px; } body>div.input.login input { - font-size:18px; + font-size:18px; } div.input input[type=button] { - background-color:black; color:cyan; - letter-spacing:4px; - padding-left:10px; - cursor:pointer; - font-family:monospace; + background-color:black; color:cyan; + letter-spacing:4px; + padding-left:10px; + cursor:pointer; + font-family:monospace; } div.input input[type=button]:hover { - background-color:gray; color:cyan; + background-color:gray; color:cyan; }