1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 08:48:06 +08:00

add LICENSE

This commit is contained in:
harveyshao 2021-05-18 17:13:34 +08:00
parent d2403f6b3d
commit 975a80aa6b
8 changed files with 50 additions and 25 deletions

View File

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2019 码神 Copyright (c) 2021 码神
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -14,6 +14,7 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
}, function() { can.onlayout.topic(can) }, function() { can.onlayout.topic(can)
can.misc.Log(can.user.title(), "run", can) can.misc.Log(can.user.title(), "run", can)
can.base.Copy(can.onengine.river, can.Conf("river")) can.base.Copy(can.onengine.river, can.Conf("river"))
can.onmotion._init(can, target), can.onkeypop._init(can, target)
can.onengine.signal(can, "onmain", can.request()) can.onengine.signal(can, "onmain", can.request())
}) })
}, },
@ -477,9 +478,11 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe
topic: function(can, topic) { topic && (can._topic = topic) topic: function(can, topic) { topic && (can._topic = topic)
can.user.topic(can, can._topic || can.user.Search(can, "topic") || ((can.user.Search(can, "pod")||can.base.isNight())? "black": "white")) can.user.topic(can, can._topic || can.user.Search(can, "topic") || ((can.user.Search(can, "pod")||can.base.isNight())? "black": "white"))
}, },
figure: function(event, can, target) { target = target||can._target figure: function(event, can, target, right) { target = target||can._target; if (!event || !event.target) { return }
if (!event.target) { return } var left = event.clientX-event.offsetX, top = event.clientY-event.offsetY+event.target.offsetHeight; if (right) {
var left = event.clientX-event.offsetX, top = event.clientY-event.offsetY+event.target.offsetHeight var left = event.clientX-event.offsetX+event.target.offsetWidth, top = event.clientY-event.offsetY
}
if (left+target.offsetWidth>window.innerWidth) { left = window.innerWidth - target.offsetWidth } if (left+target.offsetWidth>window.innerWidth) { left = window.innerWidth - target.offsetWidth }
if (top+target.offsetHeight>window.innerHeight) { top = window.innerHeight - target.offsetHeight } if (top+target.offsetHeight>window.innerHeight) { top = window.innerHeight - target.offsetHeight }
@ -555,6 +558,11 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
float: { float: {
_hash: {}, _hash: {},
del: function(can, key) { del: function(can, key) {
if (key == "carte") {
can.page.Select(can, document.body, "div.carte", function(item) {
can.page.Remove(can, item)
})
}
this._hash[key] && can.page.Remove(can, this._hash[key]._target) this._hash[key] && can.page.Remove(can, this._hash[key]._target)
}, },
add: function(can, key, value) { add: function(can, key, value) {

View File

@ -3,7 +3,8 @@ Volcanos("page", {help: "网页模块", ClassList: {
return list.indexOf(key) > -1 return list.indexOf(key) > -1
}, },
add: function(can, obj, key) { var list = obj.className? obj.className.split(" "): [] add: function(can, obj, key) { var list = obj.className? obj.className.split(" "): []
return obj.className = can.base.AddUniq(list, key).join(" ").trim() var value = can.base.AddUniq(list, key).join(" ").trim()
return value != obj.className && (obj.className = value), value
}, },
del: function(can, obj, key) { var list = obj.className? obj.className.split(" "): [] del: function(can, obj, key) { var list = obj.className? obj.className.split(" "): []
return obj.className = can.core.List(list, function(value) { return obj.className = can.core.List(list, function(value) {
@ -145,9 +146,10 @@ Volcanos("page", {help: "网页模块", ClassList: {
if (type == "input") { if (type == "input") {
data.type == "button" && (data.value = can.user.trans(can, data.value)) data.type == "button" && (data.value = can.user.trans(can, data.value))
data.type == "text" && (data.autocomplete = data.autocomplete||"off") if (data.type == "text") { data.autocomplete = data.autocomplete||"off"
data.placeholder = can.user.trans(can, (data.placeholder||data.name||"").split(".").pop()) data.placeholder = can.user.trans(can, (data.placeholder||data.name||"").split(".").pop())
data.title = can.user.trans(can, data.title||data.placeholder) data.title = can.user.trans(can, data.title||data.placeholder)
}
} }
// 创建节点 // 创建节点

View File

@ -33,9 +33,8 @@ Volcanos("user", {help: "用户操作", agent: {
title: function(text) { return text && (document.title = text), document.title }, title: function(text) { return text && (document.title = text), document.title },
topic: function(can, name) { topic: function(can, name) {
can.user.isMobile && (name += " mobile") && can.user.isLandscape && (name += " landscape")
can.page.Modify(can, document.body, {className: name}) can.page.Modify(can, document.body, {className: name})
can.user.isMobile && can.page.ClassList.add(can, document.body, "mobile")
can.user.isMobile && can.page.ClassList.set(can, document.body, "landscape", can.user.isLandscape)
}, },
trans: function(can, text) { if (typeof text == "function") { text = text.name || "" } trans: function(can, text) { if (typeof text == "function") { text = text.name || "" }
return can._trans&&can._trans[text] || can.Conf("trans."+text) || can.Conf("feature.trans."+text) || { return can._trans&&can._trans[text] || can.Conf("trans."+text) || can.Conf("feature.trans."+text) || {
@ -136,21 +135,28 @@ Volcanos("user", {help: "用户操作", agent: {
can.page.Remove(can, input), can.user.toast(can, text, "复制成功") can.page.Remove(can, input), can.user.toast(can, text, "复制成功")
event.stopPropagation(), event.preventDefault() event.stopPropagation(), event.preventDefault()
}, },
carte: function(event, can, meta, list, cb) { carte: function(event, can, meta, list, cb, parent) {
meta = meta||can.ondetail||can.onaction||{}, list = list&&list.length > 0? list: meta.list||[]; if (list.length == 0) { return } meta = meta||can.ondetail||can.onaction||{}, list = list&&list.length > 0? list: meta.list||[]; if (list.length == 0) { return }
cb = cb||function(ev, item, meta) { var cb = meta[item]; can.base.isFunc(cb) && cb(event, can, item) } cb = cb||function(event, item, meta) { var cb = meta[item]; can.base.isFunc(cb) && cb(event, can, item) }
var ui = can.page.Append(can, document.body, [{view: "carte", style: {left: 0, top: 0}, onmouseleave: function(event) { var ui = can.page.Append(can, document.body, [{view: "carte", style: {left: 0, top: 0}, onmouseleave: function(event) {
can.page.Remove(can, ui._target) // can.page.Remove(can, ui._target)
}, list: can.core.List(list, function(item) { }, list: can.core.List(list, function(item) {
return {view: "item", list: [{text: can.user.trans(can, item), click: function(event) { return typeof item == "string"? {view: "item", list: [{text: can.user.trans(can, item), click: function(event) {
can.user.isMobile && can.page.Remove(can, ui._target) can.user.isMobile && can.page.Remove(can, ui._target)
can.base.isFunc(cb) && cb(event, item, meta) can.base.isFunc(cb) && cb(event, item, meta)
} }] } }, onmouseenter: function(event) {
carte._float && can.page.Remove(can, carte._float._target)
} }] }: {view: "item", list: [{text: can.user.trans(can, item[0])}], onmouseenter: function(event) {
var sub = can.user.carte(event, can, meta, item.slice(1), cb, carte)
carte._float && can.page.Remove(can, carte._float._target), carte._float = sub
can.onlayout.figure(event, can, sub._target, true)
} }
}) }] ); can.onlayout.figure(event, can, ui._target) }) }] ); can.onlayout.figure(event, can, ui._target)
can.onmotion.float.add(can, "carte", ui) var carte = {_target: ui._target, _parent: parent}
return event.stopPropagation(), event.preventDefault(), {_target: ui._target} null && can.onmotion.float.add(can, "carte", carte)
return event.stopPropagation(), event.preventDefault(), carte
}, },
input: function(event, can, form, cb, button) { // form [ string, array, object, {_input: "select", values: []} input: function(event, can, form, cb, button) { // form [ string, array, object, {_input: "select", values: []}
var msg = can.request(event, can.Option()) var msg = can.request(event, can.Option())

View File

@ -1,9 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<head> <head>
<meta name="viewport" content="width=device-width,initial-scale=0.8,user-scalable=no">
<meta charset="utf-8"> <meta charset="utf-8">
<title>volcanos</title> <title>volcanos</title>
<link rel="shortcut icon" type="image/ico" href="favicon.ico"> <link rel="shortcut icon" type="image/ico" href="favicon.ico">
<link rel="stylesheet" type="text/css" href="/page/cache.css"> <link rel="stylesheet" type="text/css" href="/page/cache.css">
<link rel="stylesheet" type="text/css" href="/page/index.css"> <link rel="stylesheet" type="text/css" href="/page/index.css">

View File

@ -173,8 +173,7 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
can.user.input(event, can, [ can.user.input(event, can, [
{name: "name", value: river}, {name: "name", value: river},
], function(event, button, meta, list) { ], function(event, button, meta, list) {
var msg = can.request(event) can.user.share(can, can.request(event), [river, "action", "share", "type", can._RIVER, "name", meta.name])
can.user.share(can, msg, [river, "action", "share", "type", can._RIVER, "name", meta.name])
}) })
}, },
"添加用户": function(event, can, button, river) { "添加用户": function(event, can, button, river) {
@ -284,8 +283,8 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
"共享主机": function(event, can, button, river, storm) { "共享主机": function(event, can, button, river, storm) {
can.run(event, ["action", "invite"], function(msg) { can.run(event, ["action", "invite"], function(msg) {
can.user.toast(can, { can.user.toast(can, {
title: "共享主机", content: msg.Result(), title: "共享主机", duration: -1, width: -100,
button: ["close"], duration: -1, width: -100, content: msg.Result(), action: ["close"],
}) })
}) })
}, },

View File

@ -39,6 +39,7 @@ Volcanos("onaction", {help: "交互操作", list: ["关闭", "清空", "完成"]
can.base.isFunc(cb) && cb() can.base.isFunc(cb) && cb()
}, },
onlogin: function(can, msg) { onlogin: function(can, msg) {
can.onappend._action(can, can.Conf("action")||can.onaction.list)
can.ui = can.page.Append(can, can._output, [ can.ui = can.page.Append(can, can._output, [
{input: ["word", function(event) { can.onkeypop.input(event, can) {input: ["word", function(event) { can.onkeypop.input(event, can)
if (event.key == "Escape") { can.onmotion.hide(can) } if (event.key == "Escape") { can.onmotion.hide(can) }

View File

@ -61,7 +61,14 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
return true return true
}, },
}) })
Volcanos("onaction", {help: "交互操作", list: ["保存参数", "清空参数", "共享工具", "刷新数据", "复制数据", "下载数据", "清空数据"], _init: function(can, msg, list, cb, target) { Volcanos("onaction", {help: "交互操作", list: [
"保存参数", "清空参数", "共享工具", "删除工具", "刷新数据", "清空数据", [
"其它", "复制数据", "下载数据", [
"其它", "复制数据", "下载数据",
], [
"其它", "复制数据", "下载数据",
],
]], _init: function(can, msg, list, cb, target) {
}, },
"保存参数": function(event, can) { var meta = can.Conf() "保存参数": function(event, can) { var meta = can.Conf()
var msg = can.request(event, {river: can.Conf("river"), storm: can.Conf("storm"), id: meta.id}) var msg = can.request(event, {river: can.Conf("river"), storm: can.Conf("storm"), id: meta.id})
@ -73,7 +80,7 @@ Volcanos("onaction", {help: "交互操作", list: ["保存参数", "清空参数
can.page.Select(can, can._option, '.args', function(item) { return item.value = "" }) can.page.Select(can, can._option, '.args', function(item) { return item.value = "" })
}, },
"共享工具": function(event, can) { var meta = can.Conf() "共享工具": function(event, can) { var meta = can.Conf()
can.user.input(event, can, [{name: "name", value: meta.name}], function(event, button, data, list, args) { var ui = can.user.input(event, can, [{name: "name", value: meta.name}], function(event, button, data, list, args) {
var msg = can.request(event, {arg: [ var msg = can.request(event, {arg: [
"type", "field", "type", "field",
"name", list[0], "text", JSON.stringify(can.Pack([], true)), "name", list[0], "text", JSON.stringify(can.Pack([], true)),
@ -81,6 +88,10 @@ Volcanos("onaction", {help: "交互操作", list: ["保存参数", "清空参数
]}) ]})
can.search(event, ["Header.onaction.share"]) can.search(event, ["Header.onaction.share"])
}) })
can.onlayout.figure(event, can, ui._target, true)
},
"删除工具": function(event, can) {
can.page.Remove(can, can._target)
}, },
"刷新数据": function(event, can) { var meta = can.Conf() "刷新数据": function(event, can) { var meta = can.Conf()
can.onappend._output(can, meta, {}, can.Pack([], true)) can.onappend._output(can, meta, {}, can.Pack([], true))