mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
add some
This commit is contained in:
parent
7e4aaa6ffe
commit
0a487409dc
5
const.js
5
const.js
@ -144,6 +144,7 @@ var aaa = {
|
||||
|
||||
USERNICK: "usernick", USERNAME: "username", PASSWORD: "password", USERROLE: "userrole", USERZONE: "userzone",
|
||||
VOID: "void", TECH: "tech", ROOT: "root",
|
||||
PUBLIC: "public", PRIVATE: "private",
|
||||
}
|
||||
var lex = {
|
||||
SPLIT: "split", PARSE: "parse",
|
||||
@ -220,6 +221,7 @@ var cli = {
|
||||
QRCODE: "qrcode", COLOR: "color", BLACK: "black", WHITE: "white", BLUE: "blue", RED: "red", GRAY: "gray", CYAN: "cyan", GREEN: "green", PURPLE: "purple", YELLOW: "yellow",
|
||||
MAGENTA: "magenta", SILVER: "silver", ALICEBLUE: "aliceblue", TRANSPARENT: "transparent",
|
||||
LINUX: "linux", DARWIN: "darwin", WINDOWS: "windows",
|
||||
SH: "sh",
|
||||
}
|
||||
var log = {
|
||||
INFO: "info", WARN: "warn", ERROR: "error", DEBUG: "debug", TRACE: "trace",
|
||||
@ -253,6 +255,8 @@ var chat = {
|
||||
SHARE: "share", RIVER: "river", STORM: "storm", FIELD: "field", TOOL: "tool",
|
||||
STATE: "state", MENUS: "menus", SSO: "sso", LOCATION: "location", IFRAME: "iframe", DESKTOP: "desktop",
|
||||
OUTPUT: "output", SIMPLE: "simple", FLOAT: "float", FULL: "full", CMD: "cmd",
|
||||
MESSAGE: "message",
|
||||
MATRIX: "matrix",
|
||||
|
||||
HEADER: "Header", ACTION: "Action", FOOTER: "Footer",
|
||||
libs: ["base.js", "core.js", "date.js", "misc.js", "page.js", "user.js"].map(function(p) { return "/lib/"+p }),
|
||||
@ -328,6 +332,7 @@ var html = {value: {
|
||||
CARD_BUTTON: 5,
|
||||
CARD_WIDTH: 320, CARD_HEIGHT: 160,
|
||||
PLUG_WIDTH: 800, PLUG_HEIGHT: 480, STORY_HEIGHT: 480, FLOAT_HEIGHT: 480, FLOAT_WIDTH: 1200, DESKTOP_WIDTH: 1200, DESKTOP_HEIGHT: 684,
|
||||
ORDER_SHOW_LIMIT: 30, ORDER_SHOW_DELAY: 150,
|
||||
},
|
||||
FIELDSET: "fieldset", LEGEND: "legend", OPTION: "option", ACTION: "action", OUTPUT: "output", STATUS: "status",
|
||||
OPTION_ARGS: "select.args,input.args,textarea.args", INPUT_ARGS: "input.args,textarea.args", INPUT_BUTTON: "input[type=button]", INPUT_FILE: "input[type=file]",
|
||||
|
7
frame.js
7
frame.js
@ -263,7 +263,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
full: !can.isCmdMode() && "切换全屏",
|
||||
open: !can.isCmdMode() && "打开链接",
|
||||
// qrcode: !can.isCmdMode() && "生成链接",
|
||||
chat: can.user.isTechOrRoot(can) && "发送聊天",
|
||||
chat: can.user.isTechOrRoot(can) && can.ConfIndex() != chat.MESSAGE && "发送聊天",
|
||||
// chat: can.misc.Search(can, ice.MSG_DEBUG) == ice.TRUE && "发送聊天",
|
||||
help: can.page.ClassList.has(can, can._fields||can._target, html.PLUGIN) && can.Conf("_help") && can.Conf("_help") != "" && "查看文档",
|
||||
// vimer: can.page.ClassList.has(can, can._fields||can._target, html.PLUGIN) && can.Conf("_fileline") && can.misc.Search(can, ice.MSG_DEBUG) == ice.TRUE && "查看源码",
|
||||
@ -1032,11 +1032,12 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
|
||||
}
|
||||
}
|
||||
},
|
||||
orderShow: function(can, target, key, limit, delay) { if (can.user.isMobile) { return } target = target||can._output, limit = limit||30, delay = delay||50
|
||||
orderShow: function(can, target, key, limit, delay) { if (can.user.isMobile) { return } target = target||can._output
|
||||
var list = can.page.SelectChild(can, target, key||html.DIV_ITEM, function(target) { can.page.style(can, target, html.VISIBILITY, html.HIDDEN); return target })
|
||||
limit = limit||html.ORDER_SHOW_LIMIT, delay = delay||html.ORDER_SHOW_DELAY
|
||||
can.core.Next(list, function(target, next, index) {
|
||||
if (index < limit) {
|
||||
can.page.style(can, target, html.VISIBILITY, ""), can.onmotion.delay(can, next, list.length > 3? delay: 0)
|
||||
can.page.style(can, target, html.VISIBILITY, ""), can.onmotion.delay(can, next, list.length > 3? delay/(index||1): 0)
|
||||
} else {
|
||||
can.core.List(list, function(target) { can.page.style(can, target, html.VISIBILITY, "") })
|
||||
}
|
||||
|
@ -54,15 +54,16 @@ body {
|
||||
--header-height:48px; --footer-height:var(--action-height); --action-height:32px; --status-height:var(--action-height);
|
||||
--river-width:var(--project-width); --project-width:230px; --input-width:140px; --button-width:60px; --form-width:320px;
|
||||
--url-input-width:320px; --textarea-height:96px;
|
||||
--qrcode-width:360px; --qrcode-height:364px;
|
||||
--iframe-height:420px;
|
||||
--qrcode-width:360px; --qrcode-height:364px;
|
||||
--iframe-height:420px;
|
||||
--card-height:160px; --card-width:320px;
|
||||
--story-height:480px;
|
||||
--float-height:var(--story-height); --float-width:1200px;
|
||||
--float-height:var(--story-height); --float-width:1200px;
|
||||
--plug-height:var(--story-height); --plug-width:var(--float-width);
|
||||
--desktop-height:684px; --desktop-width:var(--float-width); --desktop-icon-size:80px;
|
||||
--action-button:10; --table-button:5; --card-button:5;
|
||||
--river-margin:80px; --action-margin:200px;
|
||||
--order-show-limit:30; --order-show-delay:150;
|
||||
--river-margin:80px; --action-margin:200px;
|
||||
|
||||
--body-font-family:sans-serif;
|
||||
--legend-font-family:var(--body-font-family); --status-font-family:var(--body-font-family);
|
||||
|
@ -222,6 +222,7 @@ Volcanos("misc", {
|
||||
return args
|
||||
},
|
||||
SplitPath: function(can, path) {
|
||||
if (path.indexOf("http") == 0) { return [path] }
|
||||
if (path.indexOf("/require/") == 0) { return [path] }
|
||||
if (path.indexOf("/plugin/") == 0) { return ["usr/volcanos/", path.split("?")[0]] }
|
||||
var ls = path.split(nfs.PS); if (ls.length == 1) { return [nfs.PWD, ls[0]] }
|
||||
|
@ -21,7 +21,10 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can._wss = can.onda
|
||||
// can.onexport._float(can, "cli", list[0], list.slice(1), function(sub) { can.getActionSize(function(left) { can.page.style(can, sub._target, html.LEFT, left+html.PLUGIN_MARGIN, html.RIGHT, "") }) })
|
||||
can.onexport._float(can, "cli", {index: "can.console", display: "/plugin/local/code/xterm.js"}, list, function(sub) { can.getActionSize(function(left) { can.page.style(can, sub._target, html.LEFT, left+html.PLUGIN_MARGIN, html.RIGHT, "") }) })
|
||||
}
|
||||
}}, "", target, [chat.TITLE]) },
|
||||
}}, "", target, [chat.TITLE])
|
||||
can.onappend.input(can, {type: html.BUTTON, name: code.XTERM, onclick: function(event) { can.onappend._float(can, code.XTERM, cli.SH) }}, "", can._output)
|
||||
can.onappend.input(can, {type: html.BUTTON, name: chat.MESSAGE, onclick: function(event) { can.onappend._float(can, chat.MESSAGE) }}, "", can._output)
|
||||
},
|
||||
_storm: function(can, msg, target) { can.ui.storm = can.page.Append(can, can._output, [html.MENU])._target },
|
||||
_state: function(can, msg, target) { can.user.isMobile || can.core.List(can.base.Obj(can.Conf(chat.STATE)||msg.Option(chat.STATE), can.onexport.list).reverse(), function(item) {
|
||||
can.page.Append(can, target, [{view: [[html.ITEM, chat.STATE]], list: [
|
||||
|
@ -139,6 +139,11 @@ Volcanos(chat.ONACTION, {_init: function(can) {},
|
||||
setnick: function(event, can) { can.user.input(event, can, [{name: aaa.USERNICK, value: can.Conf(aaa.USERNICK)}], function(list) { can.runAction(event, aaa.USERNICK, [list[0]], function(msg) {
|
||||
can.page.Select(can, can._output, can.core.Keys(html.DIV, aaa.USERNICK), function(item) { can.page.Modify(can, item, can.Conf(aaa.USERNICK, list[0])) }), can.user.toastSuccess(can)
|
||||
}) }) },
|
||||
setavatar: function(event, can) { can.user.input(event, can, [{name: aaa.AVATAR, value: can.Conf(aaa.AVATAR), action: mdb.ICONS}], function(list) { can.runAction(event, aaa.AVATAR, [list[0]], function(msg) {
|
||||
can.page.Select(can, can._output, can.core.Keys(html.DIV, aaa.AVATAR)+" "+html.IMG, function(item) { item.src = can.misc.Resource(can, list[0]) }), can.user.toastSuccess(can)
|
||||
}) }) },
|
||||
setbackground: function(event, can) { can.user.input(event, can, [{name: aaa.BACKGROUND, value: can.Conf(aaa.BACKGROUND), action: mdb.ICONS}], function(list) { can.runAction(event, aaa.BACKGROUND, [list[0]], function(msg) {
|
||||
}) }) },
|
||||
clear: function(event, can) { can.onimport.background(event, can, "") },
|
||||
logout: function(event, can) { can.user.logout(can) },
|
||||
share: function(event, can, args) { can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE].concat(args||[])) },
|
||||
@ -149,12 +154,12 @@ Volcanos(chat.ONACTION, {_init: function(can) {},
|
||||
cli.QRCODE, "shareuser",
|
||||
[chat.THEME], [aaa.LANGUAGE],
|
||||
// [nfs.SAVE, aaa.EMAIL, web.TOIMAGE, code.WEBPACK],
|
||||
[aaa.USER, "setnick", web.CLEAR, aaa.LOGOUT],
|
||||
[aaa.USER, "setnick", "setavatar", "setbackground", web.CLEAR, aaa.LOGOUT],
|
||||
],
|
||||
_trans: kit.Dict("shareuser", "共享用户", cli.QRCODE, "生成链接",
|
||||
chat.THEME, "界面主题", aaa.LANGUAGE, "语言地区",
|
||||
nfs.SAVE, "保存网页", aaa.EMAIL, "发送邮件", web.TOIMAGE, "生成图片", code.WEBPACK, "打包页面",
|
||||
aaa.USER, "用户信息", "setnick", "设置昵称", aaa.PASSWORD, "修改密码", web.CLEAR, "清除背景", aaa.LOGOUT, "退出登录",
|
||||
aaa.USER, "用户信息", "setnick", "设置昵称", "setavatar", "设置头像", "setbackground", "设置背景", aaa.PASSWORD, "修改密码", web.CLEAR, "清除背景", aaa.LOGOUT, "退出登录",
|
||||
|
||||
"change language to zh-cn", "切换语言为中文",
|
||||
"change language to en-us", "切换语言为英文",
|
||||
|
@ -56,7 +56,7 @@ fieldset.inner>div.output>div.layout>div.path>a { padding:var(--input-padding) v
|
||||
fieldset.inner>div.output>div.layout>div.path>a:hover { background-color:var(--hover-bg-color); }
|
||||
fieldset.inner>div.output>div.layout>div.path>span { padding:var(--input-padding); }
|
||||
fieldset.inner>div.output>div.layout>div.path>span:hover { background-color:var(--hover-bg-color); }
|
||||
fieldset.inner>div.output>div.layout>div.path span.func { padding:var(--input-padding); flex-grow:1; text-align:center; }
|
||||
fieldset.inner>div.output>div.layout>div.path span.func { padding:var(--input-padding); }
|
||||
fieldset.inner>div.output>div.layout>div.path span.mode { padding:var(--input-padding); }
|
||||
body.width2 fieldset.inner>div.output>div.layout>div.path span.mode { display:none; }
|
||||
/* body.width2 fieldset.inner>div.output>div.layout>div.path span.mode { display:none; } */
|
||||
|
@ -72,8 +72,9 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
|
||||
__tabPath: function(can, cache) { var target = can.ui.path; can.onappend.style(can, html.FLEX, can.ui.path)
|
||||
can.onimport._tabPath(can, nfs.PS, nfs.PATH, can.base.Path(can.Option(nfs.PATH), can.Option(nfs.FILE)), function(p) {
|
||||
var ls = can.onexport.split(can, p); can.onimport.tabview(can, ls[0], ls[1])
|
||||
}, target), can.onimport._tabFunc(can, target, cache), can.onimport._tabMode(can)
|
||||
can.page.Append(can, target, [{view: [["item", "space"], html.SPAN]}])
|
||||
}, target), can.page.Append(can, target, [{view: [["item", "space"], html.SPAN]}])
|
||||
can.onimport._tabFunc(can, target, cache), can.page.Append(can, target, [{view: [["item", "space"], html.SPAN]}])
|
||||
can.onimport._tabMode(can), can.page.Append(can, target, [{view: [["item", "space"], html.SPAN], style: {"flex-grow": "4"}}])
|
||||
can.onimport._tabIcon(can)
|
||||
target.ondblclick = function(event) { if (event.target != target) { return }
|
||||
var show = can.onmotion.toggle(can, can.ui.tabs); can.onmotion.toggle(can, can.ui.project, show), can.onimport.layout(can)
|
||||
@ -82,13 +83,12 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
|
||||
},
|
||||
_tabPath: function(can, ps, key, value, cb, target) { var args = value.split(mdb.FS); can.onmotion.clear(can, can.ui.path)
|
||||
can.core.List(can.core.Split(args[0], ps), function(value, index, list) {
|
||||
can.page.Append(can, target, [{text: [value+(index<list.length-1? ps: ""), "", html.ITEM], onclick: function(event) {
|
||||
can.page.Append(can, target, [{text: [value+(index<list.length-1? " "+ps: ""), "", html.ITEM], onclick: function(event) {
|
||||
can.onimport.tabPath(event, can, ps, key, ps == nfs.PT? list.slice(0, index).join(ps): (list.slice(0, index).join(ps)||nfs.PT)+ps, cb)
|
||||
}}])
|
||||
}); var index = args[0]
|
||||
can.core.List(args.slice(1), function(val) { can.page.Append(can, target, [{text: [val, "", html.ITEM], onclick: function(event) {
|
||||
can.runAction(can.request(event, {index: index}), mdb.INPUTS, [ctx.ARGS], function(msg) {
|
||||
debugger
|
||||
can.user.carte(event, can, {}, msg[msg.append[0]], function(event, button) { can.onimport.tabview(can, "", [index, button].join(mdb.FS), ctx.INDEX) })
|
||||
})
|
||||
}}]) })
|
||||
@ -116,11 +116,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
|
||||
})
|
||||
can.onmotion.delay(can, function() {
|
||||
can.page.Select(can, carte._target, html.DIV_ITEM, function(target) {
|
||||
if (can.base.beginWith(target.innerText, "- ")) {
|
||||
can.onappend.style(can, "private", target)
|
||||
} else {
|
||||
can.onappend.style(can, "public", target)
|
||||
}
|
||||
can.onappend.style(can, can.base.beginWith(target.innerText, "- ")? aaa.PRIVATE: aaa.PUBLIC, target)
|
||||
})
|
||||
})
|
||||
}}])
|
||||
@ -302,7 +298,9 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
|
||||
var height = can.ui.project.offsetHeight - list.length*target.offsetHeight
|
||||
if (can.page.tagis(target.nextSibling, html.DIV_ACTION)) { height -= target.nextSibling.offsetHeight }
|
||||
can.page.SelectChild(can, target.parentNode, html.DIV_LIST, function(target) {
|
||||
can.page.style(can, target, html.MAX_HEIGHT, height)
|
||||
if (can.ui.zone.source._target == target) {
|
||||
can.page.style(can, target, html.HEIGHT, height)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
@ -417,8 +415,9 @@ Volcanos(chat.ONSYNTAX, {_init: function(can, msg, cb) { if (!msg) { return }
|
||||
} else {
|
||||
can.core.List(msg.Result().split(lex.NL), function(item) { can.onaction.appendLine(can, item) })
|
||||
}
|
||||
can.onmotion.delay(can, function() { can.onappend.scroll(can, can.ui.content) })
|
||||
can.onengine.signal(can, VIEW_CREATE, msg), can.base.isFunc(cb) && cb(msg._content = content._root? content._root: content)
|
||||
can.onmotion.delay(can, function() { can.onappend.scroll(can, can.ui.content) })
|
||||
// can.onmotion.orderShow(can, can.ui.content, "tr")
|
||||
} can.require([chat.PLUGIN_LOCAL+"code/inner/syntax.js"], function() { var parse = can.onexport.parse(can); can.Conf(chat.PLUG) && (can.onsyntax[parse] = can.Conf(chat.PLUG))
|
||||
var p = can.onsyntax[parse]; !p? can.runAction({}, mdb.PLUGIN, [parse, file, path], function(msg) {
|
||||
p = can.base.Obj(msg.Result())
|
||||
|
@ -1,5 +1,6 @@
|
||||
fieldset.vimer>div.output>div.layout>div.layout>div.layout div.content { border-left:var(--box-border); border-top:var(--box-border); }
|
||||
fieldset.vimer>div.output>div.layout>div.layout input.current { background-color:transparent; color:transparent; padding-left:var(--input-padding); height:var(--code-line-height); position:absolute; }
|
||||
fieldset.vimer>div.output.plugin>div.layout>div.layout input.current { display:none; }
|
||||
fieldset.vimer>div.output>div.layout>div.layout div.content div.complete { background-color:unset; padding-top:0; display:none; position:absolute; height:1px; overflow:visible; }
|
||||
fieldset.vimer>div.output>div.layout>div.layout div.content div.complete div.prefix { color:transparent; white-space:pre; float:left; }
|
||||
fieldset.vimer>div.output>div.layout>div.layout div.content div.complete table.content thead { display:none; }
|
||||
|
@ -61,9 +61,7 @@ Volcanos(chat.ONFIGURE, {
|
||||
})
|
||||
Volcanos(chat.ONACTION, {list: [
|
||||
"创建", "编译", "源码", "文档",
|
||||
"聊天",
|
||||
"矩阵",
|
||||
"审批",
|
||||
"计划", "聊天", "矩阵",
|
||||
"后台", "桌面", "官网"], _trans: {show: "预览", exec: "展示"},
|
||||
_run: function(event, can, button, args, cb) { can.runAction(event, button, args, cb||function(msg) {
|
||||
if (msg.IsErr()) { return can.user.toastFailure(can, msg.Result()) }
|
||||
|
@ -38,6 +38,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.ui = can.onappend.l
|
||||
_target = target, can.onmotion.delay(can, function() { can.onaction.full({}, can) })
|
||||
}
|
||||
}), _target && _target.click()
|
||||
can.onmotion.orderShow(can, can.ui.project)
|
||||
},
|
||||
_file: function(can, path) { var p = location.href.indexOf(ice.HTTP) == 0? "": "http://localhost:9020"
|
||||
return path.indexOf(ice.HTTP) == 0? path: p+can.base.Path(web.SHARE_LOCAL, can.db.dir_root||"", path)
|
||||
@ -49,6 +50,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.ui = can.onappend.l
|
||||
page: function(can, list, begin, limit) { can.onmotion.clear(can, can.ui.display)
|
||||
begin = parseInt(begin||can.db.begin), limit = parseInt(limit||can.Action(mdb.LIMIT))
|
||||
for (var i = begin; i < begin+limit; i++) { list && list[i] && can.onimport.file(can, list[i].path, list[i], i) }
|
||||
can.onmotion.orderShow(can, can.ui.display, "*")
|
||||
can.onappend._toggle(can, can.ui.display, function(event) { can.onaction.prev(event, can) }, function(event) { can.onaction.next(event, can) })
|
||||
can.Status({begin: begin, limit: limit, total: list.length})
|
||||
},
|
||||
|
@ -163,10 +163,11 @@ Volcanos(chat.ONACTION, {list: ["刷新数据",
|
||||
"打开空间": function(event, can) { can.user.open(can.misc.MergePodCmd(can, {pod: can.ConfSpace()||can.misc.Search(can, ice.POD)})) },
|
||||
"打开链接": function(event, can) { can.user.open(can.onexport.link(can)) },
|
||||
"发送聊天": function(event, can) {
|
||||
can.user.input(event, can, [{name: "message", display: "/require/usr/icebergs/core/chat/message.js", run: function(event, cmds, cb) {
|
||||
can._root.Header.run(can.request(event, {pod: can.ConfSpace()}), [ctx.ACTION, "message"].concat(cmds), function(msg) { cb(msg) })
|
||||
can.user.input(event, can, [{name: chat.MESSAGE, display: "/require/usr/icebergs/core/chat/message.js", run: function(event, cmds, cb) {
|
||||
can._root.Header.run(can.request(event, {pod: can.ConfSpace()}), [ctx.ACTION, chat.MESSAGE].concat(cmds), function(msg) { cb(msg) })
|
||||
}}], function(list) {
|
||||
can._root.Header.run(can.request(event, {pod: can.ConfSpace()}), [ctx.ACTION, "message", list[0], mdb.TYPE, "plug", ctx.INDEX, can.ConfIndex(), ctx.ARGS, JSON.stringify(can.Option())])
|
||||
can._root.Header.run(can.request(event, {pod: can.ConfSpace()}), [ctx.ACTION, chat.MESSAGE, list[0], mdb.TYPE, "plug", ctx.INDEX, can.ConfIndex(), ctx.ARGS, JSON.stringify(can.Option())])
|
||||
can.onappend._float(can, chat.MESSAGE)
|
||||
})
|
||||
},
|
||||
"生成链接": function(event, can) { can.onmotion.share(event, can, [], [web.LINK, can.user.copy(event, can, can.onexport.link(can))]) },
|
||||
|
@ -243,6 +243,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) {
|
||||
title: [[value.usernick, value.username].join(lex.SP), [value.agent, value.system, value.ip].join(lex.SP)].join(lex.NL)}
|
||||
}))
|
||||
msg.Length() > 0 && can.page.Append(can, can.ui.online, [{text: msg.Length()+""}])
|
||||
can.onmotion.orderShow(can, can.ui.online, "*", 10, 300)
|
||||
}), can.onimport._online(can, 30000)
|
||||
}, delay) },
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user