1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00
This commit is contained in:
harveyshao 2022-02-19 19:51:14 +08:00
parent 9ea85cd499
commit 23983001b2
13 changed files with 159 additions and 84 deletions

View File

@ -190,7 +190,9 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
})
}; can.core.Next(can.base.Obj(meta.inputs, can.core.Value(can, [chat.ONIMPORT, mdb.LIST])).concat(meta.type == chat.FLOAT? [{type: html.BUTTON, name: cli.CLOSE}]: []), add)
},
_action: function(can, list, action, meta) { meta = meta||can.onaction, action = action||can._action, can.onmotion.clear(can, action)
_action: function(can, list, action, meta) {
list = can.base.getValid(list, can.core.Item(meta))
meta = meta||can.onaction, action = action||can._action, can.onmotion.clear(can, action)
return can.core.List(can.base.Obj(list, can.core.Value(can, [chat.ONACTION, mdb.LIST])), function(item) { if (item == undefined) { return } can.onappend.input(can, item == ""? /*空白*/ {type: html.SPACE}:
can.base.isString(item)? /*按键*/ {type: html.BUTTON, value: can.user.trans(can, item), onclick: function(event) {
var cb = meta[item]||meta["_engine"]; cb? can.core.CallFunc(cb, {event: event, can: can, button: item}): can.run(event, [ctx.ACTION, item].concat(can.sup.Input()))
@ -213,6 +215,13 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
can.base.isUndefined(can._daemon) && can.ondaemon._list[0] && (can._daemon = can.ondaemon._list.push(can)-1)
if (can._daemon) { msg._daemon = can._daemon }
}
if (meta.index.indexOf("can.") == 0) {
can.onengine._plugin(event, can, msg, can, can.misc.concat(can, [meta.index], cmds), function(msg) {
if (can.base.isFunc(cb)) { can.core.CallFunc(cb, {can: can, msg: msg}); return }
!silent && can.onappend._output(can, msg, msg.Option(ice.MSG_DISPLAY)||meta.display||meta.feature.display)
})
return
}
return can.run(event, cmds, function(msg) { var sub = can.core.Value(can, "_outputs.-1")||{}; can._msg = msg, sub._msg = msg
if (can.base.isFunc(cb)) { can.core.CallFunc(cb, {can: can, msg: msg}); return }
@ -341,6 +350,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
}
function run(cmds) { var msg = can.sup.request(event, line, can.Option())
return can.run(event, cmds, null, true)
return can.run(event, cmds, function(msg) { can.run() }, true)
}

View File

@ -1,5 +1,4 @@
Volcanos("base", {help: "数据类型",
Int: function(val, def) { return parseInt(val)||def||0 },
Volcanos("base", {help: "数据类型", Int: function(val, def) { return parseInt(val)||def||0 },
Obj: function(val, def) {
try {
if (typeof val == lang.STRING) { if (val == "") { return def } val = JSON.parse(val) }

View File

@ -211,14 +211,7 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg
if (from[0] == "_search") { return from }
return to.concat(from)
},
proto: function(sub, sup) {
if (navigator.userAgent.indexOf("MSIE") > -1) {
for (var k in sup) { sub[k] = sub[k]||sup[k] }
} else {
sub.__proto__ = sup
}
return sub
},
proto: function(sub, sup) { return sub.__proto__ = sup, sub },
Log: function() {
var args = [this._time(), this.FileLine(2, 3)]

View File

@ -127,16 +127,16 @@ fieldset>div.output td.project div.project div.item { padding:2px 10px; text-ali
fieldset>div.output td.project div.project div.list { margin-left:10px; }
fieldset>div.output td.profile { background-color:#71909c91; }
fieldset>div.output td.profile div.profile { overflow:auto; }
fieldset>div.status { clear:both; }
fieldset>div.status>div.item { float:left; padding:4px; height:18px; }
fieldset div.status { clear:both; }
fieldset div.status>div.item { float:left; padding:4px; height:18px; }
fieldset.panel>legend { display:none; }
fieldset.plugin { margin:10px; padding:10px; background-color:#061c3c9e; box-shadow:2px 2px 10px 4px #626bd0; }
fieldset.plugin>div.action { float:none; overflow:auto; }
fieldset.plugin>div.status { border-top:1px solid darkcyan; }
fieldset.plugin div.status { border-top:1px solid darkcyan; }
fieldset.story>legend { display:block; padding:2px 20px; }
fieldset.story>div.status { border-top:1px solid darkcyan; }
fieldset.story div.status { border-top:1px solid darkcyan; }
fieldset.float { position:absolute; z-index:10; background-color:#023531cf; padding:0px; margin:0px; }
fieldset.float>legend { float:left; }
fieldset.float>div.action { display:block; float:none; height:2.3rem; overflow:auto; }
@ -146,7 +146,7 @@ fieldset.output { margin:0; padding:0; }
fieldset.output>legend { display:none; }
fieldset.output>form.option { display:none; }
fieldset.output>div.action { display:none; }
fieldset.output>div.status { display:none; }
fieldset.output div.status { display:none; }
fieldset.output div.toggle { display:none; }
fieldset.input { position:fixed; z-index:10; background-color:#0d4142a6; top:32px; }
@ -188,8 +188,8 @@ body>div.upload input[type=file] { width:240px; }
textarea { tab-size:2; }
input, select, option, table.content, div.item, div.code, code.story, div.story[data-type=spark] { font-size:1.1rem; font-family:monospace; }
legend { font-size:1.2rem; }
/* fieldset>div.status>div.item>label { font-size:0.6rem; color:#bdb8b8e0; } */
fieldset>div.status>div.item>label { font-size:0.6rem; }
/* fieldset div.status>div.item>label { font-size:0.6rem; color:#bdb8b8e0; } */
fieldset div.status>div.item>label { font-size:0.6rem; }
body>div.toast div.title { color:#cae850; }
body>div.toast div.duration { color:gray; }
@ -220,8 +220,8 @@ body.white table td>input[type=button][value=启动] { background-color:#52ce78;
body.white table td>input[type=button][name=create] { background-color:blue; }
body.white table td>input[type=button][name=remove] { background-color:red; }
/* body.white fieldset>div.status>div.item>label { font-size:0.6rem; color:#cefbfbe0; } */
body.white fieldset>div.status>div.item>label { font-size:0.6rem; }
/* body.white fieldset div.status>div.item>label { font-size:0.6rem; color:#cefbfbe0; } */
body.white fieldset div.status>div.item>label { font-size:0.6rem; }
body.white fieldset.Action { color:black; }
body.white fieldset.Action>div.action { color:white; }
body.white fieldset.Action>div.action div.item { height:21px; }

View File

@ -84,6 +84,21 @@ Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, p
Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, cb, target) {
can.Conf(html.MARGIN_Y, 4*html.PLUGIN_MARGIN+2*html.ACTION_HEIGHT+html.ACTION_MARGIN)
can.Conf(html.MARGIN_X, 4*html.PLUGIN_MARGIN)
can.onengine.plugin(can, "info", shy("信息", {}, ["text", "list", "back"], function(msg, cmds) {
msg.Echo(JSON.stringify(can))
}))
can.onengine.plugin(can, "log", shy("日志", {}, ["text", "list", "back"], function(msg, cmds) {
console.log(cmds[0])
}))
can.onengine.plugin(can, "pie", shy("比例图", {}, ["list", "back"], function(msg, cmds) {
msg.Option(ice.MSG_DISPLAY, "/plugin/story/pie.js")
msg.Push("value", 200)
msg.Push("value", 300)
msg.Push("value", 400)
}))
can.onengine.plugin(can, "can.code.inner.plugin", shy("插件", {}, [{type: "button", name: "list", action: "auto"}, "back"], function(msg, cmds) {}))
target.ontouchstart = function(event) {
can.onengine.signal(can, "onaction_touch", can.request(event))
}, can.base.isFunc(cb) && cb()

View File

@ -152,6 +152,7 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, cb, t
onsearchfocus: function(can) {
can.page.Select(can, can._output, "div.search input", function(target) { target.focus() })
},
onwebpack: function(can, msg) { can.onaction["webpack"](msg._event, can) },
title: function(event, can) {
var args = {}; can.core.List([chat.TITLE, chat.TOPIC, chat.LAYOUT], function(key) {

View File

@ -86,19 +86,6 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, cb, t
can.onmotion.hidden(can, can._target)
}
can.onengine.plugin(can, "info", shy("信息", {}, ["text", "list", "back"], function(msg, cmds) {
msg.Echo(JSON.stringify(can))
}))
can.onengine.plugin(can, "log", shy("日志", {}, ["text", "list", "back"], function(msg, cmds) {
console.log(cmds[0])
msg.Option(ice.MSG_DISPLAY, "/plugin/story/pie.js")
}))
can.onengine.plugin(can, "pie", shy("比例图", {}, ["list", "back"], function(msg, cmds) {
msg.Option(ice.MSG_DISPLAY, "/plugin/story/pie.js")
msg.Push("value", 200)
msg.Push("value", 300)
msg.Push("value", 400)
}))
can.base.isFunc(cb) && cb()
},
_trans: {"river": "菜单"},

View File

@ -1,8 +1,6 @@
Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target) {
can.onengine.plugin(can, "can.code.inner.plugin", shy("插件", {}, [{type: "button", name: "list", action: "auto"}, "back"], function(msg, cmds) {
msg.Echo("can.code.inner.plugin")
msg.result = msg.result.concat(cmds||[])
}))
if (!can.user.isMobile) { can.page.style(can, can._action, html.HEIGHT, "31", html.DISPLAY, "block") }
can.onengine.plugin(can, "can.code.inner.plugin", shy("插件", {}, [{type: "button", name: "list", action: "auto"}, "back"], function(msg, cmds) {}))
var paths = can.core.Split(can.Option(nfs.PATH), ice.FS); can.Option(nfs.PATH, paths[0])
var files = can.core.Split(can.Option(nfs.FILE), ice.FS); can.Option(nfs.FILE, files[0])
@ -16,9 +14,11 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
can.base.isFunc(cb) && cb(msg)
if (can.page.ClassList.has(can, can._fields, chat.FLOAT) || can.page.ClassList.has(can, can._fields, chat.PLUGIN)) {
if (!can.user.mod.isCmd) {
can.page.style(can, can.ui.project, html.MIN_HEIGHT, can.ConfHeight())
can.page.style(can, can.ui.content, html.MIN_HEIGHT, can.ConfHeight())
}
}
can.onimport.tabview(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE))
can.Conf("mode") == "simple"? can.onimport._simple(can): can.onimport.project(can, paths, function() {
@ -32,42 +32,50 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
},
_simple: function(can, target) {
can.Conf(html.HEIGHT, ""), can.ui.project._toggle()
can.page.ClassList.add(can, can._fields, "output")
can.page.ClassList.add(can, can._fields, chat.OUTPUT)
},
_project: function(can, target) {
target._toggle = function(event) { can.onmotion.toggle(can, target), can.onimport.layout(can) }
},
_profile: function(can, target) {
var ui = can.page.Append(can, target, [{view: html.ACTION}, {view: html.OUTPUT}]); can.ui.profile_output = ui.output
var action = can.onappend._action(can, [cli.SHOW, cli.CLEAR, mdb.PLUGIN, cli.CLOSE, "size"], ui.action, kit.Dict(
cli.SHOW, function(event) { can.onaction["展示"](event, can) },
cli.CLEAR, function(event) { can.onmotion.clear(can, ui.output) },
var action = can.onappend._action(can, [], ui.action, kit.Dict(
cli.CLOSE, function(event) { can.onmotion.hidden(can, target), can.onimport.layout(can) },
"size", function(event) {
can.user.input(event, can, ["size"], function(event, button, data) {
can.profile_size[can.onexport.keys(can)] = can.ConfWidth()*parseInt(data.size)/100
can.onaction["展示"](event, can)
})
},
cli.CLEAR, function(event) { can.onmotion.clear(can, ui.output) },
cli.SHOW, function(event) { can.onaction["展示"](event, can) },
"加载", function(event) { can.onaction["加载"](event, can), can.user.ToastSuccess(can) },
mdb.PLUGIN, function(event) {
can.user.input(event, can, [ctx.INDEX], function(event, button, data) {
can.onimport.plugin(can, data, ui.output)
})
}
},
html.WIDTH, function(event) {
can.user.input(event, can, [{name: html.WIDTH, value: 50}], function(event, button, data) {
can.profile_size[can.onexport.keys(can)] = can.ConfWidth()*parseInt(data.width)/100
can.onaction["展示"](event, can)
})
},
))
target._toggle = function(event, show) { action[show? cli.SHOW: cli.CLOSE](event) }
},
_display: function(can, target) {
var ui = can.page.Append(can, target, [{view: html.ACTION}, {view: html.OUTPUT}, {}]); can.ui.display_output = ui.output
var action = can.onappend._action(can, [cli.EXEC, cli.CLEAR, mdb.PLUGIN, cli.CLOSE], ui.action, kit.Dict(
cli.EXEC, function(event) { can.onaction["执行"](event, can) },
cli.CLEAR, function(event) { can.onmotion.clear(can, ui.output) },
var ui = can.page.Append(can, target, [{view: html.ACTION}, {view: html.OUTPUT}, {view: html.STATUS}])
can.ui.display_output = ui.output, can.ui.display_status = ui.status
var action = can.onappend._action(can, [], ui.action, kit.Dict(
cli.CLOSE, function(event) { can.onmotion.hidden(can, target), can.onimport.layout(can) },
cli.CLEAR, function(event) { can.onmotion.clear(can, ui.output) },
cli.EXEC, function(event) { can.onaction["执行"](event, can) },
mdb.PLUGIN, function(event) {
can.user.input(event, can, [ctx.INDEX], function(event, button, data) {
can.onimport.plugin(can, data, ui.output)
})
}
},
html.HEIGHT, function(event) {
can.user.input(event, can, [{name: html.HEIGHT, value: 50}], function(event, button, data) {
can.profile_size[can.onexport.keys(can)] = can.ConfHeight()*parseInt(data.height)/100
can.onaction["执行"](event, can)
})
},
))
target._toggle = function(event, show) { action[show? cli.EXEC: cli.CLOSE](event) }
},
@ -125,8 +133,9 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
can.onmotion.hidden(can, can.ui.profile, true), can.onimport.layout(can)
},
display: function(can, msg) {
var height = can.profile_size[can.onexport.keys(can)]||{sh: can.ConfHeight()/2}[can.parse]||can.ConfHeight()/4
msg && can.onimport.process(can, msg, can.ui.display_output, can.ConfWidth())
can.page.style(can, can.ui.display_output, html.MAX_HEIGHT, can.ConfHeight()/4)
can.page.style(can, can.ui.display_output, html.MAX_HEIGHT, height)
can.onmotion.hidden(can, can.ui.display, true), can.onimport.layout(can)
},
toolkit: function(can, meta, cb) {
@ -156,7 +165,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
can.onmotion.clear(can, target)
if (msg.Option("_process") == "_field") {
msg.Table(function(meta) { meta.display = msg.Option("_display")
delete(Volcanos.meta.cache[meta.display])
// delete(Volcanos.meta.cache[meta.display])
can.onimport.plugin(can, meta, target, function(sub) {
can.onmotion.focus(can, can.page.Select(can, sub._option, html.OPTION_ARGS)[0])
width && sub.ConfWidth(width)
@ -184,7 +193,8 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
can.page.styleHeight(can, can.ui.project, can.ui.content.offsetHeight)
}
if (can.user.mod.isCmd) {
can.page.styleHeight(can, can.ui.content, (can.ui.project.offsetHeight||height)-can.ui.display.offsetHeight)
can.page.styleHeight(can, can.ui.content, (can.ui.project.offsetHeight||height)
-can.ui.display.offsetHeight-(can.ui.display.style.display != html.NONE && can.ui.display_status.innerText? html.ACTION_HEIGHT: 0))
}
if (can.page.ClassList.has(can, can._fields, "full")) {
@ -242,11 +252,15 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
})
return
}
can.onmotion.clear(can, can.ui.content)
can.onmotion.clear(can, can.ui.content)
function init(p) { can.max = 0, can.core.List(can.ls = msg.Result().split(ice.NL), function(item) {
can.onaction.appendLine(can, item)
}), can.onaction.selectLine(null, can, msg.Option(nfs.LINE)), can.base.isFunc(cb) && cb() }
}), can.onaction.selectLine(null, can, msg.Option(nfs.LINE)), can.base.isFunc(cb) && cb()
msg.Option(nfs.FILE).indexOf("website/") == 0 && can.onaction["展示"]({}, can)
p && p.render && can.onaction["展示"]({}, can)
p && p.engine && can.onaction["执行"]({}, can)
}
var p = can.onsyntax[can.parse]; !p? can.run({}, [ctx.ACTION, mdb.PLUGIN, can.parse, msg.Option(nfs.FILE), msg.Option(nfs.PATH)], function(msg) {
init(p = can.onsyntax[can.parse] = can.base.Obj(msg.Result()))
@ -317,9 +331,12 @@ Volcanos("onkeymap", {help: "导入数据", _init: function(can, msg, cb, target
}, _engine: {},
})
Volcanos("onaction", {help: "控件交互", list: ["搜索", "打开", "添加", "插件", "扩展"],
"刷新": function(event, can) {
can.onimport.tabview(can, "src/", "main.go", "", function() {}, skip)
_trans: {width: "宽度", height: "高度", website: "网页"},
"加载": function(event, can) {
var file = "/require/shylinux.com/x/contexts/"+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")`)
},
"刷新": function(event, can) { can.onimport.tabview(can, "src/", "main.go", "", function() {}, skip) },
"搜索": function(event, can) {
can.user.input(event, can, [mdb.NAME, [ctx.ACTION, nfs.TAGS, nfs.GREP, cli.MAKE]], function(event, button, data) {
can.ui.search.Update({}, [ctx.ACTION, data.action, data.name])
@ -352,13 +369,15 @@ Volcanos("onaction", {help: "控件交互", list: ["搜索", "打开", "添加",
"工具": function(event, can) { can.onmotion.toggle(can, can.ui.toolkit.fieldset) },
"执行": function(event, can) { can.onimport.display(can), can.request(event, {_toast: "执行中..."})
can.run(event, [ctx.ACTION, mdb.ENGINE, can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
can.onimport.display(can, msg)
can.onappend._status(can, msg.Option(ice.MSG_STATUS), can.ui.display_status)
can.onimport.display(can, msg), can.onimport.layout(can)
}, true)
},
"展示": function(event, can) { can.onimport.profile(can), can.request(event, {_toast: "渲染中..."})
if (can.Option(nfs.FILE).indexOf("website/") == 0) {
can.profile_size[can.onexport.keys(can)] = can.profile_size[can.onexport.keys(can)] || can.ConfWidth()*parseInt(70)/100
}
can.parse == "js" && can.onaction["加载"](event, can)
can.run(event, [ctx.ACTION, mdb.RENDER, can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
can.onimport.profile(can, msg)
}, true)
@ -490,7 +509,7 @@ Volcanos("onexport", {help: "导出数据", list: ["文件数", "解析器", "
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)+ice.NL
return can.page.Select(can, can.ui.content, "td.text", function(item) { return item.innerText }).join(ice.NL)
},
})

View File

@ -3,6 +3,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.page.ClassList.add(can, can._fields, "inner")
can.onkeymap._build(can), can.onimport._input(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)
if (name == chat.ONACTION) { can._trans = can.base.Copy(can._trans||{}, sub._trans) }
if (name == chat.ONKEYMAP) {
can.base.Copy(can.onkeymap._mode, sub._mode)
can.core.Item(can.onkeymap._mode.normal, function(k, v) {
@ -126,7 +127,6 @@ Volcanos("onkeymap", {help: "键盘交互", list: [],
}, _engine: {},
})
Volcanos("onaction", {help: "控件交互", list: [nfs.SAVE, code.AUTOGEN, code.COMPILE, chat.WEBSITE],
_trans: {website: "网页"},
save: function(event, can) { var msg = can.request(event, {content: can.onexport.content(can)})
can.run(event, [ctx.ACTION, nfs.SAVE, can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
can.user.toastSuccess(can)
@ -154,14 +154,6 @@ Volcanos("onaction", {help: "控件交互", list: [nfs.SAVE, code.AUTOGEN, code.
can.onimport.tabview(can, "src/", "website/"+list[0], "", function() {}, true)
})
},
"加载": function(event, can) {
var file = "/share/local/"+can.Option(nfs.PATH)+can.Option(nfs.FILE)
delete(Volcanos.meta.cache[file])
// var script = `\n_can_name = "`+file+`"\n`+
// can.onexport.content(can)+
// `\n_can_name = ""\nconsole.log("once")`
// eval(script)
},
_selectLine: function(event, can) {
can.page.Select(can, can.current.line, "td.text", function(td) { can.current.line.appendChild(can.ui.current)

View File

@ -31,7 +31,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
msg.Table(function(item) { can.onappend._plugin(can, item, {arg: can.base.Obj(item[ice.ARG], [])}, function(sub, meta) {
var opt = can.base.Obj(item[ice.OPT], [])
sub.Conf(html.HEIGHT, can.Conf(html.HEIGHT))
sub.Conf(html.WIDTH, can.Conf(html.WIDTH))
sub.Conf(html.WIDTH, can.Conf(html.WIDTH)-4*html.PLUGIN_MARGIN)
sub.run = function(event, cmds, cb, silent) {
var res = can.request(event, can.Option())
for (var i = 0; i < opt.length; i += 2) { res.Option(opt[i], opt[i+1]) }
@ -73,7 +73,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
})
Volcanos("onaction", {help: "交互操作", list: [
"共享工具", "切换全屏", "打开链接", "生成链接", "生成图片", "生成脚本", "刷新数据", "刷新页面", [
"其它", "清空参数", "复制数据", "下载数据", "清空数据", "删除工具", "摄像头",
"其它", "清空参数", "复制数据", "下载数据", "清空数据", "删除工具", "打包页面", "摄像头",
],
], _init: function(can, msg, list, cb, target) {},
_engine: function(event, can, button) { can.Update(event, [ctx.ACTION, button].concat(can.Input([], true))) },
@ -124,6 +124,7 @@ Volcanos("onaction", {help: "交互操作", list: [
can.user.copy(event, can, list[0])
},
"刷新数据": function(event, can) { can.Update({}, can.Input([], true)) },
"打包页面": function(event, can) { can.onengine.signal(can, "onwebpack", can.request(event)) },
"刷新页面": function(event, can) {
var sub = can.core.Value(can._outputs, "-1"), msg = sub._msg
can.core.CallFunc([sub, chat.ONIMPORT, "_init"], {can: sub, msg: msg, list: msg.result||msg.append||[], cb: function(msg) {

View File

@ -1,13 +1,14 @@
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
can.require(["/plugin/local/wiki/draw.js", "/plugin/local/wiki/draw/path.js"], function() {
var height = msg.Option(html.HEIGHT)||can.ConfHeight()
can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg)
can.onmotion.clear(can), can.onimport._show(can, msg)
var r = can.ConfHeight()/2-20, margin = 20; can.svg.Val(html.WIDTH, 2*(r+margin)), can.svg.Val(html.HEIGHT, 2*(r+margin))
var r = height/2-20, margin = 20; can.svg.Val(html.WIDTH, 2*(r+margin)), can.svg.Val(html.HEIGHT, 2*(r+margin))
can._args = can.base.Copy({field: "value"}, can.base.ParseURL(can._display))
can.onimport._draw(can, msg, can._args.field, r+margin, r+margin, r, margin, 0)
can.onmotion.clear(can, can.ui.project), can.onappend.table(can, msg, null, can.ui.project)
can.onmotion.hidden(can, can.ui.project, true)
var rest = can.ConfWidth()-can.ConfHeight()
var rest = can.ConfWidth()-height
can.page.Modify(can, can.ui.project, {style: {"max-width": rest}})
can.page.Select(can, can.ui.project, html.TR, function(tr, index) {
can.page.Modify(can, tr, {onmouseenter: function(event) {

View File

@ -264,12 +264,13 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args:
// 预加载
libs = []; for (var i = 0; i < Config.panels.length; i++) { var panel = Config.panels[i]
panel && (libs = libs.concat(panel.list = panel.list||["/panel/"+panel.name+".css", "/panel/"+panel.name+".js"]))
}; libs = libs.concat(Config.plugin, Config.main.list)
}; libs = libs.concat(Config.plugin, Config.main.list||[])
// 根模块
_can_name = "", name = Config.name||"chat", cb = can||function(can) {
can.onengine._init(can, can.Conf(Config), Config.panels, Config._init, can._target)
}, can = {_follow: name, _target: Config.target||document.body}, can._root = can
}
can = {_follow: name, _target: Config.target||meta.target}, can._root = can
for (var k in Config) { can[k] = Config[k] }
}
@ -355,11 +356,7 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args:
}, _conf: {},
}
can = can||{}; if (navigator.userAgent.indexOf("MSIE") > -1) {
for (var k in proto) { can[k] = proto[k] }
} else {
can.__proto__ = proto
}
can = can||{}, can.__proto__ = proto
if (_can_name) { // 加入缓存
meta.cache[_can_name] = meta.cache[_can_name]||[], meta.cache[_can_name].push(can)
@ -402,3 +399,29 @@ function can(tool) {
]})
}
try { if (global) {
global.kit = kit, global.ice = ice
global.ctx = ctx, global.cli = cli, global.web = web, global.aaa = aaa
global.mdb = mdb, global.ssh = ssh, global.nfs = nfs, global.tcp = tcp
global.code = code, global.wiki = wiki, global.chat = chat, global.team = team, global.mall = mall
global.svg = svg, global.html = html, global.lang = lang
global.shy = shy, global.Volcanos = Volcanos
Volcanos.meta._load = function(url, cb) { _can_name = url
switch (url.split("?")[0].split(ice.PT).pop().toLowerCase()) {
case nfs.JS: require(url), cb(Volcanos.meta.cache[_can_name]); break
}
}
Volcanos.meta._load(global.plugin, function(cache) {
Volcanos.meta.volcano = "./frame.js", Volcanos({libs: [
"./lib/base.js", "./lib/core.js", "./lib/misc.js", "./lib/page.js", // "./lib/user.js",
], panels: [], plugin: []}, function(can) { can.core.List(cache, function(item) { can[item._name] = item })
Volcanos.meta._load("./publish/client/nodejs/proto.js", function(cache) {
can.core.List(cache, function(item) { can.base.Copy(can[item._name]||{}, item) })
can.onimport._init(can, can.request(), function(msg) { console.log(ice.NL) }, null)
})
})
})
} } catch (e) { console.log(e) }
try { Volcanos.meta.target = document.body } catch (e) { }

View File

@ -0,0 +1,34 @@
Volcanos("onappend", {help: "渲染引擎", list: [],
table: function(can, msg) {
var max = {}; msg.Table(function(value, index, array) {
for (var k in value) { if (value[k].length > (max[k]||0)) {
max[k] = value[k].length
} }
})
var list = []; msg.Table(function(value, index, array) { var line = []
if (index == 0) {
for (var i = 0; i < msg.append.length; i++) { line.push(msg.append[i])
for (var j = 0; j <= max[msg.append[i]]-msg.append[i].length; j++) {
line.push(ice.SP)
}
line.push(ice.SP)
}
list.push(line.join(""))
}
line = []; for (var i = 0; i < msg.append.length; i++) { var k = msg.append[i]
line.push(value[k])
for (var j = 0; j <= max[k]-value[k]; j++) {
line.push(ice.SP)
}
line.push(ice.SP)
}
list.push(line.join(""))
})
console.log(list.join(ice.NL))
},
board: function(can, msg) {
console.log(msg.Result())
},
})