1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-07-25 17:46:46 +08:00
parent f3a6de8624
commit 66ef36e047
17 changed files with 233 additions and 176 deletions

View File

@ -368,9 +368,12 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
input.onkeyup = item.onkeyup||function(event) { if (item.name == html.FILTER) { can.user.toast(can, "filter out "+can.page.Select(can, can._output, html.TR, function(tr, index) { input.onkeyup = item.onkeyup||function(event) { if (item.name == html.FILTER) { can.user.toast(can, "filter out "+can.page.Select(can, can._output, html.TR, function(tr, index) {
if (!can.page.ClassList.set(can, tr, html.HIDE, index > 0 && tr.innerText.indexOf(event.target.value) == -1)) { return tr } if (!can.page.ClassList.set(can, tr, html.HIDE, index > 0 && tr.innerText.indexOf(event.target.value) == -1)) { return tr }
}).length+" lines") } } }).length+" lines") } }
icon.push({icon: mdb.DELETE, onclick: function(event) { _input.value = "", item.name == html.FILTER && can.page.Select(can, can._output, html.TR, function(tr) { can.page.ClassList.del(can, tr, html.HIDE) }) }}) icon.push({icon: mdb.DELETE, onclick: function(event) {
_input.value = "", input.onkeyup({target: event.target.previousSibling})
// , item.name == html.FILTER && can.page.Select(can, can._output, html.TR, function(tr) { can.page.ClassList.del(can, tr, html.HIDE) })
}})
} if (item.range) { input._init = function(target) { can.onappend.figure(can, item, target, function(sub, value, old) { target.value = value, can.core.CallFunc([can.onaction, item.name], [event, can, item.name]) }) } } } if (item.range) { input._init = function(target) { can.onappend.figure(can, item, target, function(sub, value, old) { target.value = value, can.core.CallFunc([can.onaction, item.name], [event, can, item.name]) }) } }
var _input = can.page.Append(can, target, [{view: [[html.ITEM].concat(style, [item.type, item.name])], list: [{icon: item.icon}, input].concat(icon), _init: function(target, _input) { var _input = can.page.Append(can, target, [{view: [[html.ITEM].concat(style, [item.type, item.name])], list: [item.icon && {icon: item.icon}, input].concat(icon), _init: function(target, _input) {
if (item.type == html.SELECT) { _input.select.value = value||_item.value||_item.values[0], can.onappend.select(can, _input.select, _item) } if (item.type == html.SELECT) { _input.select.value = value||_item.value||_item.values[0], can.onappend.select(can, _input.select, _item) }
item.style && can.onappend.style(can, item.style, target) item.style && can.onappend.style(can, item.style, target)
}}])[item.name]; return _input }}])[item.name]; return _input
@ -463,7 +466,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
can.page.style(can, target, html.HEIGHT, h, html.WIDTH, w), width -= w can.page.style(can, target, html.HEIGHT, h, html.WIDTH, w), width -= w
} }
}), can.core.List(list, function(item) { if (can.base.isArray(item)) { layout(type == FLOW? FLEX: FLOW, item, height, width) } }) } }), can.core.List(list, function(item) { if (can.base.isArray(item)) { layout(type == FLOW? FLEX: FLOW, item, height, width) } }) }
ui.filter = can.onappend.input(can, {type: html.TEXT, name: web.FILTER, placeholder: "search in n items", onkeyup: function(event) { ui.filter = can.onappend.input(can, {type: html.TEXT, name: web.FILTER, placeholder: "search in n items", onkeydown: function() {}, onkeyup: function(event) {
can.page.Select(can, ui.project, html.DIV_ITEM, function(target) { can.page.Select(can, ui.project, html.DIV_ITEM, function(target) {
can.onmotion.toggle(can, target, target.innerText.indexOf(event.target.value) > -1 || target == ui.filter.parentNode) can.onmotion.toggle(can, target, target.innerText.indexOf(event.target.value) > -1 || target == ui.filter.parentNode)
}) })
@ -843,8 +846,11 @@ Volcanos(chat.ONKEYMAP, {_init: function(can, target) { target = target||documen
}, },
selectOutput: function(event, can) { if (!event.ctrlKey || event.key < "0" || event.key > "9") { return } selectOutput: function(event, can) { if (!event.ctrlKey || event.key < "0" || event.key > "9") { return }
event.key == "0"? can.onimport._back(can): can.page.Select(can, can._output, html.TR, function(tr, index) { if (index == event.key) { event.key == "0"? can.onimport._back(can): can.page.Select(can, can._output, html.TR, function(tr, index) { if (index == event.key) {
var head = can.page.Select(can, can._output, html.TH, function(th, order) { return th.innerText }) var head = can.page.Select(can, can._output, html.TH, function(th, order) { return th.innerText }), data = {}
can.page.Select(can, tr, html.TD, function(td, index) { can.Option(head[index], td.innerText) }), can.Update(event) can.page.Select(can, tr, html.TD, function(td, index) { data[head[index]] = td.innerText
can.Option(head[index], td.innerText)
})
can.onexport.record(can, "", "", data) || can.Update(event)
} }) } })
}, },
}) })

View File

@ -6,11 +6,13 @@ body {
--disable-fg-color:gray; --disable-fg-color:gray;
--code-bg-color:black; --code-fg-color:silver; --code-border-color:blue; --code-bg-color:black; --code-fg-color:silver; --code-border-color:blue;
--code-comment:darkgray; --code-keyword:darkblue; --code-package:blue; --code-comment:green; --code-keyword:darkblue; --code-package:blue;
--code-datatype:cornflowerblue; --code-function:darkcyan; --code-datatype:cornflowerblue; --code-function:darkcyan;
--code-constant:gray; --code-string:brown; --code-object:purple; --code-constant:gray; --code-string:brown; --code-object:purple;
--svg-stroke-width:2; --svg-stroke-width:2;
--box-border:var(--plugin-border-color) solid 1px;
--box-shadow:var(--body-fg-color) 3px 3px 10px;
} }
/* element */ /* element */
* { tab-size:4; box-sizing:border-box; padding:0; border:0; margin:0; } * { tab-size:4; box-sizing:border-box; padding:0; border:0; margin:0; }
@ -28,28 +30,34 @@ input[name=cmd] { background-color:var(--code-bg-color); color:var(--code-fg-col
div.item.text.cmd { color:var(--code-fg-color); } div.item.text.cmd { color:var(--code-fg-color); }
table.content.full { width:100%; } table.content.full { width:100%; }
table.content thead { position:sticky; top:2px; } table.content thead { position:sticky; top:2px; }
table.content th { padding:2px 5px; } table.content th { padding:5px; box-shadow: var(--box-shadow); }
table.content td { padding:2px 5px; } table.content td { padding:5px; }
table.content.action th:last-child { position:sticky; right:2px; } table.content.action th:last-child { position:sticky; right:2px; box-shadow: var(--box-shadow); }
table.content.action td:last-child { position:sticky; right:2px; } table.content.action td:last-child { position:sticky; right:2px; box-shadow: var(--box-shadow); }
table.content col.time { width:180px; } table.content col.time { width:180px; }
// table.content col.option { cursor:pointer; } // table.content col.option { cursor:pointer; }
table.content col.action { width:180px; } table.content col.action { width:180px; }
h1 { text-align:center; margin:20px 0; } h2 { margin:20px 0; } h3 { margin:20px 0; } h1 { text-align:center; margin:20px 0; } h2 { margin:20px 0; } h3 { margin:20px 0; }
hr, td.hr { border-bottom:var(--plugin-border-color) dashed 1px; margin:5px; } hr, td.hr { border-bottom:var(--plugin-border-color) dashed 1px; margin:5px; }
ul { padding-left:20px; margin:20px 0; } ol, ul { margin-left:40px; }
p { margin:20px 0; }
a { color:var(--body-fg-color); }
kbd { padding:0 5px; } kbd { padding:0 5px; }
img { margin-bottom:-8px; } img { margin-bottom:-8px; }
/* fieldset */ /* fieldset */
fieldset>legend { margin-right:10px; } fieldset>legend { margin-right:10px; box-shadow:var(--box-shadow); }
fieldset>form.option>div.item:not(.icon) { box-shadow:var(--box-shadow); }
fieldset>form.option>div.item.button { border-radius:5px; }
fieldset>form.option>div.cmd { width:100%; } fieldset>form.option>div.cmd { width:100%; }
fieldset>form.option>div.textarea { width:100%; } fieldset>form.option>div.textarea { width:100%; }
fieldset>form.option>div.item:not(.icon) { margin-right:10px; } fieldset>form.option>div.item:not(.icon) { margin-right:10px; }
fieldset>form.option>div.item.select>input { min-width:80px; } fieldset>form.option>div.item.select>input { min-width:80px; }
fieldset>form.option>div.item.select { border-radius:5px; } fieldset>form.option>div.item.select { border-radius:5px; }
fieldset>div.action>div.item.select { border-radius:5px; } fieldset>div.action>div.item.select { border-radius:5px; }
fieldset>div.action>div.item { margin-right:10px; } fieldset>div.action>div.item.button { border-radius:5px; }
fieldset>div.action>div.item { margin-right:10px; box-shadow:var(--box-shadow); }
fieldset>div.output { width:100%; } fieldset>div.output { width:100%; }
fieldset>div.output table.content input { margin-right:10px; box-shadow:var(--box-shadow); }
fieldset>div.status { width:100%; } fieldset>div.status { width:100%; }
fieldset.cmd>div.status { height:31px; } fieldset.cmd>div.status { height:31px; }
fieldset.input>legend { display:none; } fieldset.input>legend { display:none; }
@ -71,7 +79,7 @@ fieldset.input.date>div.output td span.lunar.term { color:green; }
fieldset.input.date>div.output td span.lunar.fest { color:red; } fieldset.input.date>div.output td span.lunar.fest { color:red; }
fieldset.input.date>div.status { text-align:center; } fieldset.input.date>div.status { text-align:center; }
/* float */ /* float */
body div.float { padding:5px; } body div.float { padding:5px; box-shadow:var(--box-shadow); }
body>div.toast div.title { color:var(--notice-fg-color); float:left; } body>div.toast div.title { color:var(--notice-fg-color); float:left; }
body>div.toast div.duration { color:gray; float:right; } body>div.toast div.duration { color:gray; float:right; }
body>div.toast div.content { color:var(--notice-fg-color); text-align:center; } body>div.toast div.content { color:var(--notice-fg-color); text-align:center; }
@ -174,6 +182,7 @@ svg g[fill] rect { fill:unset; }
div.project div.list { margin-left:10px; clear:both; } div.project div.list { margin-left:10px; clear:both; }
div.project div.item { padding:2px 10px; } div.project div.item { padding:2px 10px; }
div.project div.item.filter { padding:0; } div.project div.item.filter { padding:0; }
div.project div.item.filter input { width:100%; }
div.project div.item>div.name { padding-left:15px; } div.project div.item>div.name { padding-left:15px; }
div.project div.expand { float:left; transition:all .3s; } div.project div.expand { float:left; transition:all .3s; }
div.project div.expand.open { rotate:90deg; translate:1px 2px; transition:all .3s; } div.project div.expand.open { rotate:90deg; translate:1px 2px; transition:all .3s; }
@ -181,17 +190,17 @@ div.project div.zone>div.item { text-align:center; padding:3px; }
div.project div.zone>div.item>div.icon { margin-left:3px; float:right; } div.project div.zone>div.item>div.icon { margin-left:3px; float:right; }
div.project div.zone>div.list>div.zone>div.item { text-align:left; padding-left:20px; } div.project div.zone>div.list>div.zone>div.item { text-align:left; padding-left:20px; }
div.project div.zone>div.list>div.zone>div.item:hover { margin-left:10px; transition:all 0.3s; } div.project div.zone>div.list>div.zone>div.item:hover { margin-left:10px; transition:all 0.3s; }
fieldset>div.output div.project { border-right:var(--plugin-border-color) solid 1px; width:230px; } fieldset>div.output div.project { border-right:var(--box-border); width:230px; }
fieldset>div.output div.profile { border-left:var(--plugin-border-color) solid 1px; max-width:320px; } fieldset>div.output div.profile { border-left:var(--box-border); max-width:320px; }
fieldset>div.output div.display { border-top:var(--plugin-border-color) solid 1px; } fieldset>div.output div.display { border-top:var(--box-border); }
/* table card */ /* table card */
div.output.card>div.item.stop { color:var(--disable-fg-color); } div.output.card>div.item.stop { color:var(--disable-fg-color); }
div.output.card>div.item { padding:10px; border:#e7e7e7 solid 1px; margin:10px; width:320px; float:left; } div.output.card>div.item { padding:10px; border:var(--box-border); margin:10px; width:320px; float:left; box-shadow:var(--box-shadow); }
div.output.card>div.item>div.title { font-size:1.2rem; font-weight:bold; padding:10px; border-bottom:solid 1px #e7e7e7; } div.output.card>div.item>div.title { font-size:1.2rem; font-weight:bold; padding:10px; border-bottom:var(--box-border); }
div.output.card>div.item>div.content { padding:10px; height:70px; } div.output.card>div.item>div.content { padding:10px; height:70px; }
div.output.card>div.item>div.action { text-align:right; width:100%; display:flex; } div.output.card>div.item>div.action { text-align:right; width:100%; display:flex; }
div.output.card>div.item:not(:hover)>div.action { visibility:hidden; } div.output.card>div.item:not(:hover)>div.action { visibility:hidden; }
div.output.card>div.item>div.action>input { margin-right:5px; } div.output.card>div.item>div.action>input { margin-right:5px; box-shadow:var(--box-shadow); }
/* display */ /* display */
fieldset.panel>legend { display:none; } fieldset.panel>legend { display:none; }
fieldset.panel>div.status { display:none; } fieldset.panel>div.status { display:none; }
@ -206,14 +215,14 @@ legend, form.option, form.option>div.item, div.action, div.action>div.item, div.
fieldset.story, div.output, fieldset>div.status, div.project div.item, div.content:not(.item), div.code, div.story[data-type=spark] { clear:both; } fieldset.story, div.output, fieldset>div.status, div.project div.item, div.content:not(.item), div.code, div.story[data-type=spark] { clear:both; }
div.output { position:relative; } div.layout.flex>* { float:left; clear:none; } div.output { position:relative; } div.layout.flex>* { float:left; clear:none; }
div.output.flex { display:flex; } div.output.flex { display:flex; }
fieldset.auto, fieldset.full, fieldset.float, div.float { position:fixed; z-index:100; } fieldset.auto, fieldset.full, fieldset.float, div.float { position:fixed; z-index:100; box-shadow:var(--box-shadow); }
fieldset.plug { position:absolute; bottom:0; right:0; } fieldset.plug { position:absolute; bottom:0; right:0; }
fieldset.full { position:fixed; left:0; top:0; } fieldset.full { position:fixed; left:0; top:0; }
fieldset>div.output>div.code { position:sticky; left:0; } fieldset>div.output>div.code { position:sticky; left:0; }
legend, select, input[type=button], th, table.content td, h1, h2, h3, div.item, div.tabs { cursor:pointer; } legend, select, input[type=button], th, table.content td, h1, h2, h3, div.item, div.tabs { cursor:pointer; }
div.story[data-type=spark] { cursor:copy; } div.story[data-type=spark] { cursor:copy; }
fieldset>div.status>legend { margin-left:2px; margin-right:0; float:right; clear:none; } fieldset>div.status>legend { margin-right:10px; float:right; clear:none; }
fieldset>div.status>legend:not(:hover):not(.select) { background-color:unset; } fieldset>div.status>legend:not(:hover):not(.select) { background-color:unset; box-shadow: var(--box-shadow); }
/* hover */ /* hover */
input:hover[type=button][name=create] { background-color:var(--create-bg-color); color:var(--create-fg-color); } input:hover[type=button][name=create] { background-color:var(--create-bg-color); color:var(--create-fg-color); }
input:hover[type=button][name=insert] { background-color:var(--create-bg-color); color:var(--create-fg-color); } input:hover[type=button][name=insert] { background-color:var(--create-bg-color); color:var(--create-fg-color); }
@ -258,7 +267,7 @@ fieldset>div.output { background-color:var(--output-bg-color); }
fieldset>div.status { border-top:var(--status-border); } fieldset>div.status { border-top:var(--status-border); }
fieldset:not(.panel):not(.cmd) { background-color:var(--plugin-bg-color); color:var(--plugin-fg-color); } fieldset:not(.panel):not(.cmd) { background-color:var(--plugin-bg-color); color:var(--plugin-fg-color); }
fieldset:not(.panel) { background-color:var(--plugin-bg-color); color:var(--plugin-fg-color); } fieldset:not(.panel) { background-color:var(--plugin-bg-color); color:var(--plugin-fg-color); }
fieldset:not(.panel):not(.full):not(.cmd) { border-radius:var(--plugin-radius); } fieldset:not(.panel):not(.full):not(.cmd) { border-radius:var(--plugin-radius); box-shadow:var(--box-shadow); }
fieldset.panel:not(.main) { background-color:var(--panel-bg-color); color:var(--panel-fg-color); } fieldset.panel:not(.main) { background-color:var(--panel-bg-color); color:var(--panel-fg-color); }
fieldset.panel:not(.main)>div.output { background-color:var(--panel-output-bg-color); color:var(--panel-output-fg-color); } fieldset.panel:not(.main)>div.output { background-color:var(--panel-output-bg-color); color:var(--panel-output-fg-color); }
fieldset.input div.output { background-color:var(--plugin-bg-color); } fieldset.input div.output { background-color:var(--plugin-bg-color); }
@ -309,7 +318,7 @@ body.print fieldset.draw div.output div.content svg { background-color:lightgray
/* misc */ /* misc */
fieldset.Search div.story[data-type=spark] { margin:0; } fieldset.Search div.story[data-type=spark] { margin:0; }
fieldset.Search>div.output>div.profile { border-left:none; } fieldset.Search>div.output>div.profile { border-left:none; }
fieldset.Action>div.output>fieldset.plugin:not(.output):not(.float):not(.full):not(.cmd) { padding:10px; margin:10px; } fieldset.Action>div.output>fieldset.plugin:not(.output):not(.float):not(.full):not(.cmd) { padding:10px; margin:10px; box-shadow:var(--box-shadow); }
fieldset.Action>div.output>fieldset.plugin:not(.float):not(.full):not(.cmd)>legend { float:none; } fieldset.Action>div.output>fieldset.plugin:not(.float):not(.full):not(.cmd)>legend { float:none; }
fieldset.cmd>div.item.time { line-height:22px; padding:5px 10px; float:right; } fieldset.cmd>div.item.time { line-height:22px; padding:5px 10px; float:right; }
fieldset.cmd>div.item.avatar { padding:0; height:32px; float:right; } fieldset.cmd>div.item.avatar { padding:0; height:32px; float:right; }
@ -322,8 +331,8 @@ fieldset.inner.float>div.status { display:none; }
fieldset.qrcode>div.output div.code { padding:0; } fieldset.qrcode>div.output div.code { padding:0; }
fieldset.xterm>div.action>div.tabs:only-child { display:none; } fieldset.xterm>div.action>div.tabs:only-child { display:none; }
fieldset.xterm>div.layout { clear:both; } fieldset.xterm>div.layout { clear:both; }
fieldset.xterm div.layout div.output { border-left:var(--plugin-border-color) solid 1px; border-top:var(--plugin-border-color) solid 1px; } fieldset.xterm div.layout div.output { border-left:var(--box-border); border-top:var(--box-border); }
fieldset.xterm div.layout div.output.select { border:var(--code-border-color) solid 1px; } fieldset.xterm div.layout div.output.select { border:var(--box-border)}
fieldset.plan div.output div.content>table.content { height:100%; width:100%; } fieldset.plan div.output div.content>table.content { height:100%; width:100%; }
fieldset.draw>form.option>div.item.pid>input { width:60px; } fieldset.draw>form.option>div.item.pid>input { width:60px; }
fieldset.draw div.output svg { margin-bottom:-4px; height:100%; width:100%; } fieldset.draw div.output svg { margin-bottom:-4px; height:100%; width:100%; }

View File

@ -22,7 +22,7 @@ Volcanos("page", {
return can.page.Select(can, target, key? "select[name="+key+"],"+"input.select[type=button][name="+key+"],"+"input[name="+key+"],"+"textarea[name="+key+"]": ".args", cb) return can.page.Select(can, target, key? "select[name="+key+"],"+"input.select[type=button][name="+key+"],"+"input[name="+key+"],"+"textarea[name="+key+"]": ".args", cb)
}, },
SelectInput: function(can, target, name, cb) { return can.page.Select(can, target, "input[name="+name+"]", cb)[0] }, SelectInput: function(can, target, name, cb) { return can.page.Select(can, target, "input[name="+name+"]", cb)[0] },
SelectChild: function(can, target, key, cb) { return can.core.List(can.page.Select(can, target, key, function(node) { if (node.parentNode == target) { return node } }), cb) }, SelectChild: function(can, target, key, cb) { return can.core.List(can.page.Select(can, target, key||"*", function(node) { if (node.parentNode == target) { return node } }), cb) },
SelectOne: function(can, target, key, cb) { return can.page.Select(can, target, key, function(target, index) { return index == 0 && can.base.isFunc(cb) && cb(target), target })[0] }, SelectOne: function(can, target, key, cb) { return can.page.Select(can, target, key, function(target, index) { return index == 0 && can.base.isFunc(cb) && cb(target), target })[0] },
Select: function(can, target, key, cb, interval, cbs) { target = target || document.body Select: function(can, target, key, cb, interval, cbs) { target = target || document.body
return can.core.List(key == nfs.PT? [target]: target.querySelectorAll(can.page.Keys(key)), cb, interval, cbs) return can.core.List(key == nfs.PT? [target]: target.querySelectorAll(can.page.Keys(key)), cb, interval, cbs)

View File

@ -1,5 +1,5 @@
fieldset.River { width:230px; float:left; } fieldset.River { width:230px; float:left; }
fieldset.River>div.action { width:100%; display:flex; justify-content:center; } fieldset.River>div.action { width:100%; display:flex; justify-content:center; }
fieldset.River>div.output div.item { padding:10px 20px; border-left:solid 3px #00ffae; } fieldset.River>div.output div.item { padding:10px 20px; border-left:#00ffae solid 3px; }
fieldset.River>div.output div.list div.item { border-left:solid 3px #ccdc4c; } fieldset.River>div.output div.list div.item { border-left:#ccdc4c solid 3px; }
fieldset.River>div.output div.list { margin-left:20px; } fieldset.River>div.output div.list { margin-left:20px; }

View File

@ -39,8 +39,7 @@ Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: func
refresh: function(event, can) { can.misc.Search(can, {river: can.Conf(chat.RIVER), storm: can.Conf(chat.STORM)}) }, refresh: function(event, can) { can.misc.Search(can, {river: can.Conf(chat.RIVER), storm: can.Conf(chat.STORM)}) },
storm: function(event, can, river) { can.onmotion.select(can, can._output, html.DIV_ITEM, can.ui.river_list[river]) storm: function(event, can, river) { can.onmotion.select(can, can._output, html.DIV_ITEM, can.ui.river_list[river])
var list = can.ui.sublist[river]; if (list) { return can.onmotion.toggle(can, list) } var list = can.ui.sublist[river]; if (list) { return can.onmotion.toggle(can, list) }
var next = event.target.nextSibling can.run({}, [river, chat.STORM], function(msg) { var next = can.ui.river_list[river].nextSibling
can.run({}, [river, chat.STORM], function(msg) {
if (msg.Length() == 0) { return can.user.isLocalFile? can.user.toastFailure(can, "miss data"): can.onengine.signal(can, chat.ONACTION_NOSTORM, can.request({}, {river: river})) } if (msg.Length() == 0) { return can.user.isLocalFile? can.user.toastFailure(can, "miss data"): can.onengine.signal(can, chat.ONACTION_NOSTORM, can.request({}, {river: river})) }
var select = 0; list = can.page.Append(can, can._output, [{view: html.LIST, list: msg.Table(function(item, index) { var select = 0; list = can.page.Append(can, can._output, [{view: html.LIST, list: msg.Table(function(item, index) {
return river == can._main_river && item.hash == can._main_storm && (select = index), can.onimport._storm(can, item, river) return river == can._main_river && item.hash == can._main_storm && (select = index), can.onimport._storm(can, item, river)

View File

@ -4,18 +4,18 @@ fieldset.inner:not(.output)>div.output { overflow:hidden; }
fieldset.inner>div.output div.content { position:relative; } fieldset.inner>div.output div.content { position:relative; }
fieldset.inner>div.output div.content td.text { height:20px; } fieldset.inner>div.output div.content td.text { height:20px; }
fieldset.inner>div.output div.content td.text span.comment { color:var(--code-comment); } fieldset.inner>div.output div.content td.text span.comment { color:var(--code-comment); }
fieldset.inner>div.output div.content td.text span.keyword { color:var(--code-keyword); } fieldset.inner>div.output div.content td.text span.keyword { color:var(--code-keyword); box-shadow:var(--box-shadow); }
fieldset.inner>div.output div.content td.text span.package { color:var(--code-package); } fieldset.inner>div.output div.content td.text span.package { color:var(--code-package); }
fieldset.inner>div.output div.content td.text span.datatype { color:var(--code-datatype); } fieldset.inner>div.output div.content td.text span.datatype { color:var(--code-datatype); }
fieldset.inner>div.output div.content td.text span.function { color:var(--code-function); } fieldset.inner>div.output div.content td.text span.function { color:var(--code-function); }
fieldset.inner>div.output div.content td.text span.constant { color:var(--code-constant); } fieldset.inner>div.output div.content td.text span.constant { color:var(--code-constant); }
fieldset.inner>div.output div.content td.text span.string { color:var(--code-string); } fieldset.inner>div.output div.content td.text span.string { color:var(--code-string); box-shadow:var(--box-shadow); }
fieldset.inner>div.output div.content td.text span.object { color:var(--code-object); } fieldset.inner>div.output div.content td.text span.object { color:var(--code-object); }
fieldset.inner>div.output>div.project { width:230px; flex:0 0 230px; } fieldset.inner>div.output>div.project { width:230px; flex:0 0 230px; box-shadow:var(--box-shadow); }
fieldset.inner>div.output>div.project * { font-size:14px; font-family:monospace; outline:none; } fieldset.inner>div.output>div.project * { font-size:14px; font-family:monospace; outline:none; }
fieldset.inner>div.output>div.project div.action { width:100%; } fieldset.inner>div.output>div.project div.action { width:100%; }
fieldset.inner>div.output>div.project input[type=text] { box-shadow:none; } fieldset.inner>div.output>div.project input[type=text] { box-shadow:none; }
fieldset.inner>div.output>div.project div.zone>div.item span.icon { font-size:20px; line-height:16px; width:20px; float:right; display:none; } fieldset.inner>div.output>div.project div.zone>div.item span.icon { font-size:20px; line-height:16px; padding:0 5px; float:right; display:none; }
fieldset.inner>div.output>div.project div.zone:hover>div.item span.icon { display:block; } fieldset.inner>div.output>div.project div.zone:hover>div.item span.icon { display:block; }
fieldset.inner>div.output>div.project>div.zone>div.item span.icon { font-size:22px; line-height:32px; } fieldset.inner>div.output>div.project>div.zone>div.item span.icon { font-size:22px; line-height:32px; }
fieldset.inner>div.output>div.project>div.zone div.action>div.item { padding-right:0; width:100%; } fieldset.inner>div.output>div.project>div.zone div.action>div.item { padding-right:0; width:100%; }
@ -26,16 +26,20 @@ fieldset.inner>div.output>div.layout>div.tabs { font-size:14px; display:none; }
fieldset.inner>div.output>div.layout>div.path { font-size:14px; display:none; } fieldset.inner>div.output>div.layout>div.path { font-size:14px; display:none; }
fieldset.inner>div.output>div.layout>div.layout div.content * { font-family:monospace; font-size:14px; outline:none; } fieldset.inner>div.output>div.layout>div.layout div.content * { font-family:monospace; font-size:14px; outline:none; }
fieldset.inner>div.output>div.layout>div.layout>div.profile { max-width:unset; } fieldset.inner>div.output>div.layout>div.layout>div.profile { max-width:unset; }
fieldset.inner>div.output>div.layout>div.layout>iframe.profile { border-left:var(--plugin-border-color) solid 1px; } fieldset.inner>div.output>div.layout>div.layout>div.profile { max-width:unset; }
fieldset.inner>div.output>div.layout>div.layout>div.profile h1 { text-align:left; padding:10px 0; margin:20px 0; border-bottom:var(--box-border); }
fieldset.inner>div.output>div.layout>div.layout>div.profile h2 { padding:10px 0; margin:20px 0; border-bottom:var(--box-border); }
fieldset.inner>div.output>div.layout>div.layout>div.profile>div.code { white-space:unset; padding:20px; }
fieldset.inner>div.output>div.layout>div.layout>iframe.profile { border-left:var(--box-border); }
fieldset.inner>div.output>div.layout>div.layout>div.profile div.status>div { padding:5px; float:left; } fieldset.inner>div.output>div.layout>div.layout>div.profile div.status>div { padding:5px; float:left; }
fieldset.inner>div.output>div.layout>div.display div.status>div { padding:5px; float:left; } fieldset.inner>div.output>div.layout>div.display div.status>div { padding:5px; float:left; }
fieldset.inner>div.output>div.project>div.zone>div.item { font-style:italic; font-weight:bold; line-height:32px; } fieldset.inner>div.output>div.project>div.zone>div.item { font-style:italic; font-weight:bold; line-height:32px; }
fieldset.inner>div.output>div.project>div.zone>div.item>span.icon { font-style:normal; font-weight:normal; } fieldset.inner>div.output>div.project>div.zone>div.item>span.icon { font-style:normal; font-weight:normal; }
fieldset.inner.cmd>div.output>div.layout>div.tabs { height:38px; display:block; overflow:hidden; } fieldset.inner.cmd>div.output>div.layout>div.tabs { height:38px; display:block; overflow:hidden; background-color:var(--plugin-bg-color); }
fieldset.inner.cmd>div.output>div.layout>div.tabs.hide { display:none; } fieldset.inner.cmd>div.output>div.layout>div.tabs.hide { display:none; }
fieldset.inner.cmd>div.output>div.layout>div.tabs>div { padding:10px; height:38px; float:left; } fieldset.inner.cmd>div.output>div.layout>div.tabs>div { padding:10px; height:38px; float:left; }
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.icon { font-size:26px; line-height:32px; padding:2px 5px; position:sticky; top:0; } fieldset.inner.cmd>div.output>div.layout>div.tabs>div.icon { font-size:26px; line-height:32px; padding:2px 5px; position:sticky; top:0; }
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs.select { background-color:var(--output-bg-color); } fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs.select { background-color:var(--output-bg-color); box-shadow:var(--box-shadow); }
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs:hover { background-color:var(--output-bg-color); } fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs:hover { background-color:var(--output-bg-color); }
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs>span { font-style:italic; } fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs>span { font-style:italic; }
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs>span.icon { padding:0 5px; } fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs>span.icon { padding:0 5px; }
@ -43,11 +47,11 @@ fieldset.inner.cmd>div.output>div.layout>div.tabs>div.usernick { float:right; po
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.avatar { padding:0; height:38px; float:right; position:sticky; top:0; } fieldset.inner.cmd>div.output>div.layout>div.tabs>div.avatar { padding:0; height:38px; float:right; position:sticky; top:0; }
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.avatar>img { height:38px; } fieldset.inner.cmd>div.output>div.layout>div.tabs>div.avatar>img { height:38px; }
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.time { float:right; position:sticky; top:0; } fieldset.inner.cmd>div.output>div.layout>div.tabs>div.time { float:right; position:sticky; top:0; }
fieldset.inner.cmd>div.output>div.layout>div.path { font-style:italic; padding:5px; display:block; } fieldset.inner.cmd>div.output>div.layout>div.path { font-style:italic; padding:5px; display:block; box-shadow:var(--box-shadow); cursor:pointer; }
fieldset.inner.cmd>div.output>div.layout>div.path.hide { display:none; } fieldset.inner.cmd>div.output>div.layout>div.path.hide { display:none; }
fieldset.inner.cmd>div.output>div.layout>div.path span.func { padding:5px 10px; margin-left:20px; } fieldset.inner.cmd>div.output>div.layout>div.path span.func { padding:5px 10px; margin-left:20px; }
fieldset.inner.cmd>div.output>div.layout>div.path span.mode { padding:5px 10px; margin-left:20px; cursor:pointer; } fieldset.inner.cmd>div.output>div.layout>div.path span.mode { padding:5px 10px; margin-left:20px; }
fieldset.inner.cmd>div.output>div.layout>div.path span.view { font-size:22px; line-height:12px; padding:0 4px; float:right; cursor:pointer; } fieldset.inner.cmd>div.output>div.layout>div.path span.view { font-size:22px; line-height:12px; padding:0 4px; float:right; }
fieldset.inner.cmd>div.output>div.layout>div.plug { height:32px; clear:both; position:fixed; bottom:0; right:0; } fieldset.inner.cmd>div.output>div.layout>div.plug { height:32px; clear:both; position:fixed; bottom:0; right:0; }
fieldset.inner.cmd>div.output>div.layout>div.plug>legend { font-size:1rem; padding:0 10px; float:right; } fieldset.inner.cmd>div.output>div.layout>div.plug>legend { font-size:1rem; padding:0 10px; float:right; }
fieldset.inner.cmd>div.output>div.layout>div.display>div.status { position:sticky; bottom:0; } fieldset.inner.cmd>div.output>div.layout>div.display>div.status { position:sticky; bottom:0; }
@ -70,9 +74,9 @@ body.mobile fieldset.inner>form.option input[name=file] { width:90px; }
body.mobile fieldset.word fieldset.inner>form.option input[type=text] { display:none; } body.mobile fieldset.word fieldset.inner>form.option input[type=text] { display:none; }
body.windows fieldset.inner>div.output { overflow:hidden; } body.windows fieldset.inner>div.output { overflow:hidden; }
body.windows fieldset.inner>div.output>div.layout>div.layout>div.profile { overflow:hidden; } body.windows fieldset.inner>div.output>div.layout>div.layout>div.profile { overflow:hidden; }
body.zh fieldset.inner>div.output>div.project>div.zone>div.item { letter-spacing:10px; } body.zh fieldset.inner>div.output>div.project>div.zone>div.item { letter-spacing:10px; border-top:var(--box-border); }
div.path span.item { padding:5px; } div.path span.item { padding:5px; }
div.carte.path.float { font-size:14px; border-radius:0; } div.carte.path.float div.item { padding:5px; } div.carte.path.float { font-size:14px; border-radius:0; box-shadow:var(--box-shadow); } div.carte.path.float div.item { padding:5px; }
div.carte.cmd.float { font-size:14px; border-radius:0; } div.cmd.path.float div.item { padding:5px; } div.carte.cmd.float { font-size:14px; border-radius:0; } div.cmd.path.float div.item { padding:5px; }
div.vimer.open.float td:first-child { display:none; } div.vimer.open.float td:first-child { display:none; }
div.layout.flex>input.current { clear:both; } div.layout.flex>input.current { clear:both; }

View File

@ -78,7 +78,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
} }
can.page.Append(can, target, [{view: [[html.ITEM, "func"], html.SPAN, (func.current||"func")+nfs.PS+can.ui.content._max+func.percent+lex.SP+can.base.Size(can._msg.result[0].length)], onclick: function(event) { can.page.Append(can, target, [{view: [[html.ITEM, "func"], html.SPAN, (func.current||"func")+nfs.PS+can.ui.content._max+func.percent+lex.SP+can.base.Size(can._msg.result[0].length)], onclick: function(event) {
carte = can.user.carte(event, can, {_style: nfs.PATH}, list, function(ev, button) { last[button] = true, carte.close() carte = can.user.carte(event, can, {_style: nfs.PATH}, list, function(ev, button) { last[button] = true, carte.close()
can.onimport.tabview(can, "", can.Option(nfs.FILE), can.core.Split(button, nfs.DF)[1]) can.onimport.tabview(can, "", can.Option(nfs.FILE), can.core.Split(button, nfs.DF, nfs.DF).pop())
}) })
}}]) }}])
}, },
@ -133,8 +133,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
can.Status(kit.Dict(nfs.FILE, ls.join(nfs.PS))) can.Status(kit.Dict(nfs.FILE, ls.join(nfs.PS)))
}) })
} }
function load(msg) { var skip = false; can.db.tabview[key] = msg function load(msg) { var skip = false; can.db.tabview[key] = msg; var name = file
var name = file
if (can.base.beginWith(file, web.HTTP)) { name = decodeURI(file.split(web.QS)[0]) if (can.base.beginWith(file, web.HTTP)) { name = decodeURI(file.split(web.QS)[0])
var link = can.misc.ParseURL(can, name); if (link.pod) { name = link.pod } var link = can.misc.ParseURL(can, name); if (link.pod) { name = link.pod }
} else { } else {
@ -143,9 +142,6 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
can.onimport.tabs(can, [{name: name, text: file, _menu: shy([ can.onimport.tabs(can, [{name: name, text: file, _menu: shy([
nfs.SAVE, nfs.TRASH, web.REFRESH, nfs.SAVE, nfs.TRASH, web.REFRESH,
], function(event, button, meta) { ], function(event, button, meta) {
if (button == "refresh") {
}
can.onaction[button](event, can, button) can.onaction[button](event, can, button)
})}], function(event, tabs) { })}], function(event, tabs) {
can._tab = msg._tab = tabs._target, show(skip), skip = true can._tab = msg._tab = tabs._target, show(skip), skip = true
@ -162,7 +158,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
return can.Status(ice.BACK, can.db.history.length), record return can.Status(ice.BACK, can.db.history.length), record
}, },
project: function(can, path) { can.onmotion.clear(can, can.ui.project), can.onimport.zone(can, can.core.Item(can.onfigure, function(name, cb) { project: function(can, path) { can.onmotion.clear(can, can.ui.project), can.onimport.zone(can, can.core.Item(can.onfigure, function(name, cb) {
if (can.base.isFunc(cb)) { return {name: name, _trans: can.onfigure._trans? can.onfigure._trans[name]||"": "", _init: function(target, zone) { return cb(can, target, zone, path) }} } if (can.base.isFunc(cb)) { return {name: name, _trans: can.onfigure._trans? can.onfigure._trans[name]||"": "", _toggle: function() { can.onimport.layout(can) }, _init: function(target, zone) { return cb(can, target, zone, path) }} }
}), can.ui.project) }, }), can.ui.project) },
profile: function(can, msg) { var _msg = can.db.tabview[can.onexport.keys(can)]; _msg.Option(html.WIDTH, msg.Option(html.WIDTH)), border = 1 profile: function(can, msg) { var _msg = can.db.tabview[can.onexport.keys(can)]; _msg.Option(html.WIDTH, msg.Option(html.WIDTH)), border = 1
var height = (can.ui.content._root||can.ui.content).offsetHeight, width = can.onexport.size(can, _msg.Option(html.WIDTH)||0.5, can.ConfWidth()-can.ui.project.offsetWidth)+border var height = (can.ui.content._root||can.ui.content).offsetHeight, width = can.onexport.size(can, _msg.Option(html.WIDTH)||0.5, can.ConfWidth()-can.ui.project.offsetWidth)+border
@ -205,6 +201,13 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
can.onappend.table(can, msg, function(value, key, index, item) { return {text: [value, html.TD], onclick: function(event) { can.onappend.table(can, msg, function(value, key, index, item) { return {text: [value, html.TD], onclick: function(event) {
item.file && can.onimport.tabview(can, item.path, item.file||can.Option(nfs.FILE), item.line) item.file && can.onimport.tabview(can, item.path, item.file||can.Option(nfs.FILE), item.line)
}} }, target), can.onappend.board(can, msg, target), msg.Option(ice.MSG_STATUS) && can.onappend._status(can, msg.Option(ice.MSG_STATUS), can.page.Append(can, target, [html.STATUS])._target) }} }, target), can.onappend.board(can, msg, target), msg.Option(ice.MSG_STATUS) && can.onappend._status(can, msg.Option(ice.MSG_STATUS), can.page.Append(can, target, [html.STATUS])._target)
can.onmotion.delay(can, function() {
can.page.Select(can, target, html.IMG, function(target) {
var src = can.base.trimPrefix(target.src, location.origin)
if (can.base.beginWith(src, "/require/", web.HTTP)) { return }
target.src = "/require/"+can.Option(nfs.PATH)+can.base.trimPrefix(src, location.pathname.slice(0, location.pathname.lastIndexOf("/")+1))
})
})
} else { } else {
return can.onmotion.toggle(can, target, false), can.onimport.layout(can), can.user.toastFailure(can, "nothing to display") return can.onmotion.toggle(can, target, false), can.onimport.layout(can), can.user.toastFailure(can, "nothing to display")
} return can.onmotion.toggle(can, target, true), can.onmotion.delay(can, function() { can.onimport.layout(can), can.user.toastSuccess(can) }) } return can.onmotion.toggle(can, target, true), can.onmotion.delay(can, function() { can.onimport.layout(can), can.user.toastSuccess(can) })
@ -218,10 +221,13 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
layout: function(can) { if (can.isSimpleMode() || can.Conf("style") == "output") { return can.page.style(can, can.ui.content, html.WIDTH, can.ConfWidth()) } if (can.isCmdMode()) { can.ConfHeight(can.page.height()) } layout: function(can) { if (can.isSimpleMode() || can.Conf("style") == "output") { return can.page.style(can, can.ui.content, html.WIDTH, can.ConfWidth()) } if (can.isCmdMode()) { can.ConfHeight(can.page.height()) }
var content = can.ui.content; if (content._root) { can.ui.content = content._root } can.ui.size = {profile: can._msg.Option(html.WIDTH), display: can._msg.Option(html.HEIGHT)} var content = can.ui.content; if (content._root) { can.ui.content = content._root } can.ui.size = {profile: can._msg.Option(html.WIDTH), display: can._msg.Option(html.HEIGHT)}
can.ui.layout(can.ConfHeight(), can.ConfWidth(), 0, function(height, width) { can.ui.content = content, can.onlayout.layout(can, height, width) can.ui.layout(can.ConfHeight(), can.ConfWidth(), 0, function(height, width) { can.ui.content = content, can.onlayout.layout(can, height, width)
var sub = can.ui.profile._plugin; sub && can.page.isDisplay(can.ui.profile) && sub.onimport.size(sub, can.ui.profile.offsetHeight, can.ui.profileWidth, true) var sub = can.ui.profile._plugin; sub && can.page.isDisplay(can.ui.profile) && sub.onimport && sub.onimport.size(sub, can.ui.profile.offsetHeight, can.ui.profileWidth, true)
var sub = can.ui.content._plugin; if (!sub) { return } if (height == sub.ConfHeight()+sub.onexport.actionHeight(sub)+sub.onexport.statusHeight(sub) && width == sub.ConfWidth()) { return } var sub = can.ui.content._plugin; if (!sub) { return } if (height == sub.ConfHeight()+sub.onexport.actionHeight(sub)+sub.onexport.statusHeight(sub) && width == sub.ConfWidth()) { return }
content._root || sub.onimport.size(sub, height, width, true), can.onlayout.layout(can) content._root || sub.onimport.size(sub, height, width, true), can.onlayout.layout(can)
}) })
if (can.isCmdMode()) {
can.ui.zone.source._layout(), can.ui.zone[can.Option(nfs.PATH)] && can.ui.zone[can.Option(nfs.PATH)]._layout()
}
}, },
exts: function(can, url, cb) { var sub = can.db.toolkit[url.split(web.QS)[0]]; if (sub) { return can.base.isFunc(cb)? cb(sub): sub.select() } exts: function(can, url, cb) { var sub = can.db.toolkit[url.split(web.QS)[0]]; if (sub) { return can.base.isFunc(cb)? cb(sub): sub.select() }
can.onimport.toolkit(can, {index: ice.CAN_PLUGIN, display: (url[0] == nfs.PS || url.indexOf(web.HTTP) == 0? "": can.base.Dir(can._path))+url}, function(sub) { can.onimport.toolkit(can, {index: ice.CAN_PLUGIN, display: (url[0] == nfs.PS || url.indexOf(web.HTTP) == 0? "": can.base.Dir(can._path))+url}, function(sub) {
@ -235,7 +241,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
}, [""]) }, [""])
Volcanos(chat.ONFIGURE, { Volcanos(chat.ONFIGURE, {
source: function(can, target, zone, path) { var args = can.base.getValid(can.misc.SearchHash(can), [can.Option(nfs.PATH), can.Option(nfs.FILE)]) source: function(can, target, zone, path) { var args = can.base.getValid(can.misc.SearchHash(can), [can.Option(nfs.PATH), can.Option(nfs.FILE)])
function show(target, zone, path) { can.run(can.request({}, {dir_root: path, dir_deep: true}), [nfs.PWD], function(msg) { can.onmotion.clear(can, target) function show(target, zone, path) { can.run(can.request({}, {dir_root: path, dir_deep: true, "_toast": "目录加载中..."}), [nfs.PWD], function(msg) { can.onmotion.clear(can, target)
can.onimport.tree(can, can.core.List(msg.Table(), function(item) { can.onimport.tree(can, can.core.List(msg.Table(), function(item) {
if (path == args[0] && args[1].indexOf(item.path) == 0) { item.expand = true } return item if (path == args[0] && args[1].indexOf(item.path) == 0) { item.expand = true } return item
}), nfs.PATH, nfs.PS, function(event, item) { can.onimport.tabview(can, path, item.path) }, target), zone._total(msg.Length()) }), nfs.PATH, nfs.PS, function(event, item) { can.onimport.tabview(can, path, item.path) }, target), zone._total(msg.Length())
@ -245,11 +251,11 @@ Volcanos(chat.ONFIGURE, {
module: function(can, target, zone) { zone._delay_init = function() { can.runAction({}, mdb.INPUTS, [ctx.INDEX], function(msg) { module: function(can, target, zone) { zone._delay_init = function() { can.runAction({}, mdb.INPUTS, [ctx.INDEX], function(msg) {
can.onimport.tree(can, msg.Table(), ctx.INDEX, nfs.PT, function(event, item) { can.onimport.tabview(can, "", item.index, ctx.INDEX) }, target), zone._total(msg.Length()) can.onimport.tree(can, msg.Table(), ctx.INDEX, nfs.PT, function(event, item) { can.onimport.tabview(can, "", item.index, ctx.INDEX) }, target), zone._total(msg.Length())
}) } }, }) } },
plugin: function(can, target, zone) { var total = 0 plugin: function(can, target, zone) { zone._delay_init = function() { var total = 0
can.onimport.tree(can, can.core.ItemKeys(can.onengine.plugin.meta, function(key) { if (key[0] != "_") { return total++, {index: key} } }), ctx.INDEX, nfs.PT, function(event, item) { can.onimport.tree(can, can.core.ItemKeys(can.onengine.plugin.meta, function(key) { if (key[0] != "_") { return total++, {index: key} } }), ctx.INDEX, nfs.PT, function(event, item) {
can.onimport.tabview(can, "", can.core.Keys(ice.CAN, item.index), ctx.INDEX) can.onimport.tabview(can, "", can.core.Keys(ice.CAN, item.index), ctx.INDEX)
}, target), zone._total(total) }, target), zone._total(total)
}, } },
}) })
Volcanos(chat.ONLAYOUT, { Volcanos(chat.ONLAYOUT, {
_split: function(can, type) { var target = can.ui.content, msg = target._msg, scroll = target.scrollTop _split: function(can, type) { var target = can.ui.content, msg = target._msg, scroll = target.scrollTop
@ -295,11 +301,7 @@ Volcanos(chat.ONSYNTAX, {_init: function(can, msg, cb) { var key = can.onexport.
if (can.onexport.parse(can) == nfs.SVG) { msg.Option(ctx.INDEX, web.WIKI_DRAW+mdb.FS+path+file) } if (can.onexport.parse(can) == nfs.SVG) { msg.Option(ctx.INDEX, web.WIKI_DRAW+mdb.FS+path+file) }
if (msg.Option(ctx.INDEX)) { return can.onsyntax._index(can, msg, function(target) { can.ui.content = target, cb(msg._content = content._root? (target._root = content._root): target) }, content._root? content: can.ui._profile.parentNode) } if (msg.Option(ctx.INDEX)) { return can.onsyntax._index(can, msg, function(target) { can.ui.content = target, cb(msg._content = content._root? (target._root = content._root): target) }, content._root? content: can.ui._profile.parentNode) }
function show(p) { function show(p) {
p && p.include && can.core.List(p.include, function(from) { p && p.include && can.core.List(p.include, function(from) { can.core.Item(can.onsyntax[from].keyword, function(key, value) { p.keyword[key] = p.keyword[key] || value }) })
can.core.Item(can.onsyntax[from].keyword, function(key, value) {
p.keyword[key] = p.keyword[key] || value
})
})
if (!content._root && can.db.history.length > 1) { content = can.ui.content = can.page.insertBefore(can, [{view: html.CONTENT, style: {width: can.ui.content.offsetWidth}}], can.ui._profile), content._cache_key = key } if (!content._root && can.db.history.length > 1) { content = can.ui.content = can.page.insertBefore(can, [{view: html.CONTENT, style: {width: can.ui.content.offsetWidth}}], can.ui._profile), content._cache_key = key }
content._max = 0, content._msg = msg, msg.__content = content, can.page.Appends(can, content, [{view: ["tips", "", msg.Option(nfs.FILE)]}]) content._max = 0, content._msg = msg, msg.__content = content, can.page.Appends(can, content, [{view: ["tips", "", msg.Option(nfs.FILE)]}])
if (msg.Length() > 0) { can.onsyntax._change(can, msg), can.onaction.rerankLine(can, "tr.line:not(.delete)>td.line") if (msg.Length() > 0) { can.onsyntax._change(can, msg), can.onaction.rerankLine(can, "tr.line:not(.delete)>td.line")
@ -308,7 +310,14 @@ Volcanos(chat.ONSYNTAX, {_init: function(can, msg, cb) { var key = can.onexport.
can.onmotion.delay(can, function() { can.onappend.scroll(can, can.ui.content) }) can.onmotion.delay(can, function() { can.onappend.scroll(can, can.ui.content) })
can.onengine.signal(can, VIEW_CREATE, msg), can.base.isFunc(cb) && cb(msg._content = content._root? content._root: content) can.onengine.signal(can, VIEW_CREATE, msg), can.base.isFunc(cb) && cb(msg._content = content._root? content._root: content)
} can.require(["/plugin/local/code/inner/syntax.js"], function() { var parse = can.onexport.parse(can); can.Conf(chat.PLUG) && (can.onsyntax[parse] = can.Conf(chat.PLUG)) } can.require(["/plugin/local/code/inner/syntax.js"], function() { var parse = can.onexport.parse(can); can.Conf(chat.PLUG) && (can.onsyntax[parse] = can.Conf(chat.PLUG))
var p = can.onsyntax[parse]; !p? can.runAction({}, mdb.PLUGIN, [parse, file, path], function(msg) { show(p = can.onsyntax[parse] = can.base.Obj(msg.Result()||"{}")) }): show(p) var p = can.onsyntax[parse]; !p? can.runAction({}, mdb.PLUGIN, [parse, file, path], function(msg) {
p = can.base.Obj(msg.Result())
if (p && p.script) { can._msg.Option("parse", msg.Option("parse"))
can.require([p.script], function() { show(can.onsyntax[msg.Option("parse")||parse]) })
} else {
show(can.onsyntax[parse] = p)
}
}): show(p)
}) })
}, },
_space: function(can, msg, cb, parent) { if (can.Option(nfs.LINE) == web.SPACE) { can.ui.zone.space && can.onmotion.delay(can, function() { can.ui.zone.space.refresh() }, 1000) _space: function(can, msg, cb, parent) { if (can.Option(nfs.LINE) == web.SPACE) { can.ui.zone.space && can.onmotion.delay(can, function() { can.ui.zone.space.refresh() }, 1000)
@ -334,10 +343,11 @@ Volcanos(chat.ONSYNTAX, {_init: function(can, msg, cb) { var key = can.onexport.
}, },
_parse: function(can, line) { var parse = can.onexport.parse(can) _parse: function(can, line) { var parse = can.onexport.parse(can)
function wrap(text, type) { return can.page.Format(html.SPAN, can.page.trans(can, text), type) } function wrap(text, type) { return can.page.Format(html.SPAN, can.page.trans(can, text), type) }
var p = can.onsyntax[parse]||{}; p = can.onsyntax[p.link]||p, p.split = p.split||{} var p = can.onsyntax[parse]; if (!p) { return can.page.trans(can, line) } p = can.onsyntax[p.link]||p, p.split = p.split||{}, p.keyword = p.keyword||{}
if (p.prefix && can.core.Item(p.prefix, function(pre, type) { if (can.base.beginWith(line, pre)) { return line = wrap(line, type) } }).length > 0) { return line } if (p.prefix && can.core.Item(p.prefix, function(pre, type) { if (can.base.beginWith(line, pre)) { return line = wrap(line, type) } }).length > 0) { return line }
if (p.suffix && can.core.Item(p.suffix, function(end, type) { if (can.base.endWith(line, end)) { return line = wrap(line, type) } }).length > 0) { return line } if (p.suffix && can.core.Item(p.suffix, function(end, type) { if (can.base.endWith(line, end)) { return line = wrap(line, type) } }).length > 0) { return line }
p.keyword && (line = can.core.List(can.core.Split(line, p.split.space||"\t ", p.split.operator||"{[(.,:;!?|&*/+-<=>)]}", {detail: true}), function(item, index, array) { if (!p.keyword) { return line }
line = can.core.List(can.core.Split(line, p.split.space||"\t ", p.split.operator||"{[(.,:;!?|$@&*+-<=>)]}", {detail: true}), function(item, index, array) {
item = can.base.isObject(item)? item: {text: item}; var text = item.text, type = p.keyword[text] item = can.base.isObject(item)? item: {text: item}; var text = item.text, type = p.keyword[text]
switch (item.type||type) { switch (item.type||type) {
case code.STRING: return wrap(item.left+text+item.right, code.STRING) case code.STRING: return wrap(item.left+text+item.right, code.STRING)
@ -351,7 +361,7 @@ Volcanos(chat.ONSYNTAX, {_init: function(can, msg, cb) { var key = can.onexport.
default: var t = can.core.Item(p.regexp, function(reg, type) { var m = text.match(new RegExp(reg)); if (m && m.length > 0 && m[0] == text) { return type} }) default: var t = can.core.Item(p.regexp, function(reg, type) { var m = text.match(new RegExp(reg)); if (m && m.length > 0 && m[0] == text) { return type} })
return t && t.length > 0? wrap(text, t[0]): type? wrap(text, type): wrap(text, "_") return t && t.length > 0? wrap(text, t[0]): type? wrap(text, type): wrap(text, "_")
} }
}).join("")); return line }).join(""); return line
}, },
_change: function(can, msg) { var _delete = [], _insert = [], deletes = [], inserts = [] _change: function(can, msg) { var _delete = [], _insert = [], deletes = [], inserts = []
function scroll(item, type, length, index) { function scroll(item, type, length, index) {
@ -525,7 +535,9 @@ Volcanos(chat.ONEXPORT, {list: [nfs.FILE, nfs.LINE, ice.BACK],
selection: function(can, str) { var s = document.getSelection().toString(), begin = str.indexOf(s), end = begin+s.length selection: function(can, str) { var s = document.getSelection().toString(), begin = str.indexOf(s), end = begin+s.length
for (var i = begin; i >= 0; i--) { if (str[i].match(/[a-zA-Z0-9_.]/)) { s = str.slice(i, end) } else { break } } return s for (var i = begin; i >= 0; i--) { if (str[i].match(/[a-zA-Z0-9_.]/)) { s = str.slice(i, end) } else { break } } return s
}, },
parse: function(can) { return can.base.Ext(can.Option(nfs.FILE)) }, parse: function(can) {
return can._msg.Option("parse")||can.base.Ext(can.Option(nfs.FILE))
},
split: function(can, file) { var ls = file.split(nfs.PS); if (ls.length == 1) { return [nfs.PWD, ls[0]] } split: function(can, file) { var ls = file.split(nfs.PS); if (ls.length == 1) { return [nfs.PWD, ls[0]] }
if (ls[0] == ice.USR) { return [ls.slice(0, 2).join(nfs.PS)+nfs.PS, ls.slice(2).join(nfs.PS)] } if (ls[0] == ice.USR) { return [ls.slice(0, 2).join(nfs.PS)+nfs.PS, ls.slice(2).join(nfs.PS)] }
return [ls.slice(0, 1).join(nfs.PS)+nfs.PS, ls.slice(1).join(nfs.PS)] return [ls.slice(0, 1).join(nfs.PS)+nfs.PS, ls.slice(1).join(nfs.PS)]

View File

@ -1,22 +1,29 @@
Volcanos(chat.ONSYNTAX, { Volcanos(chat.ONSYNTAX, {
makefile: {prefix: {"#": code.COMMENT}, suffix: {":": code.COMMENT}, keyword: { makefile: {prefix: {"#": code.COMMENT}, split: {operator: "($?.,):+="}, keyword: {
"ifeq": code.KEYWORD, "ifneq": code.KEYWORD, "else": code.KEYWORD, "endif": code.KEYWORD, "export": code.KEYWORD,
"if": code.KEYWORD, "else": code.KEYWORD, "endif": code.KEYWORD,
"ifeq": code.KEYWORD, "ifneq": code.KEYWORD,
"ifdef": code.KEYWORD, "ifndef": code.KEYWORD,
"define": code.KEYWORD, "endef": code.KEYWORD,
"shell": code.KEYWORD,
"PHONY": code.FUNCTION,
}, include: ["sh"], func: function(can, push, text, indent) {
var ls = can.core.Split(text, "", ":=")
if (indent == 0 && ls[1] == ":" && ls[2] != "=") { push(text) }
}}, }},
man: { man: {prefix: {
prefix: { "NAME": code.KEYWORD,
"NAME": code.KEYWORD, "SYNOPSIS": code.KEYWORD,
"SYNOPSIS": code.KEYWORD, "DESCRIPTION": code.KEYWORD,
"DESCRIPTION": code.KEYWORD,
"AUTHOR": code.KEYWORD, "AUTHOR": code.KEYWORD,
"COPYRIGHT": code.KEYWORD, "COPYRIGHT": code.KEYWORD,
"LIBRARY": code.KEYWORD, "LIBRARY": code.KEYWORD,
"STANDARDS": code.KEYWORD, "STANDARDS": code.KEYWORD,
"SEE ALSO": code.KEYWORD, "SEE ALSO": code.KEYWORD,
"HISTORY": code.KEYWORD, "HISTORY": code.KEYWORD,
"BUGS": code.KEYWORD, "BUGS": code.KEYWORD,
}, }},
},
vim: {prefix: {"\"": "comment"}, keyword: { vim: {prefix: {"\"": "comment"}, keyword: {
"source": code.KEYWORD, "source": code.KEYWORD,
"finish": code.KEYWORD, "finish": code.KEYWORD,
@ -92,7 +99,6 @@ Volcanos(chat.ONSYNTAX, {
}, },
}, h: {link: "c"}, }, h: {link: "c"},
sh: {prefix: {"#": code.COMMENT}, suffix: {" {": code.COMMENT}, split: {operator: "{[($.,:;&<|>=)]}"}, regexp: {"[A-Z0-9_]+": code.CONSTANT, "ish_[A-Za-z0-9_]+": code.FUNCTION}, sh: {prefix: {"#": code.COMMENT}, suffix: {" {": code.COMMENT}, split: {operator: "{[($.,:;&<|>=)]}"}, regexp: {"[A-Z0-9_]+": code.CONSTANT, "ish_[A-Za-z0-9_]+": code.FUNCTION},
func: function(can, push, text) { if (can.base.endWith(text, "() {")) { var ls = can.core.Split(text, "\t (){"); push(ls[0]) } },
keyword: { keyword: {
"source": code.KEYWORD, "return": code.KEYWORD, "exit": code.KEYWORD, "source": code.KEYWORD, "return": code.KEYWORD, "exit": code.KEYWORD,
"require": code.KEYWORD, "request": code.KEYWORD, "require": code.KEYWORD, "request": code.KEYWORD,
@ -104,34 +110,41 @@ Volcanos(chat.ONSYNTAX, {
"history": code.FUNCTION, "alias": code.FUNCTION, "complete": code.FUNCTION, "compgen": code.FUNCTION, "bind": code.FUNCTION, "history": code.FUNCTION, "alias": code.FUNCTION, "complete": code.FUNCTION, "compgen": code.FUNCTION, "bind": code.FUNCTION,
"printf": code.FUNCTION, "echo": code.FUNCTION, "eval": code.FUNCTION, "test": code.FUNCTION, "trap": code.FUNCTION, "shift": code.FUNCTION, "printf": code.FUNCTION, "echo": code.FUNCTION, "eval": code.FUNCTION, "test": code.FUNCTION, "trap": code.FUNCTION, "shift": code.FUNCTION,
"cd": code.FUNCTION, "ls": code.FUNCTION, "rm": code.FUNCTION, "chmod": code.FUNCTION, "mkdir": code.FUNCTION, "mktemp": code.FUNCTION, "set": code.FUNCTION, "xargs": code.FUNCTION,
"/dev/null": code.CONSTANT, "/dev/stdout": code.CONSTANT, "/dev/stderr": code.CONSTANT,
"mkdir": code.FUNCTION, "rmdir": code.FUNCTION, "mktemp": code.FUNCTION, "du": code.FUNCTION, "df": code.FUNCTION,
"cd": code.FUNCTION, "ls": code.FUNCTION, "ln": code.FUNCTION, "mv": code.FUNCTION, "rm": code.FUNCTION, "cp": code.FUNCTION,
"groupadd": code.FUNCTION, "useradd": code.FUNCTION, "chown": code.FUNCTION, "sudo": code.FUNCTION,
"curl": code.FUNCTION, "wget": code.FUNCTION, "apk": code.FUNCTION, "yum": code.FUNCTION, "curl": code.FUNCTION, "wget": code.FUNCTION, "apk": code.FUNCTION, "yum": code.FUNCTION,
"cat": code.FUNCTION, "head": code.FUNCTION, "tail": code.FUNCTION, "cat": code.FUNCTION, "head": code.FUNCTION, "tail": code.FUNCTION,
"grep": code.FUNCTION, "cut": code.FUNCTION, "sed": code.FUNCTION, "tr": code.FUNCTION, "grep": code.FUNCTION, "cut": code.FUNCTION, "sed": code.FUNCTION, "tr": code.FUNCTION,
"xargs": code.FUNCTION, "sudo": code.FUNCTION, "du": code.FUNCTION, "df": code.FUNCTION, "make": code.FUNCTION, "file": code.FUNCTION, "vim": code.FUNCTION, "gcc": code.FUNCTION, "git": code.FUNCTION, "go": code.FUNCTION,
"/dev/null": code.CONSTANT, "/dev/stdout": code.CONSTANT, "/dev/stderr": code.CONSTANT, "docker": code.FUNCTION,
}, },
func: function(can, push, text) { if (can.base.endWith(text, "() {")) { var ls = can.core.Split(text, "\t (){"); push(ls[0]) } },
}, configure: {link: "sh"}, }, configure: {link: "sh"},
shy: {prefix: {"#": code.COMMENT}, regexp: {"[A-Z_0-9]+": code.CONSTANT}, keyword: {"source": code.KEYWORD, shy: {prefix: {"#": code.COMMENT}, regexp: {"[A-Z_0-9]+": code.CONSTANT},
"title": code.KEYWORD, "navmenu": code.KEYWORD, "premenu": code.KEYWORD, "chapter": code.KEYWORD, "section": code.KEYWORD, "endmenu": code.KEYWORD, keyword: {"source": code.KEYWORD,
"refer": code.KEYWORD, "brief": code.KEYWORD, "spark": code.KEYWORD, "shell": code.KEYWORD, "parse": code.KEYWORD, "title": code.KEYWORD, "navmenu": code.KEYWORD, "premenu": code.KEYWORD, "chapter": code.KEYWORD, "section": code.KEYWORD, "endmenu": code.KEYWORD,
"order": code.KEYWORD, "table": code.KEYWORD, "chart": code.KEYWORD, "label": code.KEYWORD, "chain": code.KEYWORD, "sequence": code.KEYWORD, "refer": code.KEYWORD, "brief": code.KEYWORD, "spark": code.KEYWORD, "shell": code.KEYWORD, "parse": code.KEYWORD,
"field": code.KEYWORD, "image": code.KEYWORD, "video": code.KEYWORD, "audio": code.KEYWORD, "order": code.KEYWORD, "table": code.KEYWORD, "chart": code.KEYWORD, "label": code.KEYWORD, "chain": code.KEYWORD, "sequence": code.KEYWORD,
"style": code.KEYWORD, "field": code.KEYWORD, "image": code.KEYWORD, "video": code.KEYWORD, "audio": code.KEYWORD,
"inner": code.KEYWORD, "style": code.KEYWORD,
"inner": code.KEYWORD,
"package": code.KEYWORD, "import": code.KEYWORD, "const": code.KEYWORD, "type": code.KEYWORD, "var": code.KEYWORD, "package": code.KEYWORD, "import": code.KEYWORD, "const": code.KEYWORD, "type": code.KEYWORD, "var": code.KEYWORD,
"if": code.KEYWORD, "else": code.KEYWORD, "if": code.KEYWORD, "else": code.KEYWORD,
"for": code.KEYWORD, "range": code.KEYWORD, "break": code.KEYWORD, "continue": code.KEYWORD, "for": code.KEYWORD, "range": code.KEYWORD, "break": code.KEYWORD, "continue": code.KEYWORD,
"switch": code.KEYWORD, "case": code.KEYWORD, "default": code.KEYWORD, "switch": code.KEYWORD, "case": code.KEYWORD, "default": code.KEYWORD,
"func": code.KEYWORD, "defer": code.KEYWORD, "return": code.KEYWORD, "func": code.KEYWORD, "defer": code.KEYWORD, "return": code.KEYWORD,
"init": code.FUNCTION, "main": code.FUNCTION, "list": code.FUNCTION, "info": code.FUNCTION, "init": code.FUNCTION, "main": code.FUNCTION, "list": code.FUNCTION, "info": code.FUNCTION,
"map": code.DATATYPE, "struct": code.DATATYPE, "interface": code.DATATYPE, "string": code.DATATYPE, "int": code.DATATYPE, "map": code.DATATYPE, "struct": code.DATATYPE, "interface": code.DATATYPE, "string": code.DATATYPE, "int": code.DATATYPE,
"true": code.CONSTANT, "false": code.CONSTANT, "true": code.CONSTANT, "false": code.CONSTANT,
"kit": code.PACKAGE, "ice": code.PACKAGE, "m": code.OBJECT, "arg": code.OBJECT, "kit": code.PACKAGE, "ice": code.PACKAGE, "m": code.OBJECT, "arg": code.OBJECT,
"event": code.OBJECT, "can": code.OBJECT, "msg": code.OBJECT, "target": code.OBJECT, "event": code.OBJECT, "can": code.OBJECT, "msg": code.OBJECT, "target": code.OBJECT,
}, },
func: function(can, push, text, indent, opts) { var ls = can.core.Split(text, "\t ") func: function(can, push, text, indent, opts) { var ls = can.core.Split(text, "\t ")
opts.chapter = opts.chapter||0 opts.chapter = opts.chapter||0
if (ls[0] == "chapter") { opts.chapter++, opts.section = 0, push(opts.chapter+lex.SP+ls[1]) } if (ls[0] == "chapter") { opts.chapter++, opts.section = 0, push(opts.chapter+lex.SP+ls[1]) }
@ -169,13 +182,15 @@ Volcanos(chat.ONSYNTAX, {
}, },
func: function(can, push, text, indent, opts) { var ls = can.core.Split(text, "\t *", "({:})") func: function(can, push, text, indent, opts) { var ls = can.core.Split(text, "\t *", "({:})")
function isKey() { return opts.block == "cmds" && ls[1] == ":" && ls[2] == "{" } function isEnd() { return ls[0] == "}" } function isKey() { return opts.block == "cmds" && ls[1] == ":" && ls[2] == "{" } function isEnd() { return ls[0] == "}" }
function prefix(key, pre) { return key.toLowerCase() == key? "- ": ("+ "+(pre? pre+nfs.PT: "")) } function prefix(key, pre) { return key.slice(0, 1).toLowerCase() == key.slice(0, 1)? "- ": ("+ "+(pre? pre+nfs.PT: "")) }
if (indent == 0) { switch (ls[0]) { if (indent == 0) { switch (ls[0]) {
case "package": opts.package = ls[1]; break case "package": opts.package = ls[1]; break
case "func": if (ls[1] == "(") { push(prefix(ls[5])+ls[2]+nfs.PT+ls[5]); break } case "func": if (ls[1] == "(") { var p = ls.indexOf(")")
push(prefix(ls[p+1])+ls[2]+nfs.PT+ls[p+1]+"()"); break
}
case "const": case "const":
case "var": if (ls[1] == "(") { break } case "var": if (ls[1] == "(") { break }
case "type": push(prefix(ls[1], opts.package)+ls[1]); break case "type": push(prefix(ls[1])+ls[1]+(ls[0]=="type"? "{}": "")); break
} opts.stack = [ls[0]] } else if (indent == 4 && opts.stack[0] == "func") { } opts.stack = [ls[0]] } else if (indent == 4 && opts.stack[0] == "func") {
if (text.indexOf("MergeCommands(") > -1) { opts.block = "cmds" } else if (text.indexOf("}") == 0) { opts.block = "" } if (text.indexOf("MergeCommands(") > -1) { opts.block = "cmds" } else if (text.indexOf("}") == 0) { opts.block = "" }
} else if (indent == 8) { } else if (indent == 8) {
@ -184,7 +199,7 @@ Volcanos(chat.ONSYNTAX, {
if (isKey()) { push("+ "+opts.cmds+lex.SP+ls[0]) } if (isKey()) { push("+ "+opts.cmds+lex.SP+ls[0]) }
} }
}, },
}, mod: {prefix: {"//": code.COMMENT}, keyword: {"go": code.KEYWORD, "module": code.KEYWORD, "require": code.KEYWORD, "replace": code.KEYWORD}}, sum: {}, }, mod: {prefix: {"//": code.COMMENT}, split: {operator: "(=>)"}, keyword: {"go": code.KEYWORD, "module": code.KEYWORD, "require": code.KEYWORD, "replace": code.KEYWORD}}, sum: {},
js: {prefix: {"// ": code.COMMENT}, regexp: {"[A-Z_0-9]+": code.CONSTANT}, js: {prefix: {"// ": code.COMMENT}, regexp: {"[A-Z_0-9]+": code.CONSTANT},
keyword: { keyword: {
"let": code.KEYWORD, "const": code.KEYWORD, "var": code.KEYWORD, "let": code.KEYWORD, "const": code.KEYWORD, "var": code.KEYWORD,
@ -239,7 +254,6 @@ Volcanos(chat.ONSYNTAX, {
}, },
}, json: {split: {operator: "{[:,]}"}, keyword: {"true": code.CONSTANT, "false": code.CONSTANT}}, }, json: {split: {operator: "{[:,]}"}, keyword: {"true": code.CONSTANT, "false": code.CONSTANT}},
css: {prefix: {"// ": code.COMMENT, "/* ": code.COMMENT}, split: {operator: "{[(.,:;&>=)]}"}, css: {prefix: {"// ": code.COMMENT, "/* ": code.COMMENT}, split: {operator: "{[(.,:;&>=)]}"},
func: function(can, push, text) { text.indexOf("/* ") == 0 && push(can.base.trimPrefix(can.base.trimSuffix(text, " */"), "/* ")) },
regexp: { regexp: {
"[-0-9]+deg": code.CONSTANT, "[-0-9]+deg": code.CONSTANT,
"[-0-9]+rem": code.CONSTANT, "[-0-9]+rem": code.CONSTANT,
@ -314,6 +328,7 @@ Volcanos(chat.ONSYNTAX, {
"url": code.FUNCTION, "url": code.FUNCTION,
"contexts": code.CONSTANT, "contexts": code.CONSTANT,
}, include: ["html"], }, include: ["html"],
func: function(can, push, text) { text.indexOf("/* ") == 0 && push(can.base.trimPrefix(can.base.trimSuffix(text, " */"), "/* ")) },
}, },
html: {split: {operator: "<!=/>"}, keyword: { html: {split: {operator: "<!=/>"}, keyword: {
"DOCTYPE": code.KEYWORD, "html": code.KEYWORD, "head": code.KEYWORD, "body": code.KEYWORD, "DOCTYPE": code.KEYWORD, "html": code.KEYWORD, "head": code.KEYWORD, "body": code.KEYWORD,

View File

@ -2,7 +2,7 @@ fieldset.repos div.output>* {
margin:auto; margin:auto;
} }
fieldset.repos div.output table { fieldset.repos div.output table {
border:solid 1px #e2e2e2; border: #e2e2e2solid 1px;
border-radius:5px; border-radius:5px;
color:#4183c4; color:#4183c4;
margin-top:20px; margin-top:20px;
@ -107,4 +107,4 @@ fieldset.repos div.output>div.commit>span {
flex:1; flex:1;
text-align:center; text-align:center;
margin:auto; margin:auto;
} }

View File

@ -6,7 +6,7 @@ fieldset.vimer>div.output>div.layout>div.layout div.content div.complete { backg
fieldset.vimer>div.output>div.layout>div.layout div.content div.complete div.prefix { color:transparent; white-space:pre; float:left; } fieldset.vimer>div.output>div.layout>div.layout div.content div.complete div.prefix { color:transparent; white-space:pre; float:left; }
fieldset.vimer>div.output>div.layout>div.layout div.content div.complete table.content thead { display:none; } fieldset.vimer>div.output>div.layout>div.layout div.content div.complete table.content thead { display:none; }
fieldset.vimer>div.output>div.layout>div.layout div.content div.complete table.content { padding-left:5px; width:unset; max-width:600px; display:block; } fieldset.vimer>div.output>div.layout>div.layout div.content div.complete table.content { padding-left:5px; width:unset; max-width:600px; display:block; }
fieldset.vimer>div.output>div.layout>div.layout>div.layout div.content { border-left:gray solid 1px; border-top:gray solid 1px; } fieldset.vimer>div.output>div.layout>div.layout>div.layout div.content { border-left:var(--box-border); border-top:var(--box-border); }
fieldset.vimer>div.output>div.layout>div.layout div.content.normal tr.line.select>td.line { background-color:blue; color:white; } fieldset.vimer>div.output>div.layout>div.layout div.content.normal tr.line.select>td.line { background-color:blue; color:white; }
fieldset.vimer>div.output>div.layout>div.layout div.content.insert tr.line.select>td.line { background-color:red; color:white; } fieldset.vimer>div.output>div.layout>div.layout div.content.insert tr.line.select>td.line { background-color:red; color:white; }
fieldset.vimer>div.output>div.layout>div.layout div.content.insert div.complete:not(.hide) { display:block; top:unset; } fieldset.vimer>div.output>div.layout>div.layout div.content.insert div.complete:not(.hide) { display:block; top:unset; }
@ -20,4 +20,4 @@ body.black fieldset.vimer>div.output>div.layout>div.layout div.content.normal in
body.black fieldset.vimer>div.output>div.layout>div.layout div.content.insert input.current { caret-color:yellow; } body.black fieldset.vimer>div.output>div.layout>div.layout div.content.insert input.current { caret-color:yellow; }
body.black fieldset.vimer>div.output>div.layout>div.layout div.content div.complete table.content { background-color:#061c3ceb; } body.black fieldset.vimer>div.output>div.layout>div.layout div.content div.complete table.content { background-color:#061c3ceb; }
body.white fieldset.vimer>div.output>div.layout>div.layout div.content div.complete table.content { background-color:aliceblue; } body.white fieldset.vimer>div.output>div.layout>div.layout div.content div.complete table.content { background-color:aliceblue; }
body.white fieldset.vimer>div.output>div.layout>div.layout div.content.insert input.current { caret-color:black; } body.white fieldset.vimer>div.output>div.layout>div.layout div.content.insert input.current { caret-color:black; }

View File

@ -1,18 +1,18 @@
fieldset.plan>div.output td.content { position:relative; } fieldset.plan>div.output td.content { position:relative; }
fieldset.plan>div.output table.content.plan th { text-align:center; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td { vertical-align:top; }
fieldset.plan>div.output table.content.plan td { vertical-align:top; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td.over { border:red solid 1px; }
fieldset.plan>div.output table.content.plan td.over { border:red solid 1px; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td.select { background-color:var(--hover-bg-color); box-shadow:var(--box-shadow); }
fieldset.plan>div.output table.content.plan td.select { background-color:var(--hover-bg-color); } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td:hover { background-color:var(--hover-bg-color); }
fieldset.plan>div.output table.content.plan td:hover { background-color:var(--hover-bg-color); } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td.over { background-color:var(--hover-bg-color); }
fieldset.plan>div.output table.content.plan td.over { background-color:var(--hover-bg-color); } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td div { color:white; padding:10px; margin:10px; }
fieldset.plan>div.output table.content.plan td div { color:white; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td div.date { color:gray; }
fieldset.plan>div.output table.content.plan td div.date { color:gray; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td div.date span.lunar { font-size:12px; }
fieldset.plan>div.output table.content.plan td div.date span.lunar { font-size:12px; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td div.date span.lunar.fest { color:red; }
fieldset.plan>div.output table.content.plan td div.date span.lunar.fest { color:red; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td div.date span.lunar.term { color:green; }
fieldset.plan>div.output table.content.plan td div.date span.lunar.term { color:green; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td div.prepare { background-color:#0000ff70; }
fieldset.plan>div.output table.content.plan td div.prepare { background-color:#0000ff70; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td div.process { background-color:#00800070; }
fieldset.plan>div.output table.content.plan td div.process { background-color:#00800070; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td div.cancel { background-color:#ff000070; text-decoration:line-through; }
fieldset.plan>div.output table.content.plan td div.cancel { background-color:#ff000070; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td div.finish { background-color:gray; }
fieldset.plan>div.output table.content.plan td div.finish { background-color:gray; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content tr:first-child { height:30px; position:sticky; top:2px; }
fieldset.plan>div.output table.content.plan tr:first-child { height:30px; position:sticky; top:2px; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content th:first-child { width:40px; position:sticky; left:2px; }
fieldset.plan>div.output table.content.plan th:first-child { width:40px; position:sticky; left:2px; } fieldset.plan>div.output>div.layout>div.layout>div.profile>table.content tr:first-child { height:30px; position:sticky; top:2px; }

View File

@ -1,9 +1,7 @@
Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(can, target), can._display_heights = {} Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(can, target), can._display_heights = {}, can.list = {}; var ls = can.misc.SearchHash(can)
can.list = {}; var ls = can.misc.SearchHash(can) can.ui = can.onappend.layout(can), can.onmotion.hidden(can, can.ui.profile), can.onmotion.hidden(can, can.ui.display), can.isCmdMode() || can.onmotion.hidden(can, can.ui.project)
can.ui = can.onappend.layout(can), can.onmotion.hidden(can, can.ui.profile), can.onmotion.hidden(can, can.ui.display) can.onimport[can.Option("scale")||team.WEEK](can, msg), can.Status(mdb.COUNT, msg.Length()), can.ui.filter.placeholder = `search in ${ msg.Length() } items`, can.onimport.layout(can)
can.onmotion.hidden(can, can.ui.project) var item; if (can.isCmdMode() && ls.length > 0) { item = can.list[can.core.Keys(ls)] } else if (can.sup.task) { item = can.list[can.core.Keys(can.sup.task.pod, can.sup.task.zone, can.sup.task.id)] } item && item.click()
can.onimport[can.Option("scale")||team.WEEK](can, msg), can.Status(mdb.COUNT, msg.Length()), can.onimport.layout(can)
var item; if (can.isCmdMode() && ls.length > 0) { item = can.list[can.core.Keys(ls[0], ls[1])] } else if (can.sup.task) { item = can.list[can.core.Keys(can.sup.task.zone, can.sup.task.id)] } item && item.click()
}, },
_content: function(can, msg, head, list, key, get, set) { var begin_time = can.base.Date(can.Option(team.BEGIN_TIME)); can.sup.task && (can.sup.task._target = null) _content: function(can, msg, head, list, key, get, set) { var begin_time = can.base.Date(can.Option(team.BEGIN_TIME)); can.sup.task && (can.sup.task._target = null)
var hash = {}; msg.Table(function(value, index) { var k = key(can.base.Date(value.begin_time)); hash[k] = (hash[k]||[]).concat([value]) }) var hash = {}; msg.Table(function(value, index) { var k = key(can.base.Date(value.begin_time)); hash[k] = (hash[k]||[]).concat([value]) })
@ -25,7 +23,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
} }, draggable: time != undefined, title: can.onexport.title(can, task), _init: function(target) { } }, draggable: time != undefined, title: can.onexport.title(can, task), _init: function(target) {
var item = can.onimport.item(can, {nick: task.name+nfs.DF+task.text}, function() { can.onmotion.delay(can, function() { var item = can.onimport.item(can, {nick: task.name+nfs.DF+task.text}, function() { can.onmotion.delay(can, function() {
can.onmotion.select(can, can.ui.content, html.TD, target.parentNode), can.onimport._profile(can, task), can.onimport._display(can, task), can.onimport.layout(can) can.onmotion.select(can, can.ui.content, html.TD, target.parentNode), can.onimport._profile(can, task), can.onimport._display(can, task), can.onimport.layout(can)
}) }, null, can.ui.project); task._target = target, target.onclick = function(event) { item.click() }, can.list[can.core.Keys(task.zone, task.id)] = target }) }, null, can.ui.project); task._target = target, target.onclick = function(event) { item.click() }, can.list[can.core.Keys(task.pod, task.zone, task.id)] = target
}} }}
}), }),
} }, } },
@ -43,7 +41,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
}, },
_display: function(can, task) { can.onmotion.toggle(can, can.ui.display, true) _display: function(can, task) { can.onmotion.toggle(can, can.ui.display, true)
if (can.onmotion.cache(can, function() { return can.sup.task = task, can.Status(task), [task.pod, task.zone, task.id].join(nfs.PT) }, can.ui.display)) { return } if (can.onmotion.cache(can, function() { return can.sup.task = task, can.Status(task), [task.pod, task.zone, task.id].join(nfs.PT) }, can.ui.display)) { return }
task[ctx.EXTRA_INDEX] && can.onappend.plugin(can, {index: task[ctx.EXTRA_INDEX], args: task[ctx.EXTRA_ARGS], height: can.ConfHeight()/2-2*html.ACTION_HEIGHT}, function(sub, meta) { task[ctx.EXTRA_INDEX] && can.onappend.plugin(can, {space: task.pod, index: task[ctx.EXTRA_INDEX], args: task[ctx.EXTRA_ARGS], height: can.ConfHeight()/2-2*html.ACTION_HEIGHT}, function(sub, meta) {
sub.run = function(event, cmds, cb) { can.request(event, kit.Dict(team.TASK_POD, task.pod, team.TASK_ZONE, task.zone, team.TASK_ID, task.id)) sub.run = function(event, cmds, cb) { can.request(event, kit.Dict(team.TASK_POD, task.pod, team.TASK_ZONE, task.zone, team.TASK_ID, task.id))
can.page.style(can, sub._output, html.MAX_HEIGHT, ""), can.runAction(event, ice.RUN, [task[mdb.ZONE], task[mdb.ID]].concat(cmds), cb) can.page.style(can, sub._output, html.MAX_HEIGHT, ""), can.runAction(event, ice.RUN, [task[mdb.ZONE], task[mdb.ID]].concat(cmds), cb)
} }
@ -62,7 +60,6 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
}, },
week: function(can, msg) { var head = can.onexport.head(can, team.HOUR) week: function(can, msg) { var head = can.onexport.head(can, team.HOUR)
var list = [0]; for (var i = 7; i < 24; i++) { list.push(can.base.Number(i, 2)) } var list = [0]; for (var i = 7; i < 24; i++) { list.push(can.base.Number(i, 2)) }
// var list = [0]; for (var i = 7; i < 24; i++) { list.push(can.base.Number(i, 2)+":00") }
function key(time) { return time.getDay()+" "+can.base.Number(time.getHours(), 2) } function key(time) { return time.getDay()+" "+can.base.Number(time.getHours(), 2) }
function get(begin_time, col, row, hash) { return hash[col-1+" "+list[row]] } function get(begin_time, col, row, hash) { return hash[col-1+" "+list[row]] }
function set(begin_time, col, row) { return can.base.Time(can.base.DateAdd(begin_time, -begin_time.getDay()+col-1), "%y-%m-%d ")+list[row] } function set(begin_time, col, row) { return can.base.Time(can.base.DateAdd(begin_time, -begin_time.getDay()+col-1), "%y-%m-%d ")+list[row] }
@ -130,7 +127,7 @@ Volcanos(chat.ONACTION, {list: [
}, },
insertTask: function(event, can, time) { var msg = can.sup.request(event, {begin_time: time}) insertTask: function(event, can, time) { var msg = can.sup.request(event, {begin_time: time})
can.user.input(event, can, can.Conf([ctx.FEATURE, mdb.INSERT]), function(args) { can.user.input(event, can, can.Conf([ctx.FEATURE, mdb.INSERT]), function(args) {
can.runAction(event, mdb.INSERT, [mdb.ZONE, args[1], team.BEGIN_TIME, time].concat(args)) can.runAction(event, mdb.INSERT, [web.SPACE, args[1], mdb.ZONE, args[3], team.BEGIN_TIME, time].concat(args.slice(4)))
}) })
}, },
modifyTask: function(event, can, task, key, value) { can.runAction(can.request(event, task, can.Option()), mdb.MODIFY, [key, value], function() { can.Update() }) }, modifyTask: function(event, can, task, key, value) { can.runAction(can.request(event, task, can.Option()), mdb.MODIFY, [key, value], function() { can.Update() }) },
@ -147,9 +144,9 @@ Volcanos(chat.ONACTION, {list: [
score: function(event, can, key, value) { can.onaction._filter(event, can, key, value) }, score: function(event, can, key, value) { can.onaction._filter(event, can, key, value) },
view: function(event, can, key, value) { can.Action(key, value), can.onmotion.clear(can, can.ui.project), can.onmotion.clear(can, can.ui.content), can.core.CallFunc([can.onimport, can.Option("scale")], [can, can._msg]) }, view: function(event, can, key, value) { can.Action(key, value), can.onmotion.clear(can, can.ui.project), can.onmotion.clear(can, can.ui.content), can.core.CallFunc([can.onimport, can.Option("scale")], [can, can._msg]) },
}) })
Volcanos(chat.ONEXPORT, {list: [mdb.COUNT, team.BEGIN_TIME, mdb.ZONE, mdb.ID, mdb.TYPE, mdb.NAME, mdb.TEXT], Volcanos(chat.ONEXPORT, {list: [mdb.COUNT, ice.POD, team.BEGIN_TIME, mdb.ZONE, mdb.ID, mdb.TYPE, mdb.NAME, mdb.TEXT],
span: function(can) { return kit.Dict(team.DAY, 24*3600*1000, team.WEEK, 7*24*3600*1000, team.MONTH, 30*24*3600*1000, team.YAER, 365*24*3600*1000, team.LONG, 365*24*3600*1000)[can.Option("scale")]||0 }, span: function(can) { return kit.Dict(team.DAY, 24*3600*1000, team.WEEK, 7*24*3600*1000, team.MONTH, 30*24*3600*1000, team.YEAR, 365*24*3600*1000, team.LONG, 365*24*3600*1000)[can.Option("scale")]||0 },
hash: function(can, task) { if (!can.isCmdMode()) { return } location.hash = [task.zone, task.id].join(nfs.DF) }, hash: function(can, task) { if (!can.isCmdMode()) { return } location.hash = [task.pod, task.zone, task.id].join(nfs.DF) },
head: function(can, scale) { if ([team.YEAR, team.LONG].indexOf(scale) > -1) { return } return [scale].concat(can.user.time(can, "", "%W")) }, head: function(can, scale) { if ([team.YEAR, team.LONG].indexOf(scale) > -1) { return } return [scale].concat(can.user.time(can, "", "%W")) },
name: function(can, task) { return task.name }, name: function(can, task) { return task.name },
text: function(can, task) { return task.name+": "+(task.text||"") }, text: function(can, task) { return task.name+": "+(task.text||"") },

View File

@ -14,8 +14,8 @@ fieldset.word>div.output img { max-height:100%; max-width:100%; }
fieldset.word>div.output video { max-height:100%; width:100%; } fieldset.word>div.output video { max-height:100%; width:100%; }
fieldset.word>div.output iframe { height:480px; width:100%; } fieldset.word>div.output iframe { height:480px; width:100%; }
fieldset.word>div.output svg.story[data-index] text { cursor:pointer; } fieldset.word>div.output svg.story[data-index] text { cursor:pointer; }
fieldset.word>div.output input.story[type=button] { font-family:system-ui; font-weight:bold; padding:20px 40px; margin:10px; height:64px; } fieldset.word>div.output input.story[type=button] { font-family:system-ui; font-weight:bold; padding:20px 40px; margin:10px; height:64px; box-shadow:var(--box-shadow); }
fieldset.word>div.output fieldset.web.code.inner.output div.output td.line { border-right:gray solid 1px; } fieldset.word>div.output fieldset.web.code.inner.output div.output td.line { border-right:var(--box-border); }
fieldset.word>div.output fieldset.story { margin:20px 0; } fieldset.word>div.output fieldset.story { margin:20px 0; }
fieldset.word>div.output fieldset.story>form.option>div.icon.delete { display:none; } fieldset.word>div.output fieldset.story>form.option>div.icon.delete { display:none; }

View File

@ -194,13 +194,13 @@ Volcanos(chat.ONACTION, {list: [
}) })
Volcanos(chat.ONEXPORT, { Volcanos(chat.ONEXPORT, {
args: function(can) { return can.page.SelectArgs(can, can._option, "", function(target) { return target.value }) }, args: function(can) { return can.page.SelectArgs(can, can._option, "", function(target) { return target.value }) },
output: function(can, msg) {}, action: function(can, button, line) {}, record: function(can, value, key, line) {}, output: function(can, msg) {}, action: function(can, button, line) {}, record: function(can, value, key, data) {},
marginTop: function() { return 0 }, marginBottom: function() { return 0 }, marginTop: function() { return 0 }, marginBottom: function() { return 0 },
actionHeight: function(can) { return can.page.ClassList.has(can, can._target, html.OUTPUT)? 0: html.ACTION_HEIGHT }, actionHeight: function(can) { return can.page.ClassList.has(can, can._target, html.OUTPUT)? 0: html.ACTION_HEIGHT },
statusHeight: function(can) { return can.page.ClassList.has(can, can._target, html.OUTPUT) || !can.page.isDisplay(can._status) || can._status.innerHTML == "" || (can._target.offsetHeight > 0 && can._status.offsetHeight == 0)? 0: html.ACTION_HEIGHT }, statusHeight: function(can) { return can.page.ClassList.has(can, can._target, html.OUTPUT) || !can.page.isDisplay(can._status) || can._status.innerHTML == "" || (can._target.offsetHeight > 0 && can._status.offsetHeight == 0)? 0: html.ACTION_HEIGHT },
title: function(can, title) { can.isCmdMode() && can.user.title(title) }, title: function(can, title) { can.isCmdMode() && can.user.title(title) },
link: function(can) { var meta = can.Conf(), args = can.Option(); can.misc.Search(can, log.DEBUG) == ice.TRUE && (args[log.DEBUG] = ice.TRUE) link: function(can) { var meta = can.Conf(), args = can.Option(); can.misc.Search(can, log.DEBUG) == ice.TRUE && (args[log.DEBUG] = ice.TRUE)
args.pod = meta.space||meta.pod, args.cmd = meta.index||can.core.Keys(meta.ctx, meta.cmd) args.pod = meta._space||meta.space||meta.pod, args.cmd = meta.index||can.core.Keys(meta.ctx, meta.cmd)
return can.misc.MergePodCmd(can, args, true) return can.misc.MergePodCmd(can, args, true)
}, },
}) })

View File

@ -1,6 +1,6 @@
div.output.json div.item:hover { background-color:transparent; color:unset; } div.output.json div.item:hover { background-color:transparent; color:unset; }
div.output.json div.item div.item { padding-left:15px; border:transparent solid 1px; border-left:lightblue dashed 1px; margin-left:5px; } div.output.json div.item div.item { padding-left:15px; border:transparent solid 1px; border-left:lightblue dashed 1px; margin-left:5px; }
div.output.json div.item div.item:hover { border:gray solid 1px; } div.output.json div.item div.item:hover { border:var(--box-border); }
div.output.json div.item label.nonce { color:#9cbeca4f; } div.output.json div.item label.nonce { color:#9cbeca4f; }
div.output.json div.item span.string { color:orange; } div.output.json div.item span.string { color:orange; }
div.output.json label { user-select:none; } div.output.json label { user-select:none; }

View File

@ -93,33 +93,47 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
}, zone._target = sub._target, can.ui.zone[zone.name].refresh = function() { sub.Update() } }, zone._target = sub._target, can.ui.zone[zone.name].refresh = function() { sub.Update() }
}, zone._target) } }, }, zone._target) } },
zone: function(can, list, target) { zone: function(can, list, target) {
return can.page.Append(can, target, can.core.List(list, function(zone) { can.base.isString(zone) && (zone = {name: zone}); return zone && {view: [[html.ZONE, zone.name]], list: [ return can.page.Append(can, target, can.core.List(list, function(zone) { can.base.isString(zone) && (zone = {name: zone}); if (!zone) { return }
{view: html.ITEM, inner: can.user.trans(can, zone.name), _init: function(target) { zone._legend = target }, onclick: function() { zone._layout = function() { var height = target.offsetHeight, count = 0
if (zone._delay_init) { zone._delay_init(zone._target, zone), delete(zone._delay_init) } can.page.SelectChild(can, target, "", function(target) {
can.onmotion.toggle(can, zone._action), can.onmotion.toggle(can, zone._target) can.page.SelectChild(can, target, html.DIV_ITEM, function(target) { height -= target.offsetHeight })
}, oncontextmenu: function(event) { var menu = zone._menu can.page.SelectChild(can, target, html.DIV_ACTION, function(target) { height -= target.offsetHeight })
menu? can.user.carteRight(event, can, menu.meta, menu.list||can.core.Item(menu.meta), can.base.isFunc(menu)? menu: function(event, button, meta, carte) { can.page.SelectChild(can, target, html.DIV_LIST, function(target) { count += can.page.isDisplay(target)? 1: 0 })
can.runAction(event, button), carte.close() })
}): can.onmotion.clearCarte(can) count && can.page.SelectChild(can, target, "", function(target) {
}}, can.page.SelectChild(can, target, html.DIV_LIST, function(target) {
{view: html.ACTION, _init: function(target) { zone._action = target can.page.style(can, target, html.HEIGHT, can.page.isDisplay(target)? height/count: "")
can.onappend._action(can, [{type: html.TEXT, name: mdb.SEARCH, _init: function(target) { zone._search = target }, onkeyup: function(event) { })
if (event.target.value == "") { can.page.Select(can, zone._target, html.DIV_EXPAND, function(target) { can.page.ClassList.del(can, target, cli.OPEN) }) } })
can.page.Select(can, zone._target, html.DIV_LIST, function(item) { can.onmotion.toggle(can, item, event.target.value != "") }) }
can.onmotion.delayOnce(can, function() { can.onkeymap.selectItems(event, can, zone._target) }, event.target.value.length<3? 500: 150) return {view: [[html.ZONE, zone.name]], list: [
}}], target, {}) {view: html.ITEM, inner: can.user.trans(can, zone.name), _init: function(target) { zone._legend = target }, onclick: function() {
}}, if (zone._delay_init) { zone._delay_init(zone._target, zone), delete(zone._delay_init) }
{view: html.LIST, _init: function(target) { can.ui.zone = can.ui.zone||{}, can.ui.zone[zone.name] = zone, zone._target = target can.onmotion.toggle(can, zone._action), can.onmotion.toggle(can, zone._action.nextSibling), zone._toggle && zone._toggle()
zone._total = function(total) { return can.page.Modify(can, zone._search, {placeholder: "search in "+total+" items"}), total } }, oncontextmenu: function(event) { var menu = zone._menu
zone._icon = function(list) { menu? can.user.carteRight(event, can, menu.meta, menu.list||can.core.Item(menu.meta), can.base.isFunc(menu)? menu: function(event, button, meta, carte) {
can.page.Select(can, zone._legend, html.SPAN_ICON, function(target) { can.page.Remove(can, target) }) can.runAction(event, button), carte.close()
can.core.Item(list, function(name, button) { can.onimport._icon(can, name, button, zone._legend) }) }): can.onmotion.clearCarte(can)
} }},
zone.refresh = function() { can.onmotion.clear(can, target), zone._init(target, zone) } {view: html.ACTION, _init: function(target) { zone._action = target
can.base.isFunc(zone._init) && (zone._menu = zone._init(target, zone)||zone._menu) can.onappend._action(can, [{type: html.TEXT, name: mdb.SEARCH, _init: function(target) { zone._search = target }, onkeyup: function(event) {
if (zone._delay_init) { can.onmotion.hidden(can, zone._action), can.onmotion.hidden(can, zone._target) } if (event.target.value == "") { can.page.Select(can, zone._target, html.DIV_EXPAND, function(target) { can.page.ClassList.del(can, target, cli.OPEN) }) }
}}, can.page.Select(can, zone._target, html.DIV_LIST, function(item) { can.onmotion.toggle(can, item, event.target.value != "") })
]} })) can.onmotion.delayOnce(can, function() { can.onkeymap.selectItems(event, can, zone._target) }, event.target.value.length<3? 500: 150)
}}], target, {})
}},
{view: html.LIST, _init: function(target) { can.ui.zone = can.ui.zone||{}, can.ui.zone[zone.name] = zone, zone._target = target
zone._total = function(total) { return can.page.Modify(can, zone._search, {placeholder: "search in "+total+" items"}), total }
zone._icon = function(list) {
can.page.Select(can, zone._legend, html.SPAN_ICON, function(target) { can.page.Remove(can, target) })
can.core.Item(list, function(name, button) { can.onimport._icon(can, name, button, zone._legend) })
}
zone.refresh = function() { can.onmotion.clear(can, target), zone._init(target, zone) }
can.base.isFunc(zone._init) && (zone._menu = zone._init(target, zone)||zone._menu)
if (zone._delay_init) { can.onmotion.hidden(can, zone._action), can.onmotion.hidden(can, zone._target) }
}},
]}
}))
}, },
tree: function(can, list, field, split, cb, target, node) { tree: function(can, list, field, split, cb, target, node) {
node = node||{"": target}; can.core.List(list, function(item) { item[field] && can.core.List(item[field].split(split), function(value, index, array) { if (!value) { return } node = node||{"": target}; can.core.List(list, function(item) { item[field] && can.core.List(item[field].split(split), function(value, index, array) { if (!value) { return }

View File

@ -78,11 +78,12 @@ var mdb = {
QS: ice.QS, AT: ice.AT, QS: ice.QS, AT: ice.AT,
EQ: ice.EQ, FS: ice.FS, EQ: ice.EQ, FS: ice.FS,
} }
var web = {CHAT: "chat", var web = {CHAT: "chat", LINK: "link",
SPACE: "space", DREAM: "dream", SHARE: "share", SPIDE: "spide", SPACE: "space", DREAM: "dream", SHARE: "share", SPIDE: "spide",
WEBSITE: "website", DRAW: "draw", PLAY: "play", CLEAR: "clear", REFRESH: "refresh", RESIZE: "resize", FILTER: "filter", INPUT: "input", WEBSITE: "website", DRAW: "draw", PLAY: "play", CLEAR: "clear", REFRESH: "refresh", RESIZE: "resize", FILTER: "filter", INPUT: "input",
CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", DOWNLOAD: "download", TOIMAGE: "toimage", CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", DOWNLOAD: "download", TOIMAGE: "toimage",
SHARE_CACHE: "/share/cache/", SHARE_LOCAL: "/share/local/", SHARE_CACHE: "/share/cache/", SHARE_LOCAL: "/share/local/",
WORKER: "worker", SERVER: "server", GATEWAY: "gateway",
AT: "@", QS: "?", HTTP: "http", AT: "@", QS: "?", HTTP: "http",
GET: "GET", PUT: "PUT", POST: "POST", DELETE: "DELETE", GET: "GET", PUT: "PUT", POST: "POST", DELETE: "DELETE",