forked from x/volcanos
add some
This commit is contained in:
parent
18ed99b931
commit
6451c99072
6
frame.js
6
frame.js
@ -146,7 +146,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
}); return sub
|
||||
},
|
||||
_option: function(can, meta, option, skip) { var index = -1, args = can.base.Obj(meta.args||meta.arg, []), opts = can.base.Obj(meta.opts, {})
|
||||
meta.inputs = can.base.Obj(meta.inputs, []), meta.inputs.length == 0 && can.onmotion.delay(can, function() { can.Update() })
|
||||
meta.inputs = can.base.Obj(meta.inputs, []), meta.inputs.length == 0 && (!can.Conf("_ismain") || can.Conf("_role") || can.misc.Search(can, log.DEBUG) == ice.TRUE) && can.onmotion.delay(can, function() { can.Update() })
|
||||
can.core.List([""].concat(meta.inputs), function(item) { if (item != "" && item.type != html.BUTTON) { return }
|
||||
var icon = {
|
||||
"": {name: mdb.DELETE, cb: function(event) { can.onaction.close(event, can) }},
|
||||
@ -184,7 +184,9 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
})
|
||||
}; var auto; can.core.Next(can.core.Value(can, [chat.ONIMPORT, mdb.LIST])||meta.inputs, add, function() {
|
||||
var p = can.misc.Search(can, ctx.ACTION)
|
||||
if (p && can.isCmdMode()) {
|
||||
if (can.Conf("_ismain") && !can.Conf("_role") && can.misc.Search(can, log.DEBUG) != ice.TRUE) {
|
||||
|
||||
} else if (p && can.isCmdMode()) {
|
||||
skip || can.Conf(ice.AUTO) == cli.DELAY || can.Update({}, [ctx.ACTION, p])
|
||||
} else {
|
||||
skip || can.Conf(ice.AUTO) == cli.DELAY || auto && auto.click()
|
||||
|
@ -169,14 +169,17 @@ Volcanos(chat.ONENGINE, {_engine: function(event, sup, msg, can, cmds, cb) {
|
||||
if (storm.index) {
|
||||
can.runAction(event, ctx.COMMAND, [].concat(can.core.List(storm.index, function(item) { return item.index||item })), function(msg) {
|
||||
can.core.List(storm.index, function(item) {
|
||||
msg.Push(ctx.ARGS, JSON.stringify(item.args||[]))
|
||||
msg.Push(ctx.STYLE, item.style||"")
|
||||
msg.Push(ctx.ARGS, JSON.stringify(item.args||[])).Push(ctx.STYLE, item.style||"").Push(ctx.DISPLAY, item.display||"")
|
||||
msg.Push(web.SPACE, item.space||"")
|
||||
msg.Push("_ismain", ice.TRUE)
|
||||
}), cb(msg)
|
||||
})
|
||||
} else { can.core.List(storm.list, function(value) { can.base.isString(value) && (value = {index: value})
|
||||
msg.Push(mdb.NAME, value.name||"").Push(mdb.HELP, value.help||"").Push(ctx.INPUTS, JSON.stringify(value.inputs)).Push(ctx.FEATURE, JSON.stringify(value.feature))
|
||||
msg.Push(ctx.INDEX, value.index||"").Push(ctx.ARGS, value.args||"[]").Push(ctx.STYLE, value.style||"").Push(ctx.DISPLAY, value.display||"")
|
||||
msg.Push(web.SPACE, value.space||"")
|
||||
} else { can.core.List(storm.list, function(item) { can.base.isString(item) && (item = {index: item})
|
||||
msg.Push(ctx.INDEX, item.index||"")
|
||||
msg.Push(mdb.NAME, item.name||"").Push(mdb.HELP, item.help||"").Push(ctx.INPUTS, JSON.stringify(item.inputs)).Push(ctx.FEATURE, JSON.stringify(item.feature))
|
||||
msg.Push(ctx.ARGS, item.args||"[]").Push(ctx.STYLE, item.style||"").Push(ctx.DISPLAY, item.display||"")
|
||||
msg.Push(web.SPACE, item.space||"")
|
||||
msg.Push("_ismain", ice.TRUE)
|
||||
}), can.base.isFunc(cb) && cb(msg) } return true
|
||||
}})
|
||||
Volcanos(chat.ONKEYMAP, {
|
||||
|
@ -1,15 +1,12 @@
|
||||
(function() { const CAN_RIVER = "can.river", CAN_STORM = "can.storm"
|
||||
Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onimport._main(can, msg)
|
||||
|
||||
can.onappend.style(can, html.FLEX, can._action)
|
||||
Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onimport._main(can, msg), can.onappend.style(can, html.FLEX, can._action)
|
||||
var select; can.page.Appends(can, can._output, msg.Table(function(item, index) {
|
||||
return can.onimport._river(can, item, function(target) { (index == 0 || item.hash == can._main_river) && (select = target) })
|
||||
})), select && select.click(), can.onimport._menu(can, msg)
|
||||
},
|
||||
_main: function(can, msg) { can.ui = {river_list: {}, storm_list: {}, sublist: {}}
|
||||
var ls = location.hash.slice(1).split(nfs.DF)
|
||||
can._main_river = ls[0]||can.misc.SearchOrConf(can, chat.RIVER)||msg.Option(ice.MSG_RIVER)||"project"
|
||||
can._main_storm = ls[1]||can.misc.SearchOrConf(can, chat.STORM)||msg.Option(ice.MSG_STORM)||"studio"
|
||||
_main: function(can, msg) { can.ui = {river_list: {}, storm_list: {}, sublist: {}}; var ls = location.hash.slice(1).split(nfs.DF)
|
||||
can._main_river = can.misc.SearchOrConf(can, chat.RIVER)||ls[0]||msg.Option(ice.MSG_RIVER)||"project"
|
||||
can._main_storm = can.misc.SearchOrConf(can, chat.STORM)||ls[1]||msg.Option(ice.MSG_STORM)||"studio"
|
||||
},
|
||||
_river: function(can, meta, cb) { return {view: html.ITEM, list: [{icon: meta.icon}, {text: meta.name}, {icon: icon.CHEVRON_DOWN}], _init: function(target) { can.ui.river_list[meta.hash] = target, cb(target) },
|
||||
onclick: function(event) { can.onaction.storm(event, can, meta.hash) }, oncontextmenu: function(event) { can.onaction.carte(event, can, can.onaction._menu, meta.hash) },
|
||||
@ -17,13 +14,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onimport._main(can, msg
|
||||
_storm: function(can, meta, river) { return {view: html.ITEM, list: [{icon: meta.icon}, {text: meta.name}], _init: function(target) { can.ui.storm_list[can.core.Keys(river, meta.hash)] = target },
|
||||
onclick: function(event) { can.onaction.action(event, can, river, meta.hash) }, oncontextmenu: function(event) { can.onaction.carte(event, can, can.ondetail._menu, river, meta.hash) },
|
||||
} },
|
||||
_menu: function(can, msg) {
|
||||
if (can.user.isMobile || can.user.mod.isPod) {
|
||||
can.onmotion.hidden(can, can._action)
|
||||
} else {
|
||||
can.onappend._action(can, can.onaction.list, can._action)
|
||||
}
|
||||
},
|
||||
_menu: function(can, msg) { can.user.isMobile || can.user.mod.isPod? can.onmotion.hidden(can, can._action): can.onappend._action(can, can.onaction.list, can._action) },
|
||||
})
|
||||
Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: function(can) {
|
||||
can.db.storm_list = {}, can.onmotion.hidden(can)
|
||||
@ -44,15 +35,12 @@ Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: func
|
||||
onaction_notool: function(can, msg, river, storm) { can.ondetail["addcmd"](msg._event, can, "addcmd", river, storm) },
|
||||
onsearch: function(can, msg, arg) { if (arg[0] == chat.STORM) { can.onexport.storm(can, msg, arg) } },
|
||||
onlayout: function(can, layout) { can.user.isMobile || can.onmotion.toggle(can, can._target, !can.base.isIn(layout, "tabview", "horizon","vertical", "page")) },
|
||||
ontitle: function(can, msg) { can.misc.sessionStorage(can, CAN_RIVER, ""), can.misc.sessionStorage(can, CAN_STORM, "") },
|
||||
create: function(event, can) { can.user.input(can.request(event, {title: "创建群组"}), can, [
|
||||
{name: mdb.TYPE, values: [aaa.TECH, aaa.ROOT, aaa.TECH, aaa.VOID], _trans: "类型"},
|
||||
{name: mdb.TYPE, values: [aaa.TECH, aaa.VOID], _trans: "类型"},
|
||||
{name: mdb.NAME, value: "hi", _trans: "群名", need: "must"},
|
||||
{name: mdb.ICON, value: "", _trans: "图标"},
|
||||
{name: mdb.TEXT, value: "hello", _trans: "简介"},
|
||||
], function(args) {
|
||||
can.runAction(event, mdb.CREATE, args, function(msg) { can.misc.Search(can, {river: msg.Result()}) })
|
||||
}) },
|
||||
], function(args) { can.runAction(event, mdb.CREATE, args, function(msg) { can.misc.Search(can, {river: msg.Result()}) }) }) },
|
||||
share: function(event, can) { can.core.CallFunc(can.ondetail.share, {event: event, can: can}) },
|
||||
onsize: function(can, height) { var margin = 0
|
||||
if (can.page.isDisplay(can._action)) { margin = can._action.offsetHeight + html.PLUGIN_MARGIN } var _margin = margin
|
||||
@ -88,38 +76,24 @@ Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: func
|
||||
action: function(event, can, river, storm) { can.misc.SearchHash(can, river, storm)
|
||||
can.page.Select(can, can._output, [html.DIV_LIST, html.DIV_ITEM], function(target) { can.page.ClassList.del(can, target, html.SELECT) })
|
||||
can.onmotion.select(can, can.ui.sublist[river], html.DIV_ITEM, can.ui.storm_list[can.core.Keys(river, storm)])
|
||||
// can.onaction.storm({target: can.ui.river_list[river]}, can, river)
|
||||
// can.page.ClassList.set(can, can.ui.river_list[river], "open", can.onmotion.toggle(can, can.ui.sublist[river], true))
|
||||
can.onengine.signal(can, chat.ONSTORM_SELECT, can.request(event, {river: can.Conf(chat.RIVER, river), storm: can.Conf(chat.STORM, storm)}))
|
||||
},
|
||||
carte: function(event, can, list, river, storm) { can.onkeymap.prevent(event); if (can.core.Value(can._root, can.core.Keys(chat.RIVER, river))) { return }
|
||||
can.request(event, {river: river, storm: storm}); storm? can.user.carteRight(event, can, can.ondetail, list): can.user.carteRight(event, can, can.onaction, list)
|
||||
},
|
||||
_trans: {
|
||||
addapp: "添加应用",
|
||||
rename: "重命名群组",
|
||||
remove: "删除群组",
|
||||
},
|
||||
_menu: ["addapp", "rename", "remove"],
|
||||
_trans: {addapp: "添加应用", rename: "重命名群组", remove: "删除群组"},
|
||||
addapp: function(event, can, button, river) { can.ondetail.create(event, can, button, river) },
|
||||
rename: function(event, can, button, river) { can.user.input(event, can, [mdb.NAME, mdb.ICON], function(args) {
|
||||
can.runAction(event, mdb.MODIFY, [mdb.HASH, river].concat(args), function(msg) { can.page.Modify(can, can.ui.river_list[river], args[1]), can.user.toastSuccess(can) })
|
||||
}) },
|
||||
remove: function(event, can, button, river) { can.runAction(event, mdb.REMOVE, [mdb.HASH, river], function(msg) {
|
||||
can.misc.localStorage(can, CAN_RIVER, ""), can.misc.localStorage(can, CAN_STORM, ""), can.misc.Search(can, {river: "", storm: ""})
|
||||
}) },
|
||||
remove: function(event, can, button, river) { can.runAction(event, mdb.REMOVE, [mdb.HASH, river], function(msg) { can.misc.Search(can, {river: "", storm: ""}) }) },
|
||||
onaction_nostorm: function(can, msg, river) { can.ondetail.create({}, can, mdb.CREATE, river) },
|
||||
onaction_remove: function(can, msg, river, storm, id) { can.run(can.request({}), [river, storm, chat.STORM, ctx.ACTION, mdb.DELETE, mdb.ID, id], function() { }) },
|
||||
})
|
||||
Volcanos(chat.ONDETAIL, {
|
||||
_trans: {
|
||||
share: "共享应用",
|
||||
savearg: "保存参数",
|
||||
addcmd: "添加工具",
|
||||
rename: "重命名应用",
|
||||
remove: "删除应用",
|
||||
},
|
||||
_menu: ["share", "savearg", "addcmd", "rename", "remove"],
|
||||
_trans: {share: "共享应用", savearg: "保存参数", addcmd: "添加工具", rename: "重命名应用", remove: "删除应用"},
|
||||
share: function(event, can, button, river, storm) { can.onmotion.share(event, can, [{name: chat.TITLE, value: can.user.title()}, {name: chat.THEME, values: [ice.AUTO, html.DARK, html.LIGHT, cli.WHITE, cli.BLACK]}], [mdb.TYPE, chat.STORM, chat.RIVER, river, chat.STORM, storm]) },
|
||||
savearg: function(event, can, button, river, storm) { can.getAction(ctx.ARGS, function(args, sub, next, index, array) { var toast = can.user.toast(can, (index+1)+nfs.PS+array.length, button, 10000, (index+1)*100/array.length)
|
||||
can.run({}, [river, storm, chat.STORM, ctx.ACTION, mdb.MODIFY, mdb.ID, sub.Conf(mdb.ID), ctx.ARGS, JSON.stringify(args)], function() {
|
||||
@ -130,11 +104,9 @@ Volcanos(chat.ONDETAIL, {
|
||||
{name: web.SPACE, _trans: "空间"},
|
||||
{name: ctx.INDEX, need: "must", _trans: "命令"}, {name: ctx.ARGS, _trans: "参数"},
|
||||
{name: mdb.ICON, _trans: "图标"}, {name: ctx.STYLE, _trans: "样式"}, {name: ctx.DISPLAY, _trans: "脚本"},
|
||||
], function(args) {
|
||||
can.run({}, [river, storm, chat.STORM, ctx.ACTION, mdb.INSERT].concat(args), function(msg) {
|
||||
], function(args) { can.run({}, [river, storm, chat.STORM, ctx.ACTION, mdb.INSERT].concat(args), function(msg) {
|
||||
can.onengine.signal(can, chat.ONSTORM_SELECT, can.request(event, {river: can.Conf(chat.RIVER, river), storm: can.Conf(chat.STORM, storm), refresh: ice.TRUE}))
|
||||
})
|
||||
}) },
|
||||
}) }) },
|
||||
rename: function(event, can, button, river, storm) { can.user.input(event, can, [mdb.NAME, mdb.ICON], function(args) {
|
||||
can.run(event, [river, storm, chat.STORM, ctx.ACTION, mdb.MODIFY].concat(args), function() { can.page.Modify(can, can.ui.storm_list[can.core.Keys(river, storm)], args[1]), can.user.toastSuccess(can) })
|
||||
}) },
|
||||
@ -143,38 +115,32 @@ Volcanos(chat.ONDETAIL, {
|
||||
{name: mdb.NAME, value: "hi", _trans: "名称", need: "must"},
|
||||
{name: mdb.ICON, value: "", _trans: "图标"},
|
||||
{name: mdb.TEXT, value: "hello", _trans: "简介"},
|
||||
], function(args) {
|
||||
can.run({}, [river, chat.STORM, ctx.ACTION, mdb.CREATE].concat(args), function(msg) { can.misc.Search(can, {river: river, storm: msg.Result()}) })
|
||||
}) },
|
||||
], function(args) { can.run({}, [river, chat.STORM, ctx.ACTION, mdb.CREATE].concat(args), function(msg) { can.misc.Search(can, {river: river, storm: msg.Result()}) }) }) },
|
||||
})
|
||||
Volcanos(chat.ONEXPORT, {width: function(can) { return can._target.offsetWidth },
|
||||
storm: function(can, msg, arg) { can.core.Item(can._root.river, function(river, value) { can.core.Item(value.storm, function(storm, item) { if (arg[1] != "" && storm.indexOf(arg[1]) == -1 && item.name.indexOf(arg[1]) == -1) { return }
|
||||
msg.Push({ctx: ice.CAN, cmd: can._name, type: river, name: storm, text: shy("跳转", function(event) { can.onaction.action(event, can, river, storm) })})
|
||||
}) }) },
|
||||
scroll: function(can) {
|
||||
can.onmotion.delayOnce(can, function() {
|
||||
scroll: function(can) { can.onmotion.delayOnce(can, function() {
|
||||
if (can._output.offsetHeight == can._output.scrollHeight) {
|
||||
can.onmotion.hidden(can, can._prev)
|
||||
can.onmotion.hidden(can, can._next)
|
||||
can.onmotion.hidden(can, can._prev), can.onmotion.hidden(can, can._next)
|
||||
} else {
|
||||
can.onmotion.toggle(can, can._prev, can._output.scrollTop > 10)
|
||||
can.onmotion.toggle(can, can._next, can._output.scrollTop+can._output.offsetHeight < can._output.scrollHeight-10)
|
||||
}
|
||||
})
|
||||
},
|
||||
}) },
|
||||
})
|
||||
Volcanos(chat.ONENGINE, {_engine: function(event, can, msg, panel, cmds, cb) { var list = can.river
|
||||
cmds.length == 0 && can.core.ItemOrder(list, "order", function(key, value) {
|
||||
cmds.length == 0 && can.core.ItemOrder(list, mdb.ORDER, function(key, value) {
|
||||
if (can.user.info.userrole == aaa.ROOT || can.base.isIn(value.type||"", "", aaa.VOID, can.user.info.userrole)) {
|
||||
can.core.Item(value.storm).length > 0 && msg.Push({hash: key, name: can.user.isEnglish(can)? key: value.name, icon: value.icon||""})
|
||||
}
|
||||
})
|
||||
if (cmds.length != 1 && cmds[1] != chat.STORM) { return false } var river = list[cmds[0]]; if (!river) { return false }
|
||||
can.core.ItemOrder(river.storm, "order", function(key, value) {
|
||||
can.core.ItemOrder(river.storm, mdb.ORDER, function(key, value) {
|
||||
if (can.user.info.userrole == aaa.ROOT || can.base.isIn(value.type||"", "", aaa.VOID, can.user.info.userrole)) {
|
||||
msg.Push({hash: key, name: can.user.isEnglish(can)? key: value.name, icon: value.icon||""})
|
||||
}
|
||||
})
|
||||
can.base.isFunc(cb) && cb(msg); return true
|
||||
}), can.base.isFunc(cb) && cb(msg); return true
|
||||
}})
|
||||
})()
|
||||
|
Loading…
x
Reference in New Issue
Block a user