mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
opt action.js
This commit is contained in:
parent
a0ab9b8020
commit
02fcf73f17
23
frame.js
23
frame.js
@ -5,14 +5,14 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
|
||||
}
|
||||
if (can.user.isExtension) { Volcanos.meta.args = JSON.parse(localStorage.getItem(ctx.ARGS))||{} }
|
||||
can.core.Next(list, function(item, next) { item.type = chat.PANEL
|
||||
can.onappend._init(can, item, item.list, function(panel) {
|
||||
can.onappend._init(can, item, item.list, function(panel) { panel.Conf(item)
|
||||
panel.run = function(event, cmds, cb) { var msg = panel.request(event); cmds = cmds||[]
|
||||
return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, panel, cmds, cb)
|
||||
}, can[item.name] = panel, panel._root = can, panel._trans = panel.onaction && panel.onaction._trans||{}
|
||||
|
||||
can.core.ItemCB(panel.onaction, function(key, cb) {
|
||||
can.onengine.listen(can, key, function(msg) { can.core.CallFunc(cb, {can: panel, msg: msg}) })
|
||||
}), panel.onaction._init(panel, item, item.list, next, panel._target)
|
||||
}), can.core.CallFunc([panel.onaction, "_init"], {can: panel, cb: next, target: panel._target})
|
||||
}, target)
|
||||
}, function() { can.misc.Log(can.user.title(), ice.RUN, can)
|
||||
can.require([can.volcano], null, function(can, name, sub) { can[name] = sub })
|
||||
@ -165,7 +165,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
can.base.isFunc(cb) && cb(sub)
|
||||
}); return sub
|
||||
},
|
||||
_option: function(can, meta, option, skip) { meta = meta||{}; var index = -1, args = can.base.Obj(meta.args||meta.arg, []), opts = can.base.Obj(meta.opts, {})
|
||||
_option: function(can, meta, option, skip) { meta = meta||{}; var index = -1, args = can.base.Obj(meta.args||meta.arg||meta.opt, []), opts = can.base.Obj(meta.opts, {})
|
||||
function add(item, next) { item.type != html.BUTTON && index++
|
||||
return Volcanos(item.name, {_follow: can.core.Keys(can._follow, item.name),
|
||||
_target: can.onappend.input(can, item, args[index]||opts[item.name], option||can._option),
|
||||
@ -425,10 +425,10 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
},
|
||||
}, [], function(can) {})
|
||||
Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, target) { target = target||document.body
|
||||
var list = []; document.body.onresize = function() {
|
||||
can.core.Delay(list, 1000, function() { can.onlayout._init(can, target) })
|
||||
}
|
||||
|
||||
// var list = []; document.body.onresize = function() {
|
||||
// can.core.Delay(list, 1000, function() { can.onlayout._init(can, target) })
|
||||
// }
|
||||
//
|
||||
var width = window.innerWidth, height = window.innerHeight
|
||||
can.page.Select(can, target, [can.core.Keys(html.FIELDSET, chat.HEAD), can.core.Keys(html.FIELDSET, chat.FOOT)], function(field) {
|
||||
height -= field.offsetHeight
|
||||
@ -447,10 +447,9 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe
|
||||
if (can.user.isMobile) {
|
||||
can.page.Modify(can, field, {style: {"padding-top": can.user.isLandscape()? "0px": ""}})
|
||||
} else {
|
||||
height -= can.page.Select(can, field, can.core.Keys(html.DIV, html.ACTION))[0].offsetHeight
|
||||
|
||||
can.page.Modify(can, field, {style: {height: height}})
|
||||
can.page.Select(can, target, "fieldset.main>div.output", function(output) {
|
||||
height -= can.page.Select(can, field, can.core.Keys(html.DIV, html.ACTION))[0].offsetHeight
|
||||
can.page.Modify(can, output, {style: {height: height}})
|
||||
})
|
||||
}
|
||||
@ -537,6 +536,11 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
||||
clear: function(can, target) {
|
||||
return can.page.Modify(can, target||can._output, ""), true
|
||||
},
|
||||
share: function(event, can, input, args) {
|
||||
return can.user.input(event, can, input, function(ev, button, data, list, _args) {
|
||||
can.search(can.request(event, {args: [mdb.TYPE, chat.FIELD].concat(args||[], _args||[])})._event, ["Header.onaction.share"])
|
||||
})
|
||||
},
|
||||
story: {
|
||||
_hash: {
|
||||
spark: function(can, meta, target) {
|
||||
@ -661,6 +665,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
||||
}
|
||||
},
|
||||
move: function(can, target, layout, cb) { var begin
|
||||
can.page.Modify(can, target, {style: layout})
|
||||
target.onmousedown = function(event) {
|
||||
layout.height = target.offsetHeight, layout.width = target.offsetWidth
|
||||
layout.left = target.offsetLeft, layout.top = target.offsetTop
|
||||
|
@ -63,7 +63,7 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg
|
||||
},
|
||||
Push: function(key, value, detail) {
|
||||
if (can.base.isObject(key)) {
|
||||
value = value || can.core.Item(key), can.core.List(value, function(item) {
|
||||
value = value||can.core.Item(key), can.core.List(value, function(item) {
|
||||
detail? msg.Push(mdb.KEY, item).Push(mdb.VALUE, key[item]||""):
|
||||
msg.Push(item, key[item]||"")
|
||||
})
|
||||
|
16
lib/page.js
16
lib/page.js
@ -337,7 +337,7 @@ Volcanos("page", {help: "用户界面", ClassList: {
|
||||
if (item.password) { return item }
|
||||
item.autocomplete = "off"
|
||||
item.value = value||item.value||""
|
||||
item.className || can.page.ClassList.add(can, item, "args")
|
||||
item.className || can.page.ClassList.add(can, item, ctx.ARGS)
|
||||
break
|
||||
case html.SELECT: input.type = html.SELECT
|
||||
item.values = can.base.isString(item.values)? can.core.Split(item.values): item.values
|
||||
@ -345,7 +345,7 @@ Volcanos("page", {help: "用户界面", ClassList: {
|
||||
|
||||
item.value = value||item.value, input.list = item.values.map(function(value) {
|
||||
return {type: html.OPTION, value: value, inner: value}
|
||||
}), item.className || can.page.ClassList.add(can, item, "args")
|
||||
}), item.className || can.page.ClassList.add(can, item, ctx.ARGS)
|
||||
break
|
||||
case html.BUTTON: item.value = item.value||item.name||"list"; break
|
||||
case "upfile": item.type = html.FILE; break
|
||||
@ -354,5 +354,17 @@ Volcanos("page", {help: "用户界面", ClassList: {
|
||||
}
|
||||
return input
|
||||
},
|
||||
|
||||
style: function(can, target, style) { var value = {}
|
||||
for (var i = 2; i < arguments.length; i += 2) {
|
||||
if (typeof arguments[i] == lang.OBJECT) {
|
||||
can.base.Copy(value, arguments[i--])
|
||||
} else {
|
||||
value[arguments[i]] = arguments[i+1]
|
||||
}
|
||||
}
|
||||
can.page.Modify(can, target, {style: value})
|
||||
return value
|
||||
},
|
||||
})
|
||||
|
||||
|
12
lib/user.js
12
lib/user.js
@ -56,14 +56,13 @@ Volcanos("user", {help: "用户操作", agent: {
|
||||
language: function(can) {
|
||||
return can.misc.Search(can, "language")
|
||||
},
|
||||
trans: function(can, text) {
|
||||
if (can.user.language(can) == "en") { return text }
|
||||
if (can.base.isObject(text)) {
|
||||
trans: function(can, text, list) { if (can.base.isObject(text)) {
|
||||
return can.core.Item(text, function(k, v) { can.core.Value(can._trans, k, v) })
|
||||
}
|
||||
|
||||
if (can.user.language(can) == "en") { return text }
|
||||
if (can.base.isFunction(text)) { text = text.name||"" }
|
||||
return can._trans&&can._trans[text] || can.Conf("trans."+text) || can.Conf("feature._trans."+text) || {
|
||||
return list&&list[text] || can.Conf("trans."+text) || can.Conf("feature._trans."+text) || can._trans&&can._trans[text] || {
|
||||
"create": "创建", "remove": "删除", "insert": "添加", "delete": "删除", "modify": "编辑",
|
||||
"inputs": "补全", "prunes": "清理", "export": "导出", "import": "导入",
|
||||
"list": "查看", "back": "返回", "run": "执行", "done": "完成", "share": "共享",
|
||||
@ -78,8 +77,8 @@ Volcanos("user", {help: "用户操作", agent: {
|
||||
"label": "标签", "exec": "执行",
|
||||
}[text]||text
|
||||
},
|
||||
toastSuccess: function(can) {
|
||||
can.user.toast(can, ice.SUCCESS)
|
||||
toastSuccess: function(can, title) {
|
||||
can.user.toast(can, ice.SUCCESS, title)
|
||||
},
|
||||
toast: function(can, content, title, duration, progress) {
|
||||
var meta = can.base.isObject(content)? content: {content: content, title: title||can._help, duration: duration, progress: progress}
|
||||
@ -233,6 +232,7 @@ Volcanos("user", {help: "用户操作", agent: {
|
||||
},
|
||||
|
||||
input: function(event, can, form, cb, button) { // form [ string, array, object, {type: "select", values: []}
|
||||
if (!form || form.length == 0) { return cb()}
|
||||
var msg = can.request(event)
|
||||
var ui = can.page.Append(can, document.body, [{view: [html.INPUT], style: {left: 0, top: 0}, list: [
|
||||
{view: [chat.OPTION, html.TABLE], list: can.core.List(form, function(item) {
|
||||
|
211
panel/action.js
211
panel/action.js
@ -1,73 +1,69 @@
|
||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) {
|
||||
var river = can.Conf(chat.RIVER), storm = can.Conf(chat.STORM)
|
||||
can.onmotion.clear(can), can.core.Next(msg.Table(), function(item, next) { item.type = chat.PLUGIN
|
||||
item.height = parseInt(can.Conf(html.HEIGHT))-240, item.width = parseInt(can.Conf(html.WIDTH))-40
|
||||
item.feature = can.base.Obj(item.feature||item.meta), item.inputs = can.base.Obj(item.inputs||item.list)
|
||||
item.height = parseInt(can.Conf(html.HEIGHT))-can.Conf(html.MARGIN_Y)
|
||||
item.width = parseInt(can.Conf(html.WIDTH))-can.Conf(html.MARGIN_X)
|
||||
item.feature = can.base.Obj(item.feature||item.meta)
|
||||
item.inputs = can.base.Obj(item.inputs||item.list)
|
||||
|
||||
can.onappend.plugin(can, item, function(sub, meta, skip) {
|
||||
can.onimport._plugin(can, river, storm, sub, meta), skip || next()
|
||||
})
|
||||
}, function() {
|
||||
}, function() { can.onimport._menu(can, msg), can.onkeypop._init(can)
|
||||
can.onaction.layout(can, can.misc.Search(can, chat.LAYOUT)||can.Conf(chat.LAYOUT))
|
||||
!can.user.isMobile && can.onimport._menu(can, msg)
|
||||
})
|
||||
},
|
||||
_plugin: function(can, river, storm, sub, meta) {
|
||||
sub.run = function(event, cmds, cb) { var msg = sub.request(event); cmds = cmds||[]
|
||||
var toast = msg.Option("_toast") && can.user.toast(can, msg.Option("_toast"), "", -1)
|
||||
return can.run(event, can.misc.concat([river, storm, meta.id||meta.index||can.core.Keys(meta.key, meta.name)], cmds), function(msg) {
|
||||
toast && toast.close(), can.base.isFunc(cb) && cb(msg)
|
||||
})
|
||||
_plugin: function(can, river, storm, sub, meta) { sub._target._meta = meta
|
||||
sub.run = function(event, cmds, cb) { var msg = sub.request(event)
|
||||
return can.run(event, can.misc.concat([river, storm, meta.id||meta.index||can.core.Keys(meta.key, meta.name)], cmds||[]), cb)
|
||||
}, can._plugins = (can._plugins||[]).concat([sub])
|
||||
|
||||
can.page.Modify(can, sub._output, {style: {"max-width": meta.width}})
|
||||
can.page.Append(can, can._action, [{view: [html.ITEM, html.DIV, meta.name], onclick: function(event) {
|
||||
can.onmotion.select(can, can._output, "fieldset.plugin", sub._target)
|
||||
can.onmotion.select(can, can._action, "div.item", event.target)
|
||||
}}])
|
||||
meta.id && (sub._option.dataset = sub._option.dataset||{}, sub._option.dataset.id = meta.id)
|
||||
|
||||
sub._option.dataset = sub._option.dataset||{}
|
||||
meta.id && (sub._option.dataset.id = meta.id)
|
||||
sub._target.Meta = meta
|
||||
can.page.Modify(can, sub._output, {style: kit.Dict(html.MAX_WIDTH, meta.width)})
|
||||
can.page.Append(can, can._action, [{view: [html.ITEM, html.DIV, meta.name], onclick: function(event) {
|
||||
can.onmotion.select(can, can._output, html.FIELDSET_PLUGIN, sub._target)
|
||||
can.onmotion.select(can, can._action, html.DIV_ITEM, event.target)
|
||||
}}])
|
||||
},
|
||||
_menu: function(can, msg) { if (can.user.mod.isPod||can.user.isMobile) { return }
|
||||
can._menu && can.page.Remove(can, can._menu)
|
||||
can._menu = can.search({}, ["Header.onimport.menu", ctx.ACTION].concat(
|
||||
can.base.Obj(msg.Option("menus"), [
|
||||
["help", "tutor", "manual", "service", "devops", "refer"],
|
||||
])
|
||||
), function(event, button, list) {
|
||||
list[0] == "help"? can.user.open("/help/"+button+".shy"): can.onaction.layout(can, button)
|
||||
})
|
||||
can.setHeaderMenu(can.base.Obj(msg.Option(chat.MENUS), [
|
||||
[chat.LAYOUT, "auto", "flow", "grid", "tabs", "free"],
|
||||
[ice.HELP, "tutor", "manual", "service", "devops", "refer"],
|
||||
]), function(event, button, list) { can.core.CallFunc([can.onaction, list[0]], [can, button]) })
|
||||
},
|
||||
_share: function(can, share) { if (!share) { return }
|
||||
can.run({}, ["_share", share], function(msg) {
|
||||
can.user.topic(can, can.misc.Search(can, chat.TOPIC)||msg.Option(chat.TOPIC))
|
||||
can.user.title(can.misc.Search(can, chat.TITLE)||msg.Option(chat.TITLE))
|
||||
can.onaction.layout(can, "auto")
|
||||
|
||||
if (msg[mdb.INDEX].length == 1) {
|
||||
can.user.mod.isCmd = true, can.page.ClassList.add(can, can._target, "cmd")
|
||||
can.page.Select(can, document.body, "fieldset.panel", function(item) {
|
||||
item != can._target && can.onmotion.hidden(can, item)
|
||||
})
|
||||
can.Conf({height: window.innerHeight, width: window.innerWidth+40})
|
||||
} else {
|
||||
can.Conf({height: window.innerHeight, width: window.innerWidth})
|
||||
}
|
||||
can.Conf(chat.RIVER, "_share"), can.Conf(chat.STORM, share)
|
||||
can.onimport._init(can, msg)
|
||||
_share: function(can, share) { share && can.run({}, ["_share", share], function(msg) {
|
||||
can.user.topic(can, can.misc.Search(can, chat.TOPIC)||msg.Option(chat.TOPIC))
|
||||
can.user.title(can.misc.Search(can, chat.TITLE)||msg.Option(chat.TITLE))
|
||||
can.page.Select(can, document.body, html.FIELDSET_PANEL, function(item) {
|
||||
item != can._target && can.onmotion.hidden(can, item)
|
||||
})
|
||||
|
||||
can.Conf(html.MARGIN_X, 0, html.MARGIN_Y, 2*html.ACTION_HEIGHT)
|
||||
can.page.ClassList.add(can, can._target, ice.CMD)
|
||||
can.onlayout._init(can)
|
||||
|
||||
can.Conf(chat.RIVER, "_share", chat.STORM, share)
|
||||
can.onimport._init(can, msg)
|
||||
}) },
|
||||
_cmd: function(can, item, next) {
|
||||
can.base.Copy(item, {
|
||||
height: can.Conf(html.HEIGHT)-can.Conf(html.MARGIN_Y),
|
||||
width: can.Conf(html.WIDTH)-can.Conf(html.MARGIN_X),
|
||||
opts: can.misc.Search(can),
|
||||
})
|
||||
can.onappend.plugin(can, item, function(sub, meta, skip) {
|
||||
can.user.title(meta.name), skip || next()
|
||||
})
|
||||
},
|
||||
})
|
||||
Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, page, msg, can, cmds, cb) {
|
||||
if (!can._root.river) { return false }
|
||||
var list = can._root.river; var river = list[cmds[0]]
|
||||
var storm = river && river.storm[cmds[1]]
|
||||
var storm = can.core.Value(can._root, can.core.Keys(chat.RIVER, cmds[0], chat.STORM, cmds[1]))
|
||||
if (!storm || cmds.length != 2) { return false }
|
||||
|
||||
if (storm.index) { cmds = [ctx.ACTION, ctx.COMMAND].concat(storm.index)
|
||||
can.run(event, cmds, cb) // 命令详情
|
||||
if (storm.index) { // 命令索引
|
||||
can.run(event, [ctx.ACTION, ctx.COMMAND].concat(storm.index), cb)
|
||||
} else { // 命令列表
|
||||
can.core.List(storm.list, function(value) {
|
||||
msg.Push(mdb.NAME, value.name||"")
|
||||
@ -76,86 +72,86 @@ Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, p
|
||||
msg.Push(ctx.FEATURE, JSON.stringify(value.feature))
|
||||
msg.Push(ctx.INDEX, value.index||"")
|
||||
msg.Push(ctx.ARGS, value.args||"[]")
|
||||
msg.Push("_action", value._action||"")
|
||||
msg.Push(ice.MSG_ACTION, value._action||"")
|
||||
}), can.base.isFunc(cb) && cb(msg)
|
||||
}
|
||||
return true
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) {
|
||||
can._target.ontouchstart = function(event) {
|
||||
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)
|
||||
target.ontouchstart = function(event) {
|
||||
can.onengine.signal(can, "onaction_touch", can.request(event))
|
||||
}
|
||||
can.base.isFunc(cb) && cb()
|
||||
}, can.base.isFunc(cb) && cb()
|
||||
},
|
||||
onmain: function(can, msg) {
|
||||
_trans: {
|
||||
"layout": "布局",
|
||||
"auto": "默认布局",
|
||||
"flow": "流动布局",
|
||||
"grid": "网格布局",
|
||||
"tabs": "标签布局",
|
||||
"free": "自由布局",
|
||||
|
||||
"help": "帮助",
|
||||
"tutor": "入门简介",
|
||||
"manual": "使用手册",
|
||||
"service": "服务手册",
|
||||
"devops": "编程手册",
|
||||
"refer": "参考手册",
|
||||
},
|
||||
onmain: function(can) {
|
||||
can.onimport._share(can, can.misc.Search(can, web.SHARE))
|
||||
can.onkeypop._init(can)
|
||||
},
|
||||
onlogin: function(can) { if (!can.user.mod.isCmd) { return }
|
||||
can.page.ClassList.add(can, can._target, "cmd")
|
||||
can.Conf(html.MARGIN_X, 0, html.MARGIN_Y, 2*html.ACTION_HEIGHT)
|
||||
can.page.ClassList.add(can, can._target, ice.CMD)
|
||||
can.onlayout._init(can)
|
||||
|
||||
can._names = location.pathname
|
||||
can.Conf(chat.TOOL)? can.core.Next(can.Conf(chat.TOOL), function(item, next) {
|
||||
can.core.Timer(500, function() { can.onaction._plugin(can, item, next) })
|
||||
can.onimport._cmd(can, item, next)
|
||||
|
||||
}): can.run(can.request()._event, [ctx.ACTION, ctx.COMMAND], function(msg) {
|
||||
can.core.Next(msg.Table(), function(item, next) {
|
||||
can.onaction._plugin(can, item, next)
|
||||
can.onimport._cmd(can, item, next)
|
||||
})
|
||||
})
|
||||
},
|
||||
_plugin: function(can, item, next) {
|
||||
can.base.Copy(item, {height: window.innerHeight, width: window.innerWidth, opts: can.misc.Search(can)})
|
||||
can.onappend.plugin(can, item, function(sub, meta) { can.user.title(meta.name), next() })
|
||||
},
|
||||
onstorm_select: function(can, msg, river, storm) { can.onlayout._init(can)
|
||||
function key(name) { return can.core.Keys(can.Conf(chat.RIVER), can.Conf(chat.STORM), name) }
|
||||
can.page.Cache(key(html.ACTION), can._action, can._output.scrollTop+1)
|
||||
can.page.Cache(key(html.OUTPUT), can._output, can._output.scrollTop+1)
|
||||
|
||||
can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm) // 转场
|
||||
can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm)
|
||||
var position = can.page.Cache(key(html.ACTION), can._action)
|
||||
var position = can.page.Cache(key(html.OUTPUT), can._output)
|
||||
if (position) { can._output.scrollTo(0, position-1); return }
|
||||
|
||||
can.run({}, [river, storm], function(msg) {
|
||||
if (msg.Length() == 0) { // 添加工具
|
||||
can.onengine.signal(can, "onaction_nostorm", can.request({}, {river: river, storm: storm}))
|
||||
} else {
|
||||
can.onimport._init(can, msg)
|
||||
}
|
||||
can.run({}, [river, storm], function(msg) { if (msg.Length() > 0) { return can.onimport._init(can, msg) }
|
||||
can.onengine.signal(can, "onaction_notool", can.request({}, {river: river, storm: storm}))
|
||||
})
|
||||
},
|
||||
onsearch: function(can, msg, word) {
|
||||
if (word[0] == "*" || word[0] == mdb.PLUGIN) { can.onexport.plugin(can, msg, word) }
|
||||
},
|
||||
onsize: function(can, msg, width, height) { can.Conf({width: width, height: height}) },
|
||||
onsize: function(can, msg, height, width) { can.Conf({height: height, width: width}) },
|
||||
|
||||
layout: function(can, layout) { if (!layout) { return }
|
||||
var trans = {
|
||||
"默认布局": "auto",
|
||||
"流动布局": "flow",
|
||||
"网格布局": "grid",
|
||||
"标签布局": "tabs",
|
||||
"自由布局": "free",
|
||||
help: function(can, button) { can.user.open("/help/"+button+".shy") },
|
||||
layout: function(can, button) { can.Conf(chat.LAYOUT, button)
|
||||
can.page.Modify(can, can._action, {className: chat.ACTION+ice.SP+button})
|
||||
can.page.Modify(can, can._output, {className: chat.OUTPUT+ice.SP+button})
|
||||
|
||||
if (button == "tabs" && !can.tabs) { can.tabs = true
|
||||
can.onmotion.select(can, can._output, html.FIELDSET_PLUGIN, 0)
|
||||
can.onmotion.select(can, can._action, html.DIV_ITEM, 0)
|
||||
}
|
||||
|
||||
layout = trans[layout]||layout, can.Conf(chat.LAYOUT, layout)
|
||||
can.page.Modify(can, can._action, {className: "action "+layout})
|
||||
can.page.Modify(can, can._output, {className: "output "+layout})
|
||||
|
||||
if (layout == "tabs" && !can.tabs) {
|
||||
can.onmotion.select(can, can._output, "fieldset.plugin", 0)
|
||||
can.onmotion.select(can, can._action, "div.item", 0)
|
||||
can.tabs = true
|
||||
if (button == "free" && !can.free) { can.free = true
|
||||
can.page.Select(can, can._target, html.DIV_OUTPUT+ice.GT+html.FIELDSET_PLUGIN, function(item, index) {
|
||||
can.page.Modify(can, item, {style: {left: 40*index, top: 40*index}})
|
||||
can.onmotion.move(can, item, {left: 40*index, top: 40*index})
|
||||
})
|
||||
}
|
||||
if (layout == "free" && !can.free) {
|
||||
can.page.Select(can, can._target, "div.output>fieldset.plugin", function(item, index) {
|
||||
can.page.Modify(can, item, {style: {left: 20*index, top: 20*index}})
|
||||
can.onmotion.move(can, item, {left: 20*index, top: 20*index})
|
||||
}), can.free = true
|
||||
}
|
||||
|
||||
can.onlayout._init(can)
|
||||
},
|
||||
})
|
||||
@ -196,31 +192,32 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
|
||||
}, _engine: {},
|
||||
})
|
||||
Volcanos("onexport", {help: "导出数据", list: [],
|
||||
args: function(can, msg, list, cb, target) {
|
||||
can.core.Next(can.page.Select(can, target, "fieldset.plugin>form.option"), function(item, next, index, array) {
|
||||
var list = can.page.Select(can, item, '.args', function(item) { return item.value||"" })
|
||||
item.dataset.args = JSON.stringify(list), cb(item, next, index, array)
|
||||
args: function(can, cb, target) {
|
||||
can.core.Next(can.page.Select(can, target, html.FIELDSET_PLUGIN+ice.GT+html.FORM_OPTION), function(item, next, index, array) {
|
||||
item.dataset.args = JSON.stringify(can.page.Select(can, item, html.OPTION_ARGS, function(item) { return item.value||"" }))
|
||||
cb(item, next, index, array)
|
||||
})
|
||||
},
|
||||
size: function(can, msg) {
|
||||
msg.Option(chat.TOP, can._target.offsetTop)
|
||||
msg.Option(chat.LEFT, can._target.offsetLeft)
|
||||
msg.Option(html.TOP, can._target.offsetTop)
|
||||
msg.Option(html.LEFT, can._target.offsetLeft)
|
||||
msg.Option(html.WIDTH, can._target.offsetWidth)
|
||||
msg.Option(html.HEIGHT, can._target.offsetHeight)
|
||||
msg.Option(chat.SCROLL, can.user.isMobile? can._target.parentNode.parentNode.scrollTop: can._output.scrollTop)
|
||||
msg.Option(html.HEIGHT, can._target.offsetHeight-can._action.offsetHeight)
|
||||
msg.Option(html.SCROLL, can.user.isMobile? can._target.parentNode.parentNode.scrollTop: can._output.scrollTop)
|
||||
msg.Option(html.MARGIN_X, can.Conf(html.MARGIN_X))
|
||||
msg.Option(html.MARGIN_Y, can.Conf(html.MARGIN_Y))
|
||||
},
|
||||
layout: function(can, msg) { return can.Conf(chat.LAYOUT) },
|
||||
plugin: function(can, msg, word) {
|
||||
var fields = msg.Option(ice.MSG_FIELDS).split(ice.FS)
|
||||
can.page.Select(can, can._output, "fieldset.plugin>legend", function(item) {
|
||||
plugin: function(can, msg, word) { var fields = can.core.Split(msg.Option(ice.MSG_FIELDS))
|
||||
can.page.Select(can, can._output, html.FIELDSET_PLUGIN+ice.GT+html.LEGEND, function(item) {
|
||||
if (item.innerHTML.indexOf(word[1]) == -1) { return }
|
||||
|
||||
var meta = item.parentNode.Meta
|
||||
var list = can.page.Select(can, item.nextSibling, '.args', function(item) { return item.value||"" })
|
||||
var meta = item.parentNode._meta
|
||||
var list = can.page.Select(can, item.nextSibling, html.OPTION_ARGS, function(item) { return item.value||"" })
|
||||
|
||||
var data = {ctx: "web.chat", cmd: ctx.ACTION,
|
||||
type: mdb.PLUGIN, name: item.innerHTML, text: shy("跳转", function(event) {
|
||||
var input = can.page.Select(can, item.parentNode, "input.args")[0]
|
||||
var input = can.page.Select(can, item.parentNode, html.INPUT_ARGS)[0]
|
||||
input && input.focus()
|
||||
}), argument: JSON.stringify(list),
|
||||
}
|
||||
@ -231,7 +228,7 @@ Volcanos("onexport", {help: "导出数据", list: [],
|
||||
} else {
|
||||
return
|
||||
}
|
||||
can.core.List(fields, function(key) { msg.Push(key, data[key]||"") })
|
||||
msg.Push(data, fields)
|
||||
})
|
||||
},
|
||||
})
|
||||
|
@ -55,8 +55,8 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
})
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||
can.base.isFunc(cb) && cb(msg)
|
||||
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, cb, target) {
|
||||
can.base.isFunc(cb) && cb()
|
||||
},
|
||||
onlogin: function(can, msg) { can.run({}, [], function(msg) { can.onimport._init(can, msg, [], null, can._output) }) },
|
||||
ontoast: function(can, msg) { can.core.CallFunc(can.onimport.toast, {can: can, msg: msg}) },
|
||||
|
@ -100,18 +100,19 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
avatar: function(event, can, url) { if (can.user.isExtension || can.user.isLocalFile) { return }
|
||||
can.run(event, [ctx.ACTION, aaa.AVATAR, url], function(msg) { can.onimport._avatar(can, msg) })
|
||||
},
|
||||
menu: function(can, cmds, cb) {
|
||||
menu: function(can, cmds, cb, trans) {
|
||||
return can.page.Append(can, can._output, [{type: cmds[0], list: can.core.List(cmds.slice(1), function(item) {
|
||||
if (can.base.isString(item)) {
|
||||
return {view: [html.MENU, html.DIV, can.user.trans(can, item)], onclick: function(event) {
|
||||
return {view: [html.MENU, html.DIV, can.user.trans(can, item, trans)], onclick: function(event) {
|
||||
can.base.isFunc(cb) && cb(event, item, cmds)
|
||||
}}
|
||||
|
||||
} else if (can.base.isArray(item)) {
|
||||
return {view: [html.MENU, html.DIV, can.user.trans(can, item[0])], onmouseenter: function(event) {
|
||||
can.onaction.carte(event, can, item.slice(1), function(event, button) {
|
||||
can.base.isFunc(cb) && cb(event, button, item)
|
||||
})
|
||||
var list = can.core.List(item, function(value, index) { return can.user.trans(can, value, trans) })
|
||||
return {view: [html.MENU, html.DIV, can.user.trans(can, list[0], trans)], onmouseenter: function(event) {
|
||||
can.onaction.carte(event, can, list.slice(1), function(event, button, meta, index) {
|
||||
can.base.isFunc(cb) && cb(event, item[index+1], item)
|
||||
}, trans)
|
||||
}}
|
||||
|
||||
} else if (can.base.isObject(item)) {
|
||||
@ -120,7 +121,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
}) }]).first
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta, list, cb, target) {
|
||||
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, cb, target) {
|
||||
can.base.isFunc(cb) && cb()
|
||||
},
|
||||
_trans: {
|
||||
@ -129,13 +130,6 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
|
||||
"create": "创建",
|
||||
"share": "共享",
|
||||
|
||||
"help": "帮助",
|
||||
"tutor": "入门简介",
|
||||
"manual": "使用手册",
|
||||
"service": "服务手册",
|
||||
"devops": "编程手册",
|
||||
"refer": "参考手册",
|
||||
|
||||
"setting": "设置",
|
||||
"black": "黑色主题",
|
||||
"white": "白色主题",
|
||||
@ -202,8 +196,11 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
|
||||
})
|
||||
},
|
||||
|
||||
carte: function(event, can, list, cb) { can.user.carte(event, can, can.onaction, list, cb) },
|
||||
share: function(event, can, arg) { can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE].concat(arg||[])) },
|
||||
carte: function(event, can, list, cb, trans) { can.user.carte(event, can, can.onaction, list, cb) },
|
||||
share: function(event, can, args) {
|
||||
can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE].concat(args||[],
|
||||
[chat.RIVER, can.Conf(chat.RIVER), chat.STORM, can.Conf(chat.STORM)]))
|
||||
},
|
||||
|
||||
usernick: function(event, can) {
|
||||
can.onaction.carte(event, can, ["shareuser", "setnick", [aaa.LANGUAGE, aaa.CHINESE, aaa.ENGLISH], cli.CLEAR, aaa.LOGOUT])
|
||||
|
@ -21,7 +21,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
can._main_storm = can.misc.Search(can, chat.STORM)||msg.Option(ice.MSG_STORM)||Volcanos.meta.args.storm||can._main_storm
|
||||
},
|
||||
_menu: function(can, msg) { if (can.user.mod.isPod) { return }
|
||||
can.search({}, ["Header.onimport.menu"].concat(can.base.Obj(msg.Option(chat.MENUS), can.ondetail.menus)), function(event, button) {
|
||||
can.setHeaderMenu(can.base.Obj(msg.Option(chat.MENUS), can.ondetail.menus), function(event, button) {
|
||||
can.core.CallFunc([can.ondetail, button], [event, can, button, can.Conf(chat.RIVER), can.Conf(chat.STORM)])
|
||||
})
|
||||
},
|
||||
@ -66,7 +66,7 @@ Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, c
|
||||
}), can.base.isFunc(cb) && cb(msg); return true
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg, list, cb, target) {
|
||||
Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, cb, target) {
|
||||
can.onengine.plugin(can, "info", shy("信息", {}, ["text", "list", "back"], function(msg, cmds) {
|
||||
msg.Echo(JSON.stringify(can))
|
||||
}))
|
||||
@ -96,7 +96,7 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
|
||||
can.onmotion.float.del(can, chat.CARTE)
|
||||
can.user.isMobile && can.onmotion.hidden(can)
|
||||
},
|
||||
onaction_nostorm: function(can, msg, river, storm) {
|
||||
onaction_notool: function(can, msg, river, storm) {
|
||||
can.ondetail["添加工具"](msg._event, can, "添加工具", river, storm)
|
||||
},
|
||||
|
||||
@ -140,7 +140,7 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
|
||||
},
|
||||
refresh: function(event, can) {
|
||||
var args = {river: can.Conf(chat.RIVER), storm: can.Conf(chat.STORM),
|
||||
topic: can.get("Header", "topic"), layout: can.get("Action", "layout"),
|
||||
topic: can.getHeader(chat.TOPIC), layout: can.getAction(chat.LAYOUT),
|
||||
}
|
||||
if (can.user.isExtension) { localStorage.setItem(ctx.ARGS, JSON.stringify(args)) }
|
||||
can.misc.Search(can, args)
|
||||
@ -156,17 +156,11 @@ Volcanos("ondetail", {help: "菜单交互",
|
||||
|
||||
"创建群组": function(event, can) { can.onaction.create(event, can) },
|
||||
"共享群组": function(event, can, button, river) {
|
||||
can.user.input(event, can, [{name: chat.TILTE, value: river, _trans: "标题"}], function(event, button, meta, list) {
|
||||
can.user.share(can, can.request(event), [river, ctx.ACTION, chat.SHARE, mdb.TYPE, chat.RIVER, mdb.NAME, list[0]])
|
||||
})
|
||||
can.onmotion.share(event, can, [{name: chat.TITLE, value: river}], [mdb.TYPE, chat.RIVER])
|
||||
},
|
||||
"添加应用": function(event, can, button, river) { can.ondetail.create(event, can, button, river) },
|
||||
"共享应用": function(event, can, button, river, storm) {
|
||||
can.user.input(event, can, [{name: chat.TILTE, value: storm, _trans: "标题"}], function(event, button, meta, list) {
|
||||
can.user.share(can, can.request(event), [river, ctx.ACTION, chat.SHARE, mdb.TYPE, chat.STORM, mdb.NAME, list[0],
|
||||
chat.STORM, storm, chat.RIVER, river,
|
||||
])
|
||||
})
|
||||
can.onmotion.share(event, can, [{name: chat.TITLE, value: storm}], [mdb.TYPE, chat.STORM])
|
||||
},
|
||||
"添加工具": function(event, can, button, river, storm) {
|
||||
can.user.select(event, can, ctx.COMMAND, "context,command", function(item, next) {
|
||||
@ -232,11 +226,12 @@ Volcanos("ondetail", {help: "菜单交互",
|
||||
},
|
||||
|
||||
"保存参数": function(event, can, button, river, storm) {
|
||||
can.search(event, ["Action.onexport.args"], function(item, next, index, array) {
|
||||
var msg = can.request({}, {hash: storm, id: item.dataset.id})
|
||||
var toast = can.user.toast(can, (index+1)+ice.PS+array.length, "保存参数", 10000, (index+1)/array.length)
|
||||
can.getAction(ctx.ARGS, function(item, next, index, array) { var msg = can.request({}, {hash: storm, id: item.dataset.id})
|
||||
var toast = can.user.toast(can, (index+1)+ice.PS+array.length, button, 10000, (index+1)*100/array.length)
|
||||
can.run(msg._event, [river, chat.STORM, ctx.ACTION, mdb.MODIFY, ice.ARG, item.dataset.args], function(msg) {
|
||||
toast.close(), next()
|
||||
can.core.Timer(200, function() {
|
||||
toast.close(), next(), index == array.length-1 && can.user.toastSuccess(can, button)
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
|
@ -43,7 +43,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
})
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "交互操作", list: [cli.CLEAR, cli.CLOSE, cli.DONE], _init: function(can, meta, list, cb, target) {
|
||||
Volcanos("onaction", {help: "交互操作", list: [cli.CLEAR, cli.CLOSE, cli.DONE], _init: function(can, cb, target) {
|
||||
can.base.isFunc(cb) && cb()
|
||||
},
|
||||
onlogin: function(can, msg) {
|
||||
|
@ -78,7 +78,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
}, ["/plugin/local/chat/div.css"])
|
||||
Volcanos("onaction", {help: "操作数据", list: [],
|
||||
"添加": function(event, can) {
|
||||
can.user.input(event, can, ["name", "index", "args", "style", "width", "height"], function(event, button, data, list, args) {
|
||||
can.user.input(event, can, [mdb.NAME, ctx.INDEX, ctx.ARGS, ctx.STYLE, html.HEIGHT, html.WIDTH], function(event, button, data, list, args) {
|
||||
can.current._add({meta: data, list: []})
|
||||
})
|
||||
},
|
||||
@ -88,8 +88,7 @@ Volcanos("onaction", {help: "操作数据", list: [],
|
||||
}, true)
|
||||
},
|
||||
"预览": function(event, can) {
|
||||
can.request(event, {link: can.misc.MergeURL(can, {_path: "/chat/div/"+can.Option("hash")})})
|
||||
can.search(event, ["Header.onaction.share"])
|
||||
can.onmotion.share(event, can, [], [mdb.LINK, can.misc.MergeURL(can, {_path: "/chat/div/"+can.Option("hash")})])
|
||||
},
|
||||
})
|
||||
Volcanos("onexport", {help: "导出数据", list: []})
|
||||
|
@ -14,8 +14,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
|
||||
can.onimport.project(can, msg.Option(nfs.PATH))
|
||||
can.base.isFunc(cb) && cb(msg)
|
||||
},
|
||||
_content: function(can, target) {
|
||||
var height = can.Conf(html.HEIGHT)-(can.user.mod.isCmd? 54: 320); height < 240 && (height = 240)
|
||||
_content: function(can, target) { var height = can.Conf(html.HEIGHT)
|
||||
can.page.Modify(can, can.ui.project, {style: {"max-height": height}})
|
||||
can.page.Modify(can, can.ui.content, {style: {"max-height": height}})
|
||||
can.page.Modify(can, can.ui.display, {style: {display: chat.NONE}})
|
||||
|
@ -12,7 +12,6 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
||||
nav = nav||can.page.Append(can, can._fields, [{view: wiki.NAVMENU}]).first
|
||||
can.onmotion.clear(can, nav), can._fields.insertBefore(nav, can._output)
|
||||
|
||||
can.page.Modify(can, nav, {style: {height: can.Conf(html.HEIGHT)}})
|
||||
can.onappend.list(can, can.base.Obj(data.data), function(event, item) {
|
||||
var link = item.meta.link, list = can.core.Split(item.meta.link)
|
||||
if (can.core.Value(can, list[0])) { return can.core.CallFunc([can, list[0]], list.slice(1)) }
|
||||
@ -27,11 +26,14 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
||||
return true
|
||||
}, nav), can.sup._navmenu = nav
|
||||
|
||||
can.Conf(html.WIDTH, can.Conf(html.WIDTH)-nav.offsetWidth-(can.user.mod.isCmd? 10: 20))
|
||||
can.page.Modify(can, can._output, {style: kit.Dict(
|
||||
html.HEIGHT, can.sup._navmenu.offsetHeight, html.MAX_WIDTH, can.Conf(html.WIDTH),
|
||||
html.FLOAT, html.LEFT, html.CLEAR, html.NONE
|
||||
)})
|
||||
can.getActionSize(function(msg) {
|
||||
can.page.Modify(can, nav, {style: {height: can.Conf(html.HEIGHT)+(can.user.mod.isCmd? msg.Option(html.MARGIN_Y): 0)}})
|
||||
can.Conf(html.WIDTH, can.Conf(html.WIDTH)-nav.offsetWidth-(can.user.mod.isCmd? 10: 20))
|
||||
can.page.Modify(can, can._output, {style: kit.Dict(
|
||||
html.HEIGHT, can.sup._navmenu.offsetHeight, html.MAX_WIDTH, can.Conf(html.WIDTH),
|
||||
html.FLOAT, html.LEFT, html.CLEAR, html.NONE
|
||||
)})
|
||||
})
|
||||
},
|
||||
premenu: function(can, data, target) {
|
||||
can.page.Select(can, can._output, "h2.story, h3.story", function(item) {
|
||||
@ -64,7 +66,9 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
||||
can.onappend._init(can, item, ["/plugin/state.js"], function(sub) {
|
||||
sub.run = function(event, cmds, cb, silent) {
|
||||
can.run(event, can.misc.concat([ctx.ACTION, chat.STORY, data.type, data.name, data.text], cmds), cb, true)
|
||||
}, sub.Conf(html.WIDTH, item.width = (width||can.Conf(html.WIDTH))-20)
|
||||
}
|
||||
sub.Conf(html.HEIGHT, can.Conf(html.HEIGHT))
|
||||
sub.Conf(html.WIDTH, item.width = (width||can.Conf(html.WIDTH))-20)
|
||||
|
||||
can.core.Value(item, "auto.cmd") && can.core.Timer300ms(function() {
|
||||
var msg = sub.request({}, can.core.Value(item, "opts")); msg.Option("_handle", ice.TRUE)
|
||||
|
@ -72,7 +72,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "交互操作", list: [
|
||||
"共享工具", "生成链接", "生成脚本", "保存参数", "清空参数", "刷新数据", [
|
||||
"共享工具", "生成链接", "生成脚本", "清空参数", "刷新数据", [
|
||||
"其它 ->", "复制数据", "下载数据", "清空数据", "删除工具", "摄像头", "生成图片",
|
||||
],
|
||||
], _init: function(can, msg, list, cb, target) {},
|
||||
@ -80,21 +80,16 @@ Volcanos("onaction", {help: "交互操作", list: [
|
||||
can.Update(event, [ctx.ACTION, button].concat(can.Input([], true)))
|
||||
},
|
||||
"共享工具": function(event, can) { var meta = can.Conf()
|
||||
var ui = can.user.input(event, can, [{name: chat.TITLE, value: meta.name}], function(ev, button, data, list) {
|
||||
var msg = can.request(event, {arg: [mdb.TYPE, chat.FIELD,
|
||||
mdb.NAME, meta.index, mdb.TEXT, JSON.stringify(can.Input([], true)),
|
||||
chat.TITLE, list[0], chat.RIVER, can.Conf(chat.RIVER), chat.STORM, can.Conf(chat.STORM),
|
||||
]})
|
||||
can.search(event, ["Header.onaction.share"])
|
||||
}); can.onlayout.figure(event, can, ui._target, true)
|
||||
can.onmotion.share(event, can, [{name: chat.TITLE, value: meta.name}], [
|
||||
mdb.NAME, meta.index, mdb.TEXT, JSON.stringify(can.Input([], true)),
|
||||
])
|
||||
},
|
||||
"生成链接": function(event, can) { var meta = can.Conf()
|
||||
var pre = "/chat/cmd/"; if (can.user.mod.isPod) { pre = "/chat/pod/"+can.misc.Search(can, ice.POD)+"/cmd/" }
|
||||
var args = can.Option(); args._path = pre+(meta.index||can.core.Keys(meta.ctx, meta.cmd))
|
||||
args._path.indexOf("/cmd/web.wiki.word") > -1 && (args = {_path: pre+args.path})
|
||||
|
||||
var msg = can.request(event, {link: can.misc.MergeURL(can, args)})
|
||||
can.search(event, ["Header.onaction.share"])
|
||||
can.onmotion.share(event, can, [], [mdb.LINK, can.misc.MergeURL(can, args)])
|
||||
},
|
||||
"生成脚本": function(event, can, button) { var conf = can.Conf()
|
||||
var args = can.Input("", true).join(ice.SP); var list = [
|
||||
@ -109,10 +104,7 @@ Volcanos("onaction", {help: "交互操作", list: [
|
||||
can.onmotion.story.auto(can, ui._target)
|
||||
can.user.copy(event, can, list[0])
|
||||
},
|
||||
"保存参数": function(event, can) { var meta = can.Conf()
|
||||
var msg = can.request(event, {river: can.Conf(chat.RIVER), storm: can.Conf(chat.STORM), id: meta.id})
|
||||
can.search(event, ["River.ondetail.保存参数"], function(msg) { can.user.toastSuccess(can) }, true)
|
||||
},
|
||||
"保存参数": function(event, can) { can.search(event, ["River.ondetail.保存参数"]) },
|
||||
"清空参数": function(event, can) {
|
||||
can.page.SelectArgs(can, can._option, "", function(item) { return item.value = "" })
|
||||
},
|
||||
|
@ -178,25 +178,13 @@ Volcanos("ondetail", {help: "用户交互", list: [],
|
||||
})
|
||||
},
|
||||
figure: function(can, sub, msg, cb) {
|
||||
can.get("Action", "size", function(left, top, width, height) { left = left||0
|
||||
if (height > window.innerHeight) { height = window.innerHeight }
|
||||
can.getActionSize(function(left, top, width, height) { left = left||0
|
||||
var top = 120, margin = 20; if (can.user.isMobile) { margin = 0
|
||||
if (can.user.isLandscape()) {
|
||||
height += (can.user.mod.isCmd? -20: 200)
|
||||
top = 24, sub.Conf(html.HEIGHT, height-top)
|
||||
} else {
|
||||
height += (can.user.mod.isCmd? -80: 200)
|
||||
top = 48, sub.Conf(html.HEIGHT, height-top)
|
||||
}
|
||||
} else {
|
||||
height += (can.user.mod.isCmd? 0: 300)
|
||||
sub.Conf(html.HEIGHT, height-top)
|
||||
top = can.user.isLandscape()? 24: 48
|
||||
}
|
||||
|
||||
var layout = {position: "fixed", left: left+margin, top: top}
|
||||
can.onmotion.move(can, sub._target, layout)
|
||||
can.page.Modify(can, sub._target, {style: layout})
|
||||
can.page.Modify(can, sub._output, {style: {"max-width": width-margin*2}})
|
||||
can.onmotion.move(can, sub._target, {position: html.FIXED, left: left+margin, top: top})
|
||||
can.page.style(can, sub._output, html.MAX_WIDTH, width-margin*2)
|
||||
sub.Conf(html.HEIGHT, height-top-2*html.ACTION_HEIGHT)
|
||||
can.base.isFunc(cb) && cb(msg)
|
||||
})
|
||||
},
|
||||
|
@ -46,7 +46,7 @@ Volcanos("onaction", {help: "组件菜单", list: ["编辑", ["view", "趋势图
|
||||
can.onmotion.toggle(can, can._status)
|
||||
},
|
||||
"趋势图": function(event, can) { var height = can.Action(html.HEIGHT)
|
||||
if (height == "max") { height = can.Conf(html.HEIGHT) - chat.CMD_MARGIN }
|
||||
if (height == "max") { height = can.Conf(html.HEIGHT) }
|
||||
height = parseInt(height)
|
||||
|
||||
var space = 10, width = parseInt(can.Conf(html.WIDTH))
|
||||
|
32
proto.js
32
proto.js
@ -6,7 +6,7 @@ var kit = {
|
||||
}
|
||||
}
|
||||
var ice = {
|
||||
SP: " ", PS: "/", PT: ".", FS: ",", NL: "\n",
|
||||
SP: " ", PS: "/", PT: ".", FS: ",", NL: "\n", LT: "<", GT: ">",
|
||||
POD: "pod", CTX: "ctx", CMD: "cmd", ARG: "arg", OPT: "opt",
|
||||
RUN: "run", RES: "res", ERR: "err",
|
||||
|
||||
@ -52,8 +52,8 @@ var ice = {
|
||||
|
||||
var ctx = {
|
||||
CONTEXT: "context", COMMAND: "command", ACTION: "action", CONFIG: "config",
|
||||
INDEX: "index", ARGS: "args", STYLE: "style",
|
||||
INPUTS: "inputs", FEATURE: "feature",
|
||||
INDEX: "index", ARGS: "args",
|
||||
}
|
||||
var cli = {
|
||||
CODE: "code", COST: "cost", FROM: "from", BACK: "back",
|
||||
@ -133,7 +133,7 @@ var chat = {
|
||||
SCROLL: "scroll", LEFT: "left", TOP: "top", RIGHT: "right", BOTTOM: "bottom",
|
||||
HEADER: "header", FOOTER: "footer",
|
||||
|
||||
SSO: "sso", CMD_MARGIN: 53,
|
||||
SSO: "sso",
|
||||
|
||||
libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"],
|
||||
panel_list: [
|
||||
@ -175,6 +175,9 @@ var svg = {
|
||||
var html = {
|
||||
FIELDSET: "fieldset", LEGEND: "legend", OPTION: "option", ACTION: "action", OUTPUT: "output", STATUS: "status",
|
||||
FORM_OPTION: "form.option", DIV_ACTION: "div.action", DIV_OUTPUT: "div.output", DIV_STATUS: "div.status",
|
||||
FIELDSET_PANEL: "fieldset.panel", FIELDSET_PLUGIN: "fieldset.plugin", FIELDSET_STORY: "fieldset.story",
|
||||
OPTION_ARGS: "select.args,input.args,textarea.args",
|
||||
INPUT_ARGS: "input.args,textarea.args",
|
||||
|
||||
UPLOAD: "upload", USERNAME: "username", PASSWORD: "password",
|
||||
INPUT: "input", INPUT_ARGS: ".args", TEXT: "text", TEXTAREA: "textarea", SELECT: "select", BUTTON: "button",
|
||||
@ -186,8 +189,10 @@ var html = {
|
||||
CLASS: "class", BLOCK: "block", NONE: "none", FLOAT: "float", CLEAR: "clear",
|
||||
STROKE_WIDTH: "stroke-width", STROKE: "stroke", FILL: "fill", FONT_SIZE: "font-size", MONOSPACE: "monospace",
|
||||
SCROLL: "scroll", HEIGHT: "height", WIDTH: "width", LEFT: "left", TOP: "top", RIGHT: "right", BOTTOM: "bottom",
|
||||
MAX_HEIGHT: "max-height", MAX_WIDTH: "max-width",
|
||||
MAX_HEIGHT: "max-height", MAX_WIDTH: "max-width", MARGIN_X: "margin-x", MARGIN_Y: "margin-y",
|
||||
PLUGIN_MARGIN: 10, ACTION_HEIGHT: 26, ACTION_MARGIN: 200,
|
||||
HIDDEN: "hidden", SELECT: "select",
|
||||
FIXED: "fixed",
|
||||
|
||||
WSS: "wss", SVG: "svg", CANVAS: "canvas", IFRAME: "iframe", CHROME: "chrome",
|
||||
LIST: "list", ITEM: "item", MENU: "menu", NODE: "node",
|
||||
@ -267,20 +272,27 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args:
|
||||
}); return msg
|
||||
},
|
||||
|
||||
setHeaderMenu: function(list, cb) { can._menu && can.page.Remove(can, can._menu)
|
||||
var msg = can.request({}, {trans: can.onaction._trans})
|
||||
return can._menu = can.search(msg._event, ["Header.onimport.menu", can._name].concat(list), cb)
|
||||
},
|
||||
set: function(name, key, value) { var msg = can.request({}); msg.Option(key, value)
|
||||
return can.search(msg._event, [can.core.Keys(name, "onimport", key)])
|
||||
},
|
||||
get: function(name, key, cb) {
|
||||
if (can.user.mod.isCmd && name == "Action" && key == "size") {
|
||||
var msg = can.request({}, {left: 0, top: 0, width: window.innerWidth, height: window.innerHeight})
|
||||
return can.core.CallFunc(cb, {msg: msg})
|
||||
}
|
||||
return can.search({}, [can.core.Keys(name, "onexport", key)], cb)
|
||||
},
|
||||
getActionSize: function(cb) { can.get("Action", "size", cb) },
|
||||
getHeader: function(key, cb) { return can.get("Header", key, cb) },
|
||||
getAction: function(key, cb) { return can.get("Action", key, cb) },
|
||||
getActionSize: function(cb) { return can.get("Action", "size", cb) },
|
||||
search: function(event, cmds, cb) { return can.run && can.run(event, ["_search"].concat(cmds), cb, true) },
|
||||
|
||||
Conf: function(key, value) { return can.core.Value(can._conf, key, value) }, _conf: {},
|
||||
Conf: function(key, value) { var res = can._conf
|
||||
for (var i = 0; i < arguments.length; i += 2) {
|
||||
res = can.core.Value(can._conf, arguments[i], arguments[i+1])
|
||||
}
|
||||
return res
|
||||
}, _conf: {},
|
||||
}
|
||||
|
||||
if (navigator.userAgent.indexOf("MSIE") > -1) {
|
||||
|
@ -84,7 +84,7 @@ setTimeout(function() { Volcanos({Option: function() { return [] },
|
||||
can.request(event, {zone: location.host, id: msg.Option(mdb.ID)})
|
||||
can.run(event, [chat.FIELD, mdb.MODIFY, chat.TOP, sub._target.offsetTop])
|
||||
can.run(event, [chat.FIELD, mdb.MODIFY, chat.LEFT, sub._target.offsetLeft])
|
||||
can.run(event, [chat.FIELD, mdb.MODIFY, "args", JSON.stringify(sub.Input([], true))])
|
||||
can.run(event, [chat.FIELD, mdb.MODIFY, ctx.ARGS, JSON.stringify(sub.Input([], true))])
|
||||
can.user.toastSuccess(can)
|
||||
}
|
||||
}, document.body)
|
||||
|
Loading…
x
Reference in New Issue
Block a user