mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt vimer.js
This commit is contained in:
parent
1019455633
commit
44983d30b6
14
frame.js
14
frame.js
@ -331,7 +331,7 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", _init: function(can, meta, list,
|
|||||||
can.onkeymap.input(event, can), can.onmotion.selectField(event, can)
|
can.onkeymap.input(event, can), can.onmotion.selectField(event, can)
|
||||||
break
|
break
|
||||||
case html.TEXTAREA:
|
case html.TEXTAREA:
|
||||||
switch (event.key) { case lang.TAB: can.onkeymap.insertText(event.target, ice.TB); can.onkeymap.prevent(event); break }
|
// switch (event.key) { case lang.TAB: can.onkeymap.insertText(event.target, ice.TB); can.onkeymap.prevent(event); break }
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -541,12 +541,6 @@ Volcanos(chat.ONLAYOUT, {help: "页面布局", _init: function(can, target) { ta
|
|||||||
Volcanos(chat.ONMOTION, {help: "动态特效", _init: function(can, target) {
|
Volcanos(chat.ONMOTION, {help: "动态特效", _init: function(can, target) {
|
||||||
window.addEventListener(html.ORIENTATIONCHANGE, function(event) { can.onengine.signal(can, html.ORIENTATIONCHANGE) })
|
window.addEventListener(html.ORIENTATIONCHANGE, function(event) { can.onengine.signal(can, html.ORIENTATIONCHANGE) })
|
||||||
can.onmotion.float.auto(can, target)
|
can.onmotion.float.auto(can, target)
|
||||||
target.onclick = function(event) {
|
|
||||||
if (can.page.tagis(["input", "select", "textarea"], event.target)) { return }
|
|
||||||
can.page.Select(can, target, can.page.Keys("div.float", "fieldset.float"), function(item) {
|
|
||||||
can.page.Remove(can, item)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
float: {_hash: {},
|
float: {_hash: {},
|
||||||
del: function(can, key) {
|
del: function(can, key) {
|
||||||
@ -604,7 +598,7 @@ Volcanos(chat.ONMOTION, {help: "动态特效", _init: function(can, target) {
|
|||||||
if (pos) { item.scrollTo && item.scrollTo(0, pos-1); return item }
|
if (pos) { item.scrollTo && item.scrollTo(0, pos-1); return item }
|
||||||
}).length > 0
|
}).length > 0
|
||||||
},
|
},
|
||||||
delay: function(can, cb) { can.core.Timer(100, cb) },
|
delay: function(can, cb, interval) { can.core.Timer(interval||100, cb) },
|
||||||
focus: function(can, target) { if (!target) { return }
|
focus: function(can, target) { if (!target) { return }
|
||||||
target.setSelectionRange && target.setSelectionRange(0, -1), target.focus()
|
target.setSelectionRange && target.setSelectionRange(0, -1), target.focus()
|
||||||
},
|
},
|
||||||
@ -792,6 +786,10 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互", _focus: [], _init: function(can,
|
|||||||
if (window.webview) {
|
if (window.webview) {
|
||||||
if (event.target.tagName == "A") { can.user.open(event.target.href) }
|
if (event.target.tagName == "A") { can.user.open(event.target.href) }
|
||||||
}
|
}
|
||||||
|
if (can.page.tagis(["input", "select", "textarea"], event.target)) { return }
|
||||||
|
can.page.Select(can, document.body, can.page.Keys("fieldset.input.key.float"), function(item) {
|
||||||
|
can.page.Remove(can, item)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
can.onkeymap._build(can), document.body.onkeydown = function(event) {
|
can.onkeymap._build(can), document.body.onkeydown = function(event) {
|
||||||
if (event.metaKey) { if (window.webview) {
|
if (event.metaKey) { if (window.webview) {
|
||||||
|
@ -84,6 +84,7 @@ Volcanos("user", {help: "用户操作", info: {}, agent: {
|
|||||||
"plugin": "插件",
|
"plugin": "插件",
|
||||||
"prev": "上一页", "next": "下一页",
|
"prev": "上一页", "next": "下一页",
|
||||||
|
|
||||||
|
"trash": "删除",
|
||||||
"open": "打开", "close": "关闭",
|
"open": "打开", "close": "关闭",
|
||||||
"start": "启动", "stop": "停止",
|
"start": "启动", "stop": "停止",
|
||||||
"begin": "开始", "end": "结束",
|
"begin": "开始", "end": "结束",
|
||||||
@ -229,6 +230,7 @@ Volcanos("user", {help: "用户操作", info: {}, agent: {
|
|||||||
return can.base.isString(item)? {view: html.ITEM, list: [{text: can.user.trans(can, item), onclick: function(event) {
|
return can.base.isString(item)? {view: html.ITEM, list: [{text: can.user.trans(can, item), onclick: function(event) {
|
||||||
can.user.isMobile && can.page.Remove(can, ui._target)
|
can.user.isMobile && can.page.Remove(can, ui._target)
|
||||||
can.base.isFunc(cb) && cb(event, item, meta, index)
|
can.base.isFunc(cb) && cb(event, item, meta, index)
|
||||||
|
can.onkeymap.prevent(event)
|
||||||
}, onmouseenter: function(event) {
|
}, onmouseenter: function(event) {
|
||||||
carte._float && can.page.Remove(can, carte._float._target)
|
carte._float && can.page.Remove(can, carte._float._target)
|
||||||
} }] }: can.base.isArray(item)? {view: html.ITEM, list: [{text: can.user.trans(can, item[0])+" -> "}], onmouseenter: function(event) {
|
} }] }: can.base.isArray(item)? {view: html.ITEM, list: [{text: can.user.trans(can, item[0])+" -> "}], onmouseenter: function(event) {
|
||||||
@ -258,7 +260,7 @@ Volcanos("user", {help: "用户操作", info: {}, agent: {
|
|||||||
},
|
},
|
||||||
|
|
||||||
input: function(event, can, form, cb, button) { if (!form || form.length == 0) { return cb() }
|
input: function(event, can, form, cb, button) { if (!form || form.length == 0) { return cb() }
|
||||||
var msg = can.request(event)
|
var msg = can.request(event); event = event._event||event
|
||||||
var ui = can.page.Append(can, document.body, [{view: [html.INPUT], style: {left: 0, top: 0}, list: [
|
var ui = can.page.Append(can, document.body, [{view: [html.INPUT], style: {left: 0, top: 0}, list: [
|
||||||
{view: "content", list: [{view: [html.OPTION, html.TABLE], list: can.core.List(form, function(item) {
|
{view: "content", list: [{view: [html.OPTION, html.TABLE], list: can.core.List(form, function(item) {
|
||||||
item = can.base.isString(item)? {type: html.TEXT, name: item}: item.length > 0? {type: html.SELECT, name: item[0], values: item.slice(1)}: item
|
item = can.base.isString(item)? {type: html.TEXT, name: item}: item.length > 0? {type: html.SELECT, name: item[0], values: item.slice(1)}: item
|
||||||
|
@ -115,7 +115,7 @@ Volcanos(chat.ONPLUGIN, {help: "注册插件",
|
|||||||
})
|
})
|
||||||
}),
|
}),
|
||||||
"alert": shy("提示", {}, ["text", "list", "back"], function(can, msg, cmds) {
|
"alert": shy("提示", {}, ["text", "list", "back"], function(can, msg, cmds) {
|
||||||
can.user.alert(cmds[0])
|
cmds && cmds[0] && can.user.alert(cmds[0])
|
||||||
}),
|
}),
|
||||||
"info": shy("信息", {}, ["text", "list", "back"], function(can, msg, cmds) {
|
"info": shy("信息", {}, ["text", "list", "back"], function(can, msg, cmds) {
|
||||||
msg.Echo("hello world")
|
msg.Echo("hello world")
|
||||||
|
@ -16,12 +16,13 @@ fieldset.inner>div.output div.content td.text span.datatype { color:lightgreen;
|
|||||||
fieldset.inner>div.output div.content td.text span.function { color:cyan; font-weight:bold; }
|
fieldset.inner>div.output div.content td.text span.function { color:cyan; font-weight:bold; }
|
||||||
fieldset.inner>div.output div.content td.text span.constant { color:magenta; }
|
fieldset.inner>div.output div.content td.text span.constant { color:magenta; }
|
||||||
fieldset.inner>div.output div.content td.text span.string { color:magenta; }
|
fieldset.inner>div.output div.content td.text span.string { color:magenta; }
|
||||||
|
fieldset.inner>div.output td.content iframe { border:0; }
|
||||||
|
|
||||||
fieldset.inner>div.output td.content>div.tabs { display:none; }
|
fieldset.inner>div.output td.content>div.tabs { display:none; }
|
||||||
fieldset.inner>div.output td.content>div.path { display:none; }
|
fieldset.inner>div.output td.content>div.path { display:none; }
|
||||||
fieldset.inner div.output fieldset.toolkit { background-color:#0e3369b3; position:absolute; bottom:0px; right:0px; }
|
fieldset.inner div.output fieldset.toolkit { position:absolute; bottom:0px; right:0px; }
|
||||||
fieldset.inner>div.output fieldset.toolkit>div.output>fieldset { display:none; }
|
fieldset.inner>div.output fieldset.toolkit>div.output>fieldset { display:none; }
|
||||||
fieldset.inner>div.output fieldset.toolkit>div.output>fieldset.select { display:block; }
|
fieldset.inner>div.output fieldset.toolkit>div.output>fieldset.select { background-color:#0e3369b3; color:white; display:block; }
|
||||||
fieldset.inner>div.status legend { background-color:#0d969f8a; padding:0px 10px; border-left:solid 2px red; height:30px; float:right; }
|
fieldset.inner>div.status legend { background-color:#0d969f8a; padding:0px 10px; border-left:solid 2px red; height:30px; float:right; }
|
||||||
fieldset.inner>div.status legend.select { background-color:green; }
|
fieldset.inner>div.status legend.select { background-color:green; }
|
||||||
fieldset.inner>div.status legend:hover { background-color:green; }
|
fieldset.inner>div.status legend:hover { background-color:green; }
|
||||||
@ -53,6 +54,8 @@ body.white.simple fieldset.inner>div.output div.content td.text span.string { co
|
|||||||
body.white.simple fieldset.inner>div.output div.content td.text span.function { color:#795e26; }
|
body.white.simple fieldset.inner>div.output div.content td.text span.function { color:#795e26; }
|
||||||
body.white.simple fieldset.inner>div.output div.content td.text span.keyword { color:blue; }
|
body.white.simple fieldset.inner>div.output div.content td.text span.keyword { color:blue; }
|
||||||
|
|
||||||
|
body.white.simple>div.carte div.item:hover { background-color:#e3e6f1; }
|
||||||
|
|
||||||
body.mobile fieldset.inner>form.option input[name=file] { width:90px; }
|
body.mobile fieldset.inner>form.option input[name=file] { width:90px; }
|
||||||
body.mobile fieldset.plugin.inner div.action { display:none; }
|
body.mobile fieldset.plugin.inner div.action { display:none; }
|
||||||
body.mobile.landscape fieldset.plugin.inner div.action { display:contents; }
|
body.mobile.landscape fieldset.plugin.inner div.action { display:contents; }
|
||||||
|
@ -6,11 +6,12 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
|
|
||||||
can.onengine.plugin(can, can.onplugin)
|
can.onengine.plugin(can, can.onplugin)
|
||||||
can.onmotion.clear(can), can.onlayout.profile(can)
|
can.onmotion.clear(can), can.onlayout.profile(can)
|
||||||
can.page.styleWidth(can, can.ui.project, 180)
|
can.page.styleWidth(can, can.ui.project, 240)
|
||||||
can.onimport._project(can, can.ui.project)
|
can.onimport._project(can, can.ui.project)
|
||||||
can.onimport._profile(can, can.ui.profile)
|
can.onimport._profile(can, can.ui.profile)
|
||||||
can.onimport._display(can, can.ui.display)
|
can.onimport._display(can, can.ui.display)
|
||||||
can.base.isFunc(cb) && cb(msg)
|
can.base.isFunc(cb) && cb(msg)
|
||||||
|
can.ui._content = can.ui.content
|
||||||
|
|
||||||
switch (can.Mode()) {
|
switch (can.Mode()) {
|
||||||
case "simple": can.onimport._simple(can); break
|
case "simple": can.onimport._simple(can); break
|
||||||
@ -130,41 +131,68 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
},
|
},
|
||||||
project: function(can, path) {
|
project: function(can, path) {
|
||||||
can.onimport.zone(can, [
|
can.onimport.zone(can, [
|
||||||
{name: "source", _init: function(view) { var total = 0
|
{name: "source", _init: function(target) { var total = 0
|
||||||
function show(view) {
|
function show(target) { can.run(can.request({}, {dir_root: path, dir_deep: true}), [ice.PWD], function(msg) { var list = msg.Table()
|
||||||
can.run(can.request({}, {dir_root: path, dir_deep: true}), [ice.PWD], function(msg) { var list = msg.Table()
|
can.core.List(list, function(item) { if (can.Option(nfs.FILE).indexOf(item.path) == 0) { item.expand = true } })
|
||||||
can.core.List(list, function(item) { if (can.Option(nfs.FILE).indexOf(item.path) == 0) { item.expand = true } })
|
can.onimport.tree(can, list, nfs.PATH, ice.PS, function(event, item) {
|
||||||
can.onimport.tree(can, list, nfs.PATH, ice.PS, function(event, item) {
|
can.onimport.tabview(can, path, item.path) // 显示文件
|
||||||
can.onimport.tabview(can, path, item.path) // 显示文件
|
}, target), can.Status("文件数", total += msg.Length())
|
||||||
}, view), can.Status("文件数", total += msg.Length())
|
}, true) } if (path.length == 1) { return show(target) }
|
||||||
}, true)
|
|
||||||
}
|
can.onimport.zone(can, can.core.List(path, function(path) { return {name: path, _init: function(target) { show(target) }} }), target)
|
||||||
if (path.length == 1) {
|
can.onmotion.delay(can, function() { target.previousSibling.innerHTML = "" })
|
||||||
show(view)
|
|
||||||
} else {
|
|
||||||
var ui = can.onimport.zone(can, can.core.List(path, function(path) { return {name: path, _init: function(view) {
|
|
||||||
show(view)
|
|
||||||
}} }), view); can.onmotion.delay(can, function() { view.previousSibling.innerHTML = "" })
|
|
||||||
}
|
|
||||||
}},
|
}},
|
||||||
{name: "module", _init: function(view) {
|
{name: "plugin", _init: function(target) {
|
||||||
|
can.onimport.tree(can, can.core.Item(can.onengine.plugin.meta, function(key) { return {index: can.base.trimPrefix(key, "can.")} }), ctx.INDEX, ice.PT, function(event, item) {
|
||||||
|
can.onimport.tabview(can, can.Option(nfs.PATH), can.core.Keys("can", item.index), ctx.INDEX) // 显示插件
|
||||||
|
}, target)
|
||||||
|
}},
|
||||||
|
{name: "module", _init: function(target) {
|
||||||
can.runAction(can.request({}, {fields: ctx.INDEX}), ctx.COMMAND, [mdb.SEARCH, ctx.COMMAND], function(msg) {
|
can.runAction(can.request({}, {fields: ctx.INDEX}), ctx.COMMAND, [mdb.SEARCH, ctx.COMMAND], function(msg) {
|
||||||
can.onimport.tree(can, msg.Table(), ctx.INDEX, ice.PT, function(event, item) {
|
can.onimport.tree(can, msg.Table(), ctx.INDEX, ice.PT, function(event, item) {
|
||||||
can.onimport.tabview(can, can.Option(nfs.PATH), item.index, ctx.INDEX) // 显示模块
|
can.onimport.tabview(can, can.Option(nfs.PATH), item.index, ctx.INDEX) // 显示模块
|
||||||
}, view)
|
}, target)
|
||||||
})
|
})
|
||||||
}},
|
}},
|
||||||
{name: "plugin", _init: function(view) {
|
{name: "dreams", _init: function(target) { var call = arguments.callee
|
||||||
can.onimport.tree(can, can.core.Item(can.onengine.plugin.meta, function(key) { return {index: can.base.trimPrefix(key, "can.")} }), ctx.INDEX, ice.PT, function(event, item) {
|
can.runAction({}, ice.RUN, [web.DREAM], function(msg) {
|
||||||
can.onimport.tabview(can, can.Option(nfs.PATH), can.core.Keys("can", item.index), ctx.INDEX) // 显示插件
|
msg.Table(function(item) {
|
||||||
}, view)
|
function carte(event) {
|
||||||
}},
|
var list = []; switch (item.status) {
|
||||||
|
case "start": list = ["open", "stop"]; break
|
||||||
|
case "stop": list = ["start", "trash"]; break
|
||||||
|
}
|
||||||
|
can.user.carteRight(event, can, {}, list, function(event, action) {
|
||||||
|
can.runAction(can.request({}, item), ice.RUN, [web.DREAM, ctx.ACTION, action], function(msg) {
|
||||||
|
can.onmotion.clear(can, target), call(target)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
var color = item.status == "start"? "": "gray"
|
||||||
|
can.page.Append(can, target, [{view: html.ITEM, list: [{text: [item.name, html.DIV], style: {color: color}, onmouseenter: carte}], onclick: function() {
|
||||||
|
can.onimport.tabview(can, can.Option(nfs.PATH), item.name, web.DREAM) // 显示空间
|
||||||
|
}}])
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}, _menu: shy("", {
|
||||||
|
"create": function(event, zone) {
|
||||||
|
can.user.input(event, can, [mdb.NAME], function(list) {
|
||||||
|
can.runAction({}, ice.RUN, [web.DREAM, cli.START, list[0]], function(msg) {
|
||||||
|
can.onmotion.clear(can, zone._target), zone._init(zone._target), can.user.toastSuccess(can)
|
||||||
|
can.onimport.tabview(can, can.Option(nfs.PATH), msg.Option(mdb.NAME), web.DREAM) // 显示空间
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
"refresh": function(event, zone) {
|
||||||
|
can.onmotion.clear(can, zone._target), zone._init(zone._target)
|
||||||
|
},
|
||||||
|
}, ["create", "refresh"], function() {})},
|
||||||
], can.ui.project)
|
], can.ui.project)
|
||||||
},
|
},
|
||||||
history: function(can, push) {
|
history: function(can, push) {
|
||||||
can.base.Eq(push, can.history[can.history.length-1]) || can.history.push(push)
|
can.base.Eq(push, can.history[can.history.length-1]) || can.history.push(push)
|
||||||
can.Status("跳转数", can.history.length)
|
return can.Status("跳转数", can.history.length), push
|
||||||
return push
|
|
||||||
},
|
},
|
||||||
tabview: function(can, path, file, line, cb, skip, skip2) { var key = can.onexport.keys(can, file, path)
|
tabview: function(can, path, file, line, cb, skip, skip2) { var key = can.onexport.keys(can, file, path)
|
||||||
if (can.isCmdMode()) { location.hash = file+ice.FS+(line||1) }
|
if (can.isCmdMode()) { location.hash = file+ice.FS+(line||1) }
|
||||||
@ -174,16 +202,16 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
return can._msg.Option(can.Option()), can.onsyntax._init(can, can._msg, cb, skip2)
|
return can._msg.Option(can.Option()), can.onsyntax._init(can, can._msg, cb, skip2)
|
||||||
}
|
}
|
||||||
|
|
||||||
can.onimport.history(can, {path: path, file: file, line: line})
|
|
||||||
function show(msg) { var skip2 = skip; can.tabview[key] = msg
|
function show(msg) { var skip2 = skip; can.tabview[key] = msg
|
||||||
msg._tab = can.onimport.tabs(can, [{name: file.split(msg.Option(nfs.LINE) == ctx.INDEX? ice.PT: ice.PS).pop(), text: file}], function(event, meta) {
|
can.onimport.tabs(can, [{name: file.split(line == ctx.INDEX? ice.PT: ice.PS).pop(), text: file}], function(event, meta) {
|
||||||
msg._tab = event.target
|
msg._tab = event.target, can.onimport.tabview(can, path, file, msg.Option(nfs.LINE), cb, false, skip2), cb = null, skip2 = false
|
||||||
can.onimport.tabview(can, path, file, msg.Option(nfs.LINE), cb, false, skip2), cb = null, skip2 = false
|
|
||||||
}, function(item) { delete(can.tabview[key]) }, can.ui._tabs, function(item) {})
|
}, function(item) { delete(can.tabview[key]) }, can.ui._tabs, function(item) {})
|
||||||
}
|
}
|
||||||
|
|
||||||
can.Option({path: path, file: file, line: line||1})
|
can.Option(can.onimport.history(can, {path: path, file: file, line: line}))
|
||||||
line == ctx.INDEX? show(can.request({}, {index: file, line: line})): can.run({}, [path, file], show, true)
|
line == ctx.INDEX? show(can.request({}, {index: file, line: line})):
|
||||||
|
line == web.DREAM? show(can.request({}, {index: file, line: line})):
|
||||||
|
can.run({}, [path, file], show, true)
|
||||||
},
|
},
|
||||||
profile: function(can, msg) {
|
profile: function(can, msg) {
|
||||||
var width = can.profile_size[can.onexport.keys(can)]||(can.ConfWidth()-can.ui.project.offsetWidth)/2
|
var width = can.profile_size[can.onexport.keys(can)]||(can.ConfWidth()-can.ui.project.offsetWidth)/2
|
||||||
@ -200,8 +228,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
can.onmotion.toggle(can, can.ui.display, true), can.onimport.layout(can)
|
can.onmotion.toggle(can, can.ui.display, true), can.onimport.layout(can)
|
||||||
}), can.onmotion.toggle(can, can.ui.display, true), can.onimport.layout(can)
|
}), can.onmotion.toggle(can, can.ui.display, true), can.onimport.layout(can)
|
||||||
},
|
},
|
||||||
process: function(can, msg, target, width, height) {
|
process: function(can, msg, target, width, height) { can.onmotion.clear(can, target), can.user.toastSuccess(can)
|
||||||
can.onmotion.clear(can, target), can.user.toastSuccess(can)
|
|
||||||
if (msg.Option(ice.MSG_PROCESS) == "_field") {
|
if (msg.Option(ice.MSG_PROCESS) == "_field") {
|
||||||
msg.Table(function(meta) { meta.display = msg.Option(ice.MSG_DISPLAY)
|
msg.Table(function(meta) { meta.display = msg.Option(ice.MSG_DISPLAY)
|
||||||
can.onimport.plugin(can, meta, target, function(sub) { width && sub.ConfWidth(width), height && sub.ConfHeight(height), sub.Focus() })
|
can.onimport.plugin(can, meta, target, function(sub) { width && sub.ConfWidth(width), height && sub.ConfHeight(height), sub.Focus() })
|
||||||
@ -250,9 +277,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
},
|
},
|
||||||
}, [""])
|
}, [""])
|
||||||
Volcanos(chat.ONPLUGIN, {help: "注册插件",
|
Volcanos(chat.ONPLUGIN, {help: "注册插件",
|
||||||
"local": shy("按键", {}, ["mode", "key", ice.LIST, ice.BACK], function(msg, cmds) {
|
"can.code.inner.keymap": shy("按键", {}, ["mode", "key", ice.LIST, ice.BACK], function(can, msg, cmds) {
|
||||||
}),
|
|
||||||
"code.inner.keymap": shy("按键", {}, ["mode", "key", ice.LIST, ice.BACK], function(can, msg, cmds) {
|
|
||||||
can.core.Item(can.onkeymap._mode, function(mode, value) {
|
can.core.Item(can.onkeymap._mode, function(mode, value) {
|
||||||
(!cmds[0] || cmds[0] == mode) && can.core.Item(value, function(key, func) {
|
(!cmds[0] || cmds[0] == mode) && can.core.Item(value, function(key, func) {
|
||||||
if (cmds[0] == mode && cmds[1] == key) {
|
if (cmds[0] == mode && cmds[1] == key) {
|
||||||
@ -272,9 +297,7 @@ Volcanos(chat.ONPLUGIN, {help: "注册插件",
|
|||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONSYNTAX, {help: "语法高亮", list: ["keyword", "prefix", "line"], _init: function(can, msg, cb, skip) {
|
Volcanos(chat.ONSYNTAX, {help: "语法高亮", list: ["keyword", "prefix", "line"], _init: function(can, msg, cb, skip) {
|
||||||
if (can.isCmdMode()) {
|
if (can.ui._path) { can.ui._path.innerText = msg.Option(ctx.INDEX)? msg.Option(nfs.FILE): can.base.Path(msg.Option(nfs.PATH), msg.Option(nfs.FILE)) }
|
||||||
can.ui._path.innerText = msg.Option(ctx.INDEX)? msg.Option(nfs.FILE): can.base.Path(msg.Option(nfs.PATH), msg.Option(nfs.FILE))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (can.onmotion.cache(can, function(cache_data) {
|
if (can.onmotion.cache(can, function(cache_data) {
|
||||||
can.file && (cache_data[can.file] = {current: can.current, max: can.max,
|
can.file && (cache_data[can.file] = {current: can.current, max: can.max,
|
||||||
@ -291,20 +314,44 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", list: ["keyword", "prefix", "line
|
|||||||
can.onmotion.delay(can, function() { can.onimport.layout(can)
|
can.onmotion.delay(can, function() { can.onimport.layout(can)
|
||||||
msg.Option(ctx.INDEX) && can.onmotion.focus(can, can.page.Select(can, can.ui.content, html.OPTION_ARGS)[0])
|
msg.Option(ctx.INDEX) && can.onmotion.focus(can, can.page.Select(can, can.ui.content, html.OPTION_ARGS)[0])
|
||||||
})
|
})
|
||||||
|
|
||||||
|
can.page.Select(can, can._output, can.page.Keys("div.content", html.IFRAME), function(item) {
|
||||||
|
if (can.onmotion.toggle(can, item, item == msg._ui)) { can.ui.content = msg._ui }
|
||||||
|
})
|
||||||
return can.file
|
return can.file
|
||||||
}, can.ui.content, can.ui.profile_output, can.ui.display_output) && !skip) {
|
}, can.ui._content, can.ui.profile_output, can.ui.display_output) && !skip) {
|
||||||
return can.onaction.selectLine(null, can, msg.Option(nfs.LINE)), can.base.isFunc(cb) && cb()
|
return can.onaction.selectLine(null, can, msg.Option(nfs.LINE)), can.base.isFunc(cb) && cb()
|
||||||
}
|
}
|
||||||
|
|
||||||
can.onmotion.clear(can, can.ui.content), can.onimport.layout(can)
|
can.onmotion.clear(can, can.ui.content), can.onimport.layout(can)
|
||||||
if (msg.Option(ctx.INDEX)) { return can.onimport.plugin(can, {index: msg.Option(ctx.INDEX)}, can.ui.content, function(sub) {
|
if (msg.Option(ctx.INDEX)) {
|
||||||
can.page.style(can, sub._output, html.MAX_HEIGHT, sub.ConfHeight(can.ui.content.offsetHeight-2*html.ACTION_HEIGHT))
|
if (msg.Option(nfs.LINE) == web.DREAM) {
|
||||||
can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth(can.ui.content.offsetWidth))
|
if (msg._ui) {
|
||||||
can.onmotion.delay(can, function() { sub.Focus() }), can.base.isFunc(cb) && cb()
|
can.page.Select(can, can._output, can.page.Keys("div.content", html.IFRAME), function(item) {
|
||||||
sub.onaction.close = function() {
|
if (can.onmotion.toggle(can, item, item == msg._ui)) { can.ui.content = msg._ui }
|
||||||
can.onaction.back({}, can), msg._tab._close()
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
can.ui.content = msg._ui = can.page.insertBefore(can, [{type: html.IFRAME, src: can.misc.MergeURL(can, {pod: msg.Option(nfs.FILE)}, true), width: can.ui.content.offsetWidth, height: can.ui.content.offsetHeight}], can.ui.content)
|
||||||
|
return can.onimport.layout(can)
|
||||||
}
|
}
|
||||||
}) }
|
|
||||||
|
can.onmotion.toggle(can, can.ui.content = msg._ui = can.ui._content, true)
|
||||||
|
return can.onimport.plugin(can, {index: msg.Option(ctx.INDEX)}, can.ui.content, function(sub) {
|
||||||
|
can.page.style(can, sub._output, html.MAX_HEIGHT, sub.ConfHeight(can.ui.content.offsetHeight-2*html.ACTION_HEIGHT))
|
||||||
|
can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth(can.ui.content.offsetWidth))
|
||||||
|
can.onmotion.delay(can, function() { sub.Focus() }), can.base.isFunc(cb) && cb()
|
||||||
|
|
||||||
|
sub.onaction.close = function() { can.onaction.back({}, can), msg._tab._close() }
|
||||||
|
sub.onimport._open = function(sub, msg, _arg) { var url = can.base.ParseURL(_arg), ls = url.origin.split("/chat/pod/")
|
||||||
|
if (_arg.indexOf(location.origin) == 0 && ls.length > 1) {
|
||||||
|
return can.onimport.tabview(can, can.Option(nfs.PATH), ls[1].split("/")[0], web.DREAM), sub.Update() // 显示空间
|
||||||
|
}
|
||||||
|
return can.user.open(_arg), sub.Update()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
can.onmotion.toggle(can, can.ui.content = msg._ui = can.ui._content, true)
|
||||||
|
|
||||||
function init(p) {
|
function init(p) {
|
||||||
can.max = 0, can.core.List(can.ls = msg.Result().split(ice.NL), function(item) { can.onaction.appendLine(can, item) })
|
can.max = 0, can.core.List(can.ls = msg.Result().split(ice.NL), function(item) { can.onaction.appendLine(can, item) })
|
||||||
@ -327,8 +374,7 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", list: ["keyword", "prefix", "line
|
|||||||
function wrap(type, str) { return type? '<span class="'+type+'">'+str+'</span>': str }
|
function wrap(type, str) { return type? '<span class="'+type+'">'+str+'</span>': str }
|
||||||
var p = can.onsyntax[can.parse]; if (!p) { return line } p = can.onsyntax[p.link]||p, p.split = p.split||{}
|
var p = can.onsyntax[can.parse]; if (!p) { return line } p = can.onsyntax[p.link]||p, p.split = p.split||{}
|
||||||
p.keyword && (line = can.core.List(can.core.Split(line, p.split.space||"\t ", p.split.operator||"{[(.,:;!|<>)]}", {detail: true}), function(item, index, array) {
|
p.keyword && (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}
|
item = can.base.isObject(item)? item: {text: item}; var text = item.text, type = item.keyword||p.keyword[text]
|
||||||
var text = item.text, type = item.keyword||p.keyword[text]
|
|
||||||
|
|
||||||
switch (item.type) { case html.SPACE: return text
|
switch (item.type) { case html.SPACE: return text
|
||||||
case lang.STRING: return wrap(lang.STRING, item.left+text+item.right)
|
case lang.STRING: return wrap(lang.STRING, item.left+text+item.right)
|
||||||
@ -336,12 +382,8 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", list: ["keyword", "prefix", "line
|
|||||||
}
|
}
|
||||||
}).join(""))
|
}).join(""))
|
||||||
|
|
||||||
p.prefix && can.core.Item(p.prefix, function(pre, type) {
|
p.prefix && can.core.Item(p.prefix, function(pre, type) { if (can.base.beginWith(line, pre)) { line = wrap(type, line) } })
|
||||||
if (can.base.beginWith(line, pre)) { line = wrap(type, line) }
|
p.suffix && can.core.Item(p.suffix, function(end, type) { if (can.base.endWith(line, end)) { line = wrap(type, line) } })
|
||||||
})
|
|
||||||
p.suffix && can.core.Item(p.suffix, function(end, type) {
|
|
||||||
if (can.base.endWith(line, end)) { line = wrap(type, line) }
|
|
||||||
})
|
|
||||||
return line
|
return line
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -372,22 +414,14 @@ Volcanos(chat.ONKEYMAP, {help: "导入数据",
|
|||||||
}, _engine: {},
|
}, _engine: {},
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONACTION, {help: "控件交互", list: ["搜索", "打开", "添加", "插件", "扩展"],
|
Volcanos(chat.ONACTION, {help: "控件交互", list: ["搜索", "打开", "添加", "插件", "扩展"],
|
||||||
_trans: {width: "宽度", height: "高度", website: "网页"},
|
_trans: {load: "加载", link: "链接", width: "宽度", height: "高度", website: "网页"},
|
||||||
"搜索": function(event, can) {
|
"搜索": function(event, can) {
|
||||||
can.user.input(event, can, [mdb.NAME, [ctx.ACTION, nfs.TAGS, nfs.GREP, cli.MAKE]], function(data) {
|
can.user.input(event, can, [mdb.NAME, [ctx.ACTION, nfs.TAGS, nfs.GREP, cli.MAKE]], function(data) {
|
||||||
can.ui.search.Update({}, [ctx.ACTION, data.action, data.name])
|
can.ui.search.Update({}, [ctx.ACTION, data.action, data.name])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"打开": function(event, can) {
|
"打开": function(event, can) { can.user.input(event, can, [nfs.FILE], function(list) { can.onimport.tabview(can, can.Option(nfs.PATH), list[0]) }) },
|
||||||
can.user.input(event, can, [nfs.FILE], function(list) {
|
"添加": function(event, can) { can.user.input(event, can, [ctx.INDEX], function(list) { can.onimport.tabview(can, can.Option(nfs.PATH), list[0], ctx.INDEX) }) },
|
||||||
can.onimport.tabview(can, can.Option(nfs.PATH), list[0])
|
|
||||||
})
|
|
||||||
},
|
|
||||||
"添加": function(event, can) {
|
|
||||||
can.user.input(event, can, [ctx.INDEX], function(list) {
|
|
||||||
can.onimport.tabview(can, can.Option(nfs.PATH), list[0], ctx.INDEX)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
"插件": function(event, can) {
|
"插件": function(event, can) {
|
||||||
can.user.input(event, can, [ctx.INDEX], function(list) {
|
can.user.input(event, can, [ctx.INDEX], function(list) {
|
||||||
var sub = can.toolkit[list[0]]; if (sub) { sub.select(); return }
|
var sub = can.toolkit[list[0]]; if (sub) { sub.select(); return }
|
||||||
@ -400,9 +434,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: ["搜索", "打开", "添
|
|||||||
can.onimport.exts(can, list[0], function(sub) { can.extentions[list[0]] = sub.select() })
|
can.onimport.exts(can, list[0], function(sub) { can.extentions[list[0]] = sub.select() })
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
sess: function(event, can) {
|
sess: function(event, can) { can.onexport.sess(can), can.user.toastSuccess(can) },
|
||||||
can.onexport.sess(can), can.user.toastSuccess(can)
|
|
||||||
},
|
|
||||||
load: function(event, can) {
|
load: function(event, can) {
|
||||||
var file = can.base.Path("/require/", can.Option(nfs.PATH), can.Option(nfs.FILE))
|
var file = can.base.Path("/require/", can.Option(nfs.PATH), can.Option(nfs.FILE))
|
||||||
delete(Volcanos.meta.cache[file]), eval("\n_can_name = \""+file+"\"\n"+can.onexport.content(can)+"\n_can_name = \"\"\nconsole.log(\"once\")")
|
delete(Volcanos.meta.cache[file]), eval("\n_can_name = \""+file+"\"\n"+can.onexport.content(can)+"\n_can_name = \"\"\nconsole.log(\"once\")")
|
||||||
@ -415,7 +447,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: ["搜索", "打开", "添
|
|||||||
can.onimport.profile(can, msg)
|
can.onimport.profile(can, msg)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
exec: function(event, can) { can.request(event, {_toast: "执行中..."})
|
exec: function(event, can) { can.request(event, {_toast: "执行中...", "some": "run"})
|
||||||
can.runAction(event, mdb.ENGINE, [can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
|
can.runAction(event, mdb.ENGINE, [can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
|
||||||
can.onimport.display(can, msg)
|
can.onimport.display(can, msg)
|
||||||
})
|
})
|
||||||
@ -459,7 +491,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: ["搜索", "打开", "添
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (s.indexOf("kit.") == 0) { s = s.replace("kit.", "toolkits.") }
|
if (s.indexOf("kit.") == 0) { s = s.replace("kit.", "toolkits.") }
|
||||||
if (s.indexOf(".") == 0) { s = s.slice(1) }
|
if (s.indexOf(ice.PT) == 0) { s = s.slice(1) }
|
||||||
can.onaction.searchLine(event, can, s)
|
can.onaction.searchLine(event, can, s)
|
||||||
}}
|
}}
|
||||||
]}]); return ui.tr
|
]}]); return ui.tr
|
||||||
@ -503,7 +535,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: ["搜索", "打开", "添
|
|||||||
}
|
}
|
||||||
|
|
||||||
var push = can.onimport.history(can, {path: can.Option(nfs.PATH), file: can.Option(nfs.FILE), line: can.Option(nfs.LINE), text: can.current.text()})
|
var push = can.onimport.history(can, {path: can.Option(nfs.PATH), file: can.Option(nfs.FILE), line: can.Option(nfs.LINE), text: can.current.text()})
|
||||||
if (can.isCmdMode()) { location.hash = push.file+","+(push.line||1) }
|
if (can.isCmdMode()) { location.hash = push.file+ice.FS+(push.line||1) }
|
||||||
can.onaction._selectLine(event, can)
|
can.onaction._selectLine(event, can)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -521,17 +553,11 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: ["搜索", "打开", "添
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["文件数", "解析器", "文件名", "当前行", "跳转数", "标签数"],
|
Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["文件数", "解析器", "文件名", "当前行", "跳转数", "标签数"],
|
||||||
sess: function(can) {
|
sess: function(can) { can.user.localStorage(can, "web.code.inner.sess", {"plug": can.onexport.plug(can), "exts": can.onexport.exts(can), "tabs": can.onexport.tabs(can)}) },
|
||||||
can.user.localStorage(can, "web.code.inner.sess", {"plug": can.onexport.plug(can), "exts": can.onexport.exts(can), "tabs": can.onexport.tabs(can)})
|
keys: function(can, file, path) { return (path||can.Option(nfs.PATH))+ice.DF+(file||can.Option(nfs.FILE)) },
|
||||||
},
|
|
||||||
keys: function(can, file, path) { return (path||can.Option(nfs.PATH))+":"+(file||can.Option(nfs.FILE)) },
|
|
||||||
tabs: function(can) { return can.core.Item(can.tabview, function(key, msg) { return key+ice.DF+msg.Option(nfs.LINE) }) },
|
tabs: function(can) { return can.core.Item(can.tabview, function(key, msg) { return key+ice.DF+msg.Option(nfs.LINE) }) },
|
||||||
plug: function(can) { return can.core.Item(can.toolkit) },
|
plug: function(can) { return can.core.Item(can.toolkit) },
|
||||||
exts: function(can) { return can.core.Item(can.plugins) },
|
exts: function(can) { return can.core.Item(can.plugins) },
|
||||||
position: function(can, index, total) { total = total||can.max
|
position: function(can, index, total) { total = total||can.max; return (parseInt(index))+ice.PS+parseInt(total)+" = "+parseInt((index)*100/total)+"%" },
|
||||||
return (parseInt(index))+ice.PS+parseInt(total)+" = "+parseInt((index)*100/total)+"%"
|
content: function(can) { return can.page.Select(can, can.ui.content, "td.text", function(item) { return item.innerText }).join(ice.NL) },
|
||||||
},
|
|
||||||
content: function(can) {
|
|
||||||
return can.page.Select(can, can.ui.content, "td.text", function(item) { return item.innerText }).join(ice.NL)
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) {
|
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) {
|
||||||
can.require(["inner.js"], function(can) { can.onimport.inner_init(can, msg, function() { can.undo = [], can.redo = []
|
can.require(["inner.js"], function(can) { can.onimport.inner_init(can, msg, function() { can.undo = [], can.redo = []
|
||||||
can.onkeymap._build(can), can.onimport._input(can), can.onkeymap._plugin({}, can), can.base.isFunc(cb) && cb(msg)
|
can.onimport._input(can), can.onkeymap._build(can), can.onkeymap._plugin({}, can), can.base.isFunc(cb) && cb(msg)
|
||||||
|
|
||||||
}, target) }, function(can, name, sub) { name == chat.ONIMPORT && (can.onimport.inner_init = sub._init)
|
}, target) }, function(can, name, sub) { name == chat.ONIMPORT && (can.onimport.inner_init = sub._init)
|
||||||
if (name == chat.ONACTION) { can._trans = can.base.Copy(can._trans||{}, sub._trans) }
|
if (name == chat.ONACTION) { can._trans = can.base.Copy(can._trans||{}, sub._trans) }
|
||||||
@ -55,7 +55,7 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互",
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
normal: {
|
normal: {
|
||||||
escape: function(event, can) { can.onkeymap._plugin(event, can) },
|
Escape: function(event, can) { can.onkeymap._plugin(event, can) },
|
||||||
ArrowLeft: function(event, can, target) { can.onkeymap.cursorMove(can, target, -1) },
|
ArrowLeft: function(event, can, target) { can.onkeymap.cursorMove(can, target, -1) },
|
||||||
ArrowRight: function(event, can, target) { can.onkeymap.cursorMove(can, target, 1) },
|
ArrowRight: function(event, can, target) { can.onkeymap.cursorMove(can, target, 1) },
|
||||||
ArrowDown: function(event, can) { can.onaction.selectLine(event, can, can.current.next()) },
|
ArrowDown: function(event, can) { can.onaction.selectLine(event, can, can.current.next()) },
|
||||||
@ -174,8 +174,7 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互",
|
|||||||
Volcanos(chat.ONACTION, {help: "控件交互", list: [nfs.SAVE, code.AUTOGEN, code.COMPILE, nfs.SCRIPT, chat.WEBSITE, web.DREAM, code.PUBLISH],
|
Volcanos(chat.ONACTION, {help: "控件交互", list: [nfs.SAVE, code.AUTOGEN, code.COMPILE, nfs.SCRIPT, chat.WEBSITE, web.DREAM, code.PUBLISH],
|
||||||
_run: function(event, can, button, args, cb) {
|
_run: function(event, can, button, args, cb) {
|
||||||
can.runAction(event, button, args, cb||function(msg) {
|
can.runAction(event, button, args, cb||function(msg) {
|
||||||
can.onimport.tabview(can, can.Option(nfs.PATH), msg.Option(nfs.FILE))
|
can.onimport.tabview(can, can.Option(nfs.PATH), msg.Option(nfs.FILE)), can.ui.source.refresh()
|
||||||
can.onimport.project(can, can.Option(nfs.PATH)), can.user.toastSuccess(can, button)
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_runs: function(event, can, button) { var meta = can.Conf(); can.request(event, {action: button})
|
_runs: function(event, can, button) { var meta = can.Conf(); can.request(event, {action: button})
|
||||||
@ -184,25 +183,22 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [nfs.SAVE, code.AUTOGEN, co
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
save: function(event, can, button) { can.request(event, {file: can.Option(nfs.FILE), content: can.onexport.content(can)})
|
save: function(event, can, button) { can.request(event, {file: can.Option(nfs.FILE), content: can.onexport.content(can)})
|
||||||
can.runAction(event, nfs.SAVE, [can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)], function() {
|
can.onaction._run(event, can, button, [can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)])
|
||||||
can.user.toastSuccess(can, button)
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
autogen: function(event, can, button) { can.onaction._runs(event, can, button) },
|
autogen: function(event, can, button) { can.onaction._runs(event, can, button) },
|
||||||
compile: function(event, can, button) { var toast0 = can.user.toastProcess(can, "编译中...")
|
compile: function(event, can, button) { var toast = can.user.toastProcess(can, "编译中...")
|
||||||
can.runAction(event, button, [], function(msg) { toast0.close()
|
can.runAction(can.request(event), button, [], function(msg) { toast.close()
|
||||||
if (msg.Length() == 0) { var toast1 = can.user.toastProcess(can, "重启中...")
|
if (msg.Length() == 0) { var toast1 = can.user.toastProcess(can, "重启中...")
|
||||||
can.core.Timer(3000, function() { toast1.close(), can.onaction["展示"]({}, can) })
|
can.onmotion.delay(can, function() { toast1.close(), can.onaction[cli.SHOW]({}, can) }, 3000)
|
||||||
} else { can.ui.search._show(msg) }
|
} else { can.ui.search._show(msg) }
|
||||||
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
script: function(event, can, button) {
|
script: function(event, can, button) {
|
||||||
can.request(event, {file: "hi/hi.js"})
|
can.onaction._runs(can.request(event, {file: "hi/hi.js"}), can, button)
|
||||||
can.onaction._runs(event, can, button)
|
|
||||||
},
|
},
|
||||||
website: function(event, can, button) {
|
website: function(event, can, button) {
|
||||||
can.request(event, {file: "hi.zml"})
|
can.onaction._runs(can.request(event, {file: "hi.zml"}), can, button)
|
||||||
can.onaction._runs(event, can, button)
|
|
||||||
},
|
},
|
||||||
publish: function(event, can, button) {
|
publish: function(event, can, button) {
|
||||||
can.runAction(event, button, [], function(msg) { can.user.toastConfirm(can, msg.Result(), button) })
|
can.runAction(event, button, [], function(msg) { can.user.toastConfirm(can, msg.Result(), button) })
|
||||||
@ -221,8 +217,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [nfs.SAVE, code.AUTOGEN, co
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
can.request(event, {text: can.base.Format(list)})
|
can.runAction(can.request(event, {text: can.base.Format(list)}), button)
|
||||||
can.runAction(event, button)
|
|
||||||
},
|
},
|
||||||
_complete: function(event, can, target) { target = target||can.ui.complete
|
_complete: function(event, can, target) { target = target||can.ui.complete
|
||||||
if (event == undefined) { return }
|
if (event == undefined) { return }
|
||||||
@ -304,7 +299,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [nfs.SAVE, code.AUTOGEN, co
|
|||||||
can.current.line.appendChild(can.ui.current), can.page.style(can, can.ui.current, html.LEFT, td.offsetLeft-1, html.WIDTH, can.ui.content.style.width)
|
can.current.line.appendChild(can.ui.current), can.page.style(can, can.ui.current, html.LEFT, td.offsetLeft-1, html.WIDTH, can.ui.content.style.width)
|
||||||
if (event) {
|
if (event) {
|
||||||
if (event.type == "click" && can.mode != "insert") { can.onkeymap._insert(event, can)
|
if (event.type == "click" && can.mode != "insert") { can.onkeymap._insert(event, can)
|
||||||
can.core.Timer(10, function() { can.onaction._complete(event, can) })
|
can.onmotion.delay(can, function() { can.onaction._complete(event, can) })
|
||||||
}
|
}
|
||||||
can.ui.current.focus(), can.ui.content.scrollLeft -= 10000
|
can.ui.current.focus(), can.ui.content.scrollLeft -= 10000
|
||||||
can.onkeymap.cursorMove(can, can.ui.current, 0, (event.offsetX)/12-1)
|
can.onkeymap.cursorMove(can, can.ui.current, 0, (event.offsetX)/12-1)
|
||||||
@ -316,15 +311,13 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [nfs.SAVE, code.AUTOGEN, co
|
|||||||
can.max++, can.page.Select(can, item, "td.line", function(item) { item.innerText = index+1 })
|
can.max++, can.page.Select(can, item, "td.line", function(item) { item.innerText = index+1 })
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
insertLine: function(can, value, before) {
|
insertLine: function(can, value, before) { var line = can.onaction.appendLine(can, value)
|
||||||
var line = can.onaction.appendLine(can, value)
|
|
||||||
before && can.ui.content.insertBefore(line, can.onaction._getLine(can, before))
|
before && can.ui.content.insertBefore(line, can.onaction._getLine(can, before))
|
||||||
return can.onaction.rerankLine(can), can.onaction._getLineno(can, line)
|
return can.onaction.rerankLine(can), can.onaction._getLineno(can, line)
|
||||||
},
|
},
|
||||||
deleteLine: function(can, line) { line = can.onaction._getLine(can, line)
|
deleteLine: function(can, line) { line = can.onaction._getLine(can, line)
|
||||||
var next = line.nextSibling||line.previousSibling
|
var next = line.nextSibling||line.previousSibling
|
||||||
can.page.Remove(can, line), can.onaction.rerankLine(can)
|
return can.page.Remove(can, line), can.onaction.rerankLine(can), next
|
||||||
return next
|
|
||||||
},
|
},
|
||||||
modifyLine: function(can, line, value) {
|
modifyLine: function(can, line, value) {
|
||||||
can.page.Select(can, can.ui.content, html.TR, function(item, index) {
|
can.page.Select(can, can.ui.content, html.TR, function(item, index) {
|
||||||
|
@ -86,7 +86,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
}]) }), can.onimport._display(can, task)
|
}]) }), can.onimport._display(can, task)
|
||||||
},
|
},
|
||||||
_display: function(can, task) { if (!task["extra.cmd"]) { return }
|
_display: function(can, task) { if (!task["extra.cmd"]) { return }
|
||||||
can.onappend.plugin(can, {type: chat.STORY, ctx: task["extra.ctx"], cmd: task["extra.cmd"], arg: task["extra.arg"]}, function(sub, meta) {
|
can.onappend.plugin(can, {type: "plug", ctx: task["extra.ctx"], cmd: task["extra.cmd"], arg: task["extra.arg"]}, function(sub, meta) {
|
||||||
sub.run = function(event, cmds, cb) { var msg = can.request(event, kit.Dict("task.pod", task["pod"], "task.zone", task.zone, "task.id", task.id))
|
sub.run = function(event, cmds, cb) { var msg = can.request(event, kit.Dict("task.pod", task["pod"], "task.zone", task.zone, "task.id", task.id))
|
||||||
can.runAction(event, ice.RUN, [task[mdb.ZONE], task[mdb.ID]].concat(cmds), cb)
|
can.runAction(event, ice.RUN, [task[mdb.ZONE], task[mdb.ID]].concat(cmds), cb)
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, conf, cb, target) {},
|
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, conf, cb, target) {},
|
||||||
_process: function(can, msg) {
|
_process: function(can, msg) {
|
||||||
msg.OptionStatus() && can.onmotion.clear(can, can._status) && can.onappend._status(can, can.base.Obj(msg.OptionStatus()))
|
msg.OptionStatus() && can.onmotion.clear(can, can._status) && can.onappend._status(can, can.base.Obj(msg.OptionStatus()))
|
||||||
return can.core.CallFunc([can.onimport, msg.OptionProcess()], {can: can, msg: msg})
|
return can.core.CallFunc([can.onimport, msg.OptionProcess()], {can: can, sub: can, msg: msg})
|
||||||
},
|
},
|
||||||
|
|
||||||
_location: function(can, msg, _arg) { can.user.jumps(_arg); return true },
|
_location: function(can, msg, _arg) { can.user.jumps(_arg); return true },
|
||||||
@ -111,7 +111,7 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [
|
|||||||
mdb.NAME, meta.index, mdb.TEXT, JSON.stringify(can.Input([], true)),
|
mdb.NAME, meta.index, mdb.TEXT, JSON.stringify(can.Input([], true)),
|
||||||
])
|
])
|
||||||
},
|
},
|
||||||
"打开链接": function(event, can) { var meta = can.Conf(), args = can.Option()
|
"打开链接": function(event, can) { var meta = can.Conf(), args = can.Option(); args.river = "", args.storm = ""
|
||||||
args.cmd = meta.index||can.core.Keys(meta.ctx, meta.cmd), args.cmd == "web.wiki.word" && (args.cmd = args.path)
|
args.cmd = meta.index||can.core.Keys(meta.ctx, meta.cmd), args.cmd == "web.wiki.word" && (args.cmd = args.path)
|
||||||
can.user.isWeiXin? can.user.jumps(can.misc.MergeURL(can, args)): can.user.open(can.misc.MergeURL(can, args))
|
can.user.isWeiXin? can.user.jumps(can.misc.MergeURL(can, args)): can.user.open(can.misc.MergeURL(can, args))
|
||||||
},
|
},
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) {
|
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) {
|
||||||
can.user.isMobile && !can.user.isLandscape() && can.onmotion.hidden(can, can._action)
|
can.user.isMobile && !can.user.isLandscape() && can.onmotion.hidden(can, can._action)
|
||||||
var cbs = can.onimport[can._args[ctx.STYLE]]; if (can.base.isFunc(cbs)) {
|
var cbs = can.onimport[can.Conf(ctx.STYLE)]; if (can.base.isFunc(cbs)) {
|
||||||
can.page.ClassList.add(can, target, can._args[ctx.STYLE])
|
can.page.ClassList.add(can, target, can._args[ctx.STYLE])
|
||||||
|
can.core.CallFunc(cbs, {
|
||||||
|
can: can, msg: msg, target: target,
|
||||||
|
list: msg.Table(),
|
||||||
|
})
|
||||||
return cbs(can, msg, target)
|
return cbs(can, msg, target)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,39 +42,44 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
}]); return ui.first
|
}]); return ui.first
|
||||||
},
|
},
|
||||||
|
|
||||||
zone: function(can, list, target) { var color = ["blue", "red", "cyan"]
|
zone: function(can, list, target) { var color = ["blue", "red", "green"]
|
||||||
return can.page.Append(can, target, can.core.List(list, function(zone, index) { return {view: "zone", list: [
|
return can.page.Append(can, target, can.core.List(list, function(zone, index) { return {view: html.ZONE, list: [
|
||||||
{view: "name", inner: zone.name, style: {background: color[index%color.length]}, onclick: function() {
|
{view: html.NAME, inner: zone.name, style: {background: color[index%color.length]}, onclick: function() {
|
||||||
can.onmotion.toggle(can, event.target.nextSibling.nextSibling)
|
can.onmotion.toggle(can, zone._action), can.onmotion.toggle(can, zone._target)
|
||||||
can.onmotion.toggle(can, event.target.nextSibling)
|
|
||||||
}, onmouseenter: function(event) {
|
}, onmouseenter: function(event) {
|
||||||
can.user.carteRight(event, can, {
|
zone._menu? can.user.carteRight(event, can, zone._menu.meta, zone._menu.list, function(event, button, meta) {
|
||||||
|
meta[button](event, zone)
|
||||||
|
}): can.user.carteRight(event, can, {
|
||||||
"折叠": function() {
|
"折叠": function() {
|
||||||
can.page.Select(can, event.target.nextSibling.nextSibling, html.DIV_LIST, function(item) { can.onmotion.toggle(can, item, false) })
|
can.page.Select(can, zone._target, html.DIV_LIST, function(item) { can.onmotion.toggle(can, item, false) })
|
||||||
},
|
},
|
||||||
"展开": function() {
|
"展开": function() {
|
||||||
can.page.Select(can, event.target.nextSibling.nextSibling, html.DIV_LIST, function(item) { can.onmotion.toggle(can, item, true) })
|
can.page.Select(can, zone._target, html.DIV_LIST, function(item) { can.onmotion.toggle(can, item, true) })
|
||||||
},
|
},
|
||||||
}, ["折叠", "展开"])
|
"刷新": function() { can.onmotion.clear(can, zone._target), zone._init(zone._target) },
|
||||||
}, _init: function(item) { if (list.length > 1 && index > 0) { can.onmotion.delay(can, function() { item.click() }) } }},
|
}, ["折叠", "展开", "刷新"])
|
||||||
{view: "action", _init: function(item) {
|
}},
|
||||||
can.onappend._action(can, [{input: "type", onkeyup: function(event) {
|
{view: html.ACTION, _init: function(target) { zone._action = target
|
||||||
can.page.Select(can, item.nextSibling, html.DIV_LIST, function(item) { can.onmotion.toggle(can, item, true) })
|
can.onappend._action(can, [{input: html.TEXT, onkeyup: function(event) {
|
||||||
can.page.Select(can, item.nextSibling, html.DIV_ITEM, function(item) {
|
can.page.Select(can, zone._target, html.DIV_LIST, function(item) { can.onmotion.toggle(can, item, true) })
|
||||||
|
can.page.Select(can, zone._target, html.DIV_ITEM, function(item) {
|
||||||
can.page.Select(can, item, "div.name", function(name) {
|
can.page.Select(can, item, "div.name", function(name) {
|
||||||
can.onmotion.toggle(can, item, name.innerText.indexOf(event.target.value) > -1)
|
can.onmotion.toggle(can, item, name.innerText.indexOf(event.target.value) > -1)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}, onclick: function(event) {
|
}, onclick: function(event) {
|
||||||
can.onmotion.focus(can, event.target)
|
can.onmotion.focus(can, event.target)
|
||||||
},_init: function(item) {
|
}, _init: function(target) {
|
||||||
can.onmotion.delay(can, function() {
|
can.onmotion.delay(can, function() {
|
||||||
can.page.styleWidth(can, item, item.parentNode.parentNode.parentNode.offsetWidth-32)
|
can.page.styleWidth(can, target, target.parentNode.parentNode.parentNode.offsetWidth-32)
|
||||||
})
|
})
|
||||||
}}], item, {})
|
}}], target, {})
|
||||||
}},
|
}},
|
||||||
{view: "list", _init: function(item) {
|
{view: html.ZONE, _init: function(target) { can.ui[zone.name] = zone
|
||||||
can.base.isFunc(zone._init) && zone._init(item)
|
zone._target = target, zone.refresh = function() {
|
||||||
|
can.onmotion.clear(can, target), zone._init(target)
|
||||||
|
}
|
||||||
|
can.base.isFunc(zone._init) && zone._init(target)
|
||||||
}}
|
}}
|
||||||
]} }))
|
]} }))
|
||||||
},
|
},
|
||||||
|
6
proto.js
6
proto.js
@ -240,16 +240,20 @@ var html = {
|
|||||||
TOGGLE: "toggle",
|
TOGGLE: "toggle",
|
||||||
|
|
||||||
PAGE: "page", TABS: "tabs",
|
PAGE: "page", TABS: "tabs",
|
||||||
LIST: "list", ITEM: "item",
|
|
||||||
MENU: "menu", NODE: "node",
|
MENU: "menu", NODE: "node",
|
||||||
|
ZONE: "zone", NAME: "name",
|
||||||
|
LIST: "list", ITEM: "item",
|
||||||
|
|
||||||
HIDE: "hide", SHOW: "show", AUTO: "auto",
|
HIDE: "hide", SHOW: "show", AUTO: "auto",
|
||||||
HEAD: "head", LEFT: "left", MAIN: "main", FOOT: "foot",
|
HEAD: "head", LEFT: "left", MAIN: "main", FOOT: "foot",
|
||||||
PLUGIN: "plugin", LAYOUT: "layout", CONTENT: "content",
|
PLUGIN: "plugin", LAYOUT: "layout", CONTENT: "content",
|
||||||
|
|
||||||
DIV_PAGE: "div.page",
|
DIV_PAGE: "div.page",
|
||||||
DIV_TABS: "div.tabs",
|
DIV_TABS: "div.tabs",
|
||||||
|
DIV_ZONE: "div.zone",
|
||||||
DIV_LIST: "div.list",
|
DIV_LIST: "div.list",
|
||||||
DIV_ITEM: "div.item",
|
DIV_ITEM: "div.item",
|
||||||
|
DIV_NAME: "div.name",
|
||||||
DIV_CODE: "div.code",
|
DIV_CODE: "div.code",
|
||||||
DIV_LAYOUT_HEAD: "div.layout.head",
|
DIV_LAYOUT_HEAD: "div.layout.head",
|
||||||
DIV_LAYOUT_LEFT: "div.layout.left",
|
DIV_LAYOUT_LEFT: "div.layout.left",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user