mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
opt some
This commit is contained in:
parent
faa329a72a
commit
efd69415a2
8
frame.js
8
frame.js
@ -1,13 +1,11 @@
|
||||
Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta, list, cb, target) {
|
||||
can.core.Next(list, function(item, next) { item.type = "pane"
|
||||
can.onappend._init(can, item, item.list, function(pane) {
|
||||
pane.Status = function(key, value) { pane.run({}, ["search", "Footer.onimport."+key, value]) }
|
||||
|
||||
pane.Status = pane.Status || function(key, value) { pane.run({}, ["search", "Footer.onimport."+key, value]) }
|
||||
pane.onaction && pane.onappend._action(pane, pane._action, item.action||pane.onaction.list)
|
||||
|
||||
pane.run = function(event, cmds, cb, silent) { var msg = pane.request(event); cmds = cmds || []
|
||||
return (can.onengine[cmds[0]]||can.onengine[meta.main.engine]||can.onengine.remote)(event, can, msg, pane, cmds, function(msg) {
|
||||
typeof cb == "function" && cb(msg)
|
||||
})
|
||||
return (can.onengine[cmds[0]]||can.onengine[meta.main.engine]||can.onengine.remote)(event, can, msg, pane, cmds, cb)
|
||||
}, can[item.name] = pane, next()
|
||||
}, target)
|
||||
}, function() {
|
||||
|
19
index.css
19
index.css
@ -187,33 +187,18 @@ fieldset.input.date {
|
||||
z-index:11;
|
||||
}
|
||||
|
||||
div.menu {
|
||||
div.carte {
|
||||
position:absolute;
|
||||
background:#295b61;
|
||||
color:white;
|
||||
padding:4px;
|
||||
}
|
||||
div.menu div.item {
|
||||
div.carte div.item {
|
||||
padding:3px 12px;
|
||||
cursor:pointer;
|
||||
}
|
||||
div.menu div.item:hover {
|
||||
background:red;
|
||||
}
|
||||
div.carte {
|
||||
color:cyan;
|
||||
background:black;
|
||||
border:solid 2px red;
|
||||
position:fixed;
|
||||
z-index:100;
|
||||
}
|
||||
div.carte div.item {
|
||||
padding:0 5px;
|
||||
}
|
||||
div.carte div.item:hover {
|
||||
background:red;
|
||||
border:solid 2px yellow;
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
div.upload {
|
||||
|
@ -22,7 +22,7 @@ Volcanos("misc", {help: "工具模块", Message: function(event, can) { var msg
|
||||
})
|
||||
|
||||
return can.core.List(msg[max], function(value, index, array) { var one = {}, res
|
||||
can.core.List(msg.append, function(key) { one[key] = (msg[key]&&msg[key][index]||"").trim() })
|
||||
can.core.List(msg.append, function(key) { one[key] = (msg[key]&&msg[key][index]||"") })
|
||||
return typeof cb == "function" && (res = cb(one, index, array)) && res != undefined && res || one
|
||||
})
|
||||
},
|
||||
@ -58,7 +58,7 @@ Volcanos("misc", {help: "工具模块", Message: function(event, can) { var msg
|
||||
}; i >= msg.append.length && msg.append.push(key)
|
||||
|
||||
msg[key] = msg[key] || []
|
||||
msg[key].push(""+(typeof value == "string"? value: JSON.stringify(value))+"")
|
||||
msg[key].push(typeof value == "string" || typeof value == "function"? value: JSON.stringify(value))
|
||||
return msg
|
||||
},
|
||||
Echo: function(res) { msg.result = msg.result || []
|
||||
|
@ -117,8 +117,8 @@ Volcanos("page", {help: "网页模块",
|
||||
data.name = data.name || name
|
||||
data.className = data.className || data.name
|
||||
data.placeholder = data.placeholder || data.name
|
||||
data.placeholder = can.user.trans(can, data.placeholder.split(".").pop())
|
||||
data.title = can.user.trans(can, data.title || data.placeholder)
|
||||
data.placeholder = data.placeholder.split(".").pop()
|
||||
data.title = data.title || data.placeholder
|
||||
data.autocomplete = "none"
|
||||
|
||||
data.onfocus = data.onfocus || function(event) {
|
||||
@ -164,6 +164,9 @@ Volcanos("page", {help: "网页模块",
|
||||
data.onload = list[1]
|
||||
}
|
||||
|
||||
data.placeholder && (data.placeholder = can.user.trans(can, data.placeholder))
|
||||
data.title && (data.title = can.user.trans(can, data.title))
|
||||
|
||||
// 创建节点
|
||||
name = name || data.className || type || ""
|
||||
!data.name && item.name && (data.name = item.name)
|
||||
@ -266,7 +269,7 @@ Volcanos("page", {help: "网页模块",
|
||||
})
|
||||
},
|
||||
|
||||
Display: function(text) {
|
||||
Display: function(text) { if (typeof text != "string") { return "" }
|
||||
if (text.startsWith("http://") || text.startsWith("https://") || text.startsWith("ftp://")) {
|
||||
var ls = text.split(" ")
|
||||
return "<a href='"+ls[0]+"' target='_blank'>"+ls[0]+"</a>"+ls.slice(1).join(" ")
|
||||
|
@ -66,6 +66,33 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
||||
can.onimport._init(can, msg, list, cb, can._output)
|
||||
})
|
||||
})
|
||||
can.onengine.listen(can, "search", function(msg, word) {
|
||||
if (word[0] != "*" && word[0] != "fieldset") { return }
|
||||
|
||||
var fields = (msg.Option("fields")||"pod,ctx,cmd,type,name,text").split(",")
|
||||
can.page.Select(can, can._output, "fieldset.plugin>legend", function(item) {
|
||||
if (item.innerHTML.indexOf(word[1]) == -1) { return }
|
||||
|
||||
can.core.List(fields, function(key) {
|
||||
switch (key) {
|
||||
case "type":
|
||||
msg.Push(key, "fieldset")
|
||||
break
|
||||
case "name":
|
||||
msg.Push(key, item.innerHTML)
|
||||
break
|
||||
case "text":
|
||||
msg.Push(key, function() {
|
||||
var input = can.page.Select(can, item.parentNode, "input.args")[0]
|
||||
input && input.focus()
|
||||
})
|
||||
break
|
||||
default:
|
||||
msg.Push(key, "")
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
})
|
||||
Volcanos("onexport", {help: "导出数据", list: [],
|
||||
|
@ -29,3 +29,12 @@ fieldset.Header>div.output>div.state {
|
||||
float:right;
|
||||
}
|
||||
|
||||
fieldset.Header>div.output div.menu {
|
||||
height:22px; padding:5px;
|
||||
cursor:pointer;
|
||||
float:left;
|
||||
}
|
||||
fieldset.Header>div.output div.menu:hover {
|
||||
border-bottom:solid 2px red;
|
||||
background-color:#2e515f;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||
can._trans = {
|
||||
"river": "菜单",
|
||||
"search": "搜索",
|
||||
"setting": "设置",
|
||||
"pack": "打包页面",
|
||||
"white": "白色主题",
|
||||
@ -13,6 +14,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
can.onimport._state(can, msg, target)
|
||||
can.onimport._search(can, msg, target)
|
||||
can.onimport._agent(can, msg, target)
|
||||
can.onimport._menu(can, msg, target)
|
||||
typeof cb == "function" && cb(msg)
|
||||
},
|
||||
_title: function(can, msg, target) {
|
||||
@ -23,21 +25,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
}])
|
||||
})
|
||||
},
|
||||
_search: function(can, msg, target) {
|
||||
can.user.isMobile || (can.search = can.page.Append(can, target, [{view: "search", list: [{type: "input", data: {placeholder: "search"}, onkeydown: function(event) {
|
||||
can.onkeypop.input(event, can)
|
||||
|
||||
switch (event.key) {
|
||||
case "Enter": can.run(event, ["search", "Search.onimport.select", "*", event.target.value]); break
|
||||
}
|
||||
}, }], }]).input)
|
||||
|
||||
var ui = can.page.Append(can, target, can.core.List(can.user.isMobile || can.user.isExtension || can.user.Search(can, POD)? ["river", "setting"]: ["setting"], function(item) {
|
||||
return {view: ["menus", "div", item], onclick: function(event) {
|
||||
var cb = can.onaction[item]; typeof cb == "function" && cb(event, can, item)
|
||||
}}
|
||||
}))
|
||||
},
|
||||
_state: function(can, msg, target) {
|
||||
can.core.List(can.Conf(STATE)||["time", USERNAME], function(item) {
|
||||
can.page.Append(can, target, [{view: ["state "+item, "div", can.Conf(item)],
|
||||
@ -50,6 +37,15 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
}])
|
||||
})
|
||||
},
|
||||
_search: function(can, msg, target) {
|
||||
can.user.isMobile || (can.search = can.page.Append(can, target, [{view: "search", list: [{type: "input", data: {placeholder: "search"}, onkeydown: function(event) {
|
||||
can.onkeypop.input(event, can)
|
||||
|
||||
switch (event.key) {
|
||||
case "Enter": can.run(event, ["search", "Search.onimport.select", "*", event.target.value]); break
|
||||
}
|
||||
}, }], }]).input)
|
||||
},
|
||||
_agent: function(can, msg, target) {
|
||||
if (can.user.isMobile) {
|
||||
can.onaction.River(can)
|
||||
@ -63,9 +59,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
can.user.isWeiXin && can.onimport._weixin(can)
|
||||
},
|
||||
_weixin: function(can, msg) { can.run({}, ["action", "wx"], function(msg) {
|
||||
can.user.toast(can, "weixin")
|
||||
can.require(["https://res.wx.qq.com/open/js/jweixin-1.6.0.js"], function(can) {
|
||||
can.user.toast(can, "weixin")
|
||||
can.user.agent = { __proto__: can.user.agent,
|
||||
getLocation: function(cb) { wx.getLocation({type: "gcj02", success: function (res) {
|
||||
typeof cb == "function" && cb({latitude: parseInt(res.latitude*100000), longitude: parseInt(res.longitude*100000) })
|
||||
@ -89,9 +83,17 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
})
|
||||
}) })
|
||||
},
|
||||
_menu: function(can, msg, target) {
|
||||
can.page.Append(can, target, can.core.List(can.user.isMobile || can.user.isExtension || can.user.Search(can, POD)? ["river", "setting"]: ["setting"], function(item) {
|
||||
return {view: ["menus", "div", item], onclick: function(event) {
|
||||
var cb = can.onaction[item]; typeof cb == "function" && cb(event, can, item)
|
||||
}}
|
||||
}))
|
||||
can.menu = can.page.Append(can, target, [{view: ["menu", "some"], style: {float: "left"}}]).first
|
||||
},
|
||||
|
||||
topic: function(can, topic) {
|
||||
can.user.topic(can, topic || can._topic || can.user.Search(can, TOPIC) || can.user.Search(can, POD) || (can.base.isNight()? "black": "white"))
|
||||
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"))
|
||||
},
|
||||
time: function(can, target) {
|
||||
target.innerHTML = can.base.Time(null, "%w %H:%M:%S")
|
||||
@ -99,19 +101,21 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
},
|
||||
|
||||
menu: function(can, cmds, cb) {
|
||||
can.onmotion.clear(can, can.menu)
|
||||
can.core.List(cmds, function(item) {
|
||||
if (typeof item == "string") {
|
||||
can.page.Append(can, can._output, [{view: ["menus", "div", item], onclick: function(event) {
|
||||
can.page.Append(can, can.menu, [{view: ["menu", "div", item], onclick: function(event) {
|
||||
typeof cb == "function" && cb(event, item)
|
||||
}}])
|
||||
|
||||
} else if (item.length > 0) {
|
||||
can.page.Append(can, can._output, [{view: ["menus", "div", item[0]], onclick: function(event) {
|
||||
can.page.Append(can, can.menu, [{view: ["menu", "div", item[0]], onclick: function(event) {
|
||||
var ui = can.user.carte(event, can, can.onaction, item.slice(1), cb)
|
||||
can.page.Modify(can, ui.first, {style: {top: can._target.offsetHeight}, className: "menu"})
|
||||
can.page.Modify(can, ui.first, {style: {top: can._target.offsetHeight}})
|
||||
}}])
|
||||
|
||||
} else if (typeof item == "object") {
|
||||
|
||||
can.page.Append(can, can.menu, [item])
|
||||
}
|
||||
})
|
||||
},
|
||||
@ -138,7 +142,7 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
|
||||
},
|
||||
username: function(event, can) {
|
||||
var ui = can.user.carte(event, can, can.onaction, ["logout"])
|
||||
can.page.Modify(can, ui.first, {style: {top: can._target.offsetHeight}, className: "menu"})
|
||||
can.page.Modify(can, ui.first, {style: {top: can._target.offsetHeight}})
|
||||
},
|
||||
logout: function(event, can) {
|
||||
can.user.logout(can)
|
||||
@ -163,12 +167,11 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
|
||||
|
||||
river: function(event, can) { can.run(event, ["search", "River.onmotion.toggle"]) },
|
||||
setting: function(event, can) {
|
||||
var ui = can.user.carte(event, can, can.onaction, ["pack", "white", "black", "toast"])
|
||||
can.page.Modify(can, ui.first, {style: {top: can._target.offsetHeight}, className: "menu"})
|
||||
var ui = can.user.carte(event, can, can.onaction, ["pack", "white", "black"])
|
||||
can.page.Modify(can, ui.first, {style: {top: can._target.offsetHeight}})
|
||||
},
|
||||
black: function(event, can, button) { can.user.topic(can, can._topic = button) },
|
||||
white: function(event, can, button) { can.user.topic(can, can._topic = button) },
|
||||
toast: function(event, can, button) { can.user.toast(can, "nice", "hi", 1000000)},
|
||||
black: function(event, can, button) { can.onimport.topic(can, button) },
|
||||
white: function(event, can, button) { can.onimport.topic(can, button) },
|
||||
|
||||
River: function(can) { can.run({}, ["search", "River.onmotion.toggle"]) },
|
||||
Footer: function(can) { can.run({}, ["search", "River.onmotion.autosize"]) },
|
||||
|
@ -3,7 +3,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
can._main_river = can.user.Search(can, RIVER) || (can.user.isMobile||can.user.isExtension? "product": "project")
|
||||
can._main_storm = can.user.Search(can, STORM) || (can.user.isMobile||can.user.isExtension? "office": "studio")
|
||||
|
||||
can.run({}, ["search", "Header.onimport.menu", ["操作", "添加"]], function(event, item) {
|
||||
can.run({}, ["search", "Header.onimport.menu", ["群组", "添加用户", "添加设备", "添加应用"], ["应用", "添加工具"]], function(event, item) {
|
||||
var cb = can.ondetail[item]; typeof cb == "function" && cb(event, can, item, can.Conf(RIVER), can.Conf(STORM))
|
||||
})
|
||||
|
||||
@ -16,7 +16,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
// 右键点击
|
||||
var ui = can.user.carte(event, can, can.ondetail, can.ondetail.list, function(ev, item, meta) {
|
||||
can.ondetail[item](event, can, item, value.hash)
|
||||
}); can.page.Modify(can, ui.first, {style: {left: can._target.offsetWidth}, className: "menu"})
|
||||
}); can.page.Modify(can, ui.first, {style: {left: can._target.offsetWidth}})
|
||||
})
|
||||
|
||||
if (index == 0 || [value.hash, value.name].indexOf(can._main_river) > -1) { select = view }
|
||||
@ -58,7 +58,7 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
|
||||
// 右键点击
|
||||
var ui = can.user.carte(event, can, can.ondetail, ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"], function(ev, item, meta) {
|
||||
can.ondetail[item](event, can, item, storm.hash, river)
|
||||
}); can.page.Modify(can, ui.first, {style: {left: can._target.offsetWidth}, className: "menu"})
|
||||
}); can.page.Modify(can, ui.first, {style: {left: can._target.offsetWidth}})
|
||||
}}
|
||||
}) }]).first, list.children.length > 0 && list.children[select].click()
|
||||
|
||||
|
@ -6,14 +6,10 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
can.Status("count", index+1)
|
||||
|
||||
return {text: [value, "td"], onclick: function(event) {
|
||||
if (line.type == "fieldset") {
|
||||
can.page.Select(can, document.body, "fieldset.pane.Action fieldset.plugin>legend", function(item) {
|
||||
if (item.innerHTML == line.name) {
|
||||
var cb = can.page.Select(can, item.parentNode, "input.args")[0]
|
||||
can.onmotion.hide(can)
|
||||
cb && cb.focus()
|
||||
}
|
||||
})
|
||||
if (typeof line.text == "function") {
|
||||
can.onmotion.hide(can)
|
||||
line.text()
|
||||
return
|
||||
}
|
||||
|
||||
can.page.Append(can, can.ui.table, [{td: can.core.List(fields, function(item) {
|
||||
@ -27,40 +23,21 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
})
|
||||
},
|
||||
|
||||
select: function(can, msg, cmd, cb) { can.onmotion.clear(can)
|
||||
select: function(can, msg, cmds, cb) { can.onmotion.clear(can)
|
||||
var fields = (msg.Option("fields")||"pod,ctx,cmd,type,name,text").split(",")
|
||||
|
||||
function search(word, cb) { cmd[1] = word
|
||||
if (word == "" && can.list && can.list[0] && can.list[0].type == "fieldset") {
|
||||
can.page.Select(can, document.body, "fieldset.pane.Action fieldset.plugin>legend", function(item) {
|
||||
if (item.innerHTML == can.list[0].name) {
|
||||
var cb = can.page.Select(can, item.parentNode, "input.args")[0]
|
||||
can.onmotion.hide(can)
|
||||
cb && cb.focus()
|
||||
}
|
||||
})
|
||||
function search(word, cb) { cmds[1] = word
|
||||
if (word == "" && can.list && can.list[0] && typeof can.list[0].text == "function") {
|
||||
can.onmotion.hide(can)
|
||||
can.list[0].text()
|
||||
return
|
||||
}
|
||||
|
||||
var msg = can.request({}, {fields: fields.join(",")})
|
||||
can.page.Select(can, document.body, "fieldset.pane.Action fieldset.plugin>legend", function(item) {
|
||||
if (item.innerHTML.indexOf(word) == -1) { return }
|
||||
var msg = can.request({}, {fields: fields.join(","), word: cmds})
|
||||
can.onengine.trigger(can, msg, "search")
|
||||
|
||||
can.core.List(fields, function(key) {
|
||||
switch (key) {
|
||||
case "type":
|
||||
msg.Push(key, "fieldset")
|
||||
break
|
||||
case "name":
|
||||
msg.Push(key, item.innerHTML)
|
||||
break
|
||||
default:
|
||||
msg.Push(key, "")
|
||||
}
|
||||
})
|
||||
})
|
||||
can.onmotion.clear(can, can.ui.content)
|
||||
can.run(msg._event, cmd, function(msg) {
|
||||
can.run(msg._event, cmds, function(msg) {
|
||||
can.list = msg.Table()
|
||||
can.onimport._table(can, msg, fields, search)
|
||||
typeof cb == "function" && cb(msg)
|
||||
@ -90,7 +67,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
|
||||
can.onmotion.show(can)
|
||||
can.ui.input.focus()
|
||||
search(cmd[1])
|
||||
search(cmds[1])
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "交互操作", list: ["关闭", "清空", "完成"], _init: function(can, msg, list, cb, target) {
|
||||
|
7
proto.js
7
proto.js
@ -11,10 +11,10 @@ function shy(help, meta, list, cb) {
|
||||
cb.list = next("object") || []
|
||||
return cb
|
||||
}; var _can_name = ""
|
||||
var Volcanos = shy("火山架", {cache: {}, libs: [], _target: document.body}, [], function(name, can, libs, cb) {
|
||||
var Volcanos = shy("火山架", {libs: [], cache: {}}, [], function(name, can, libs, cb) {
|
||||
var meta = arguments.callee.meta, list = arguments.callee.list
|
||||
if (typeof name == "object") { var Config = name; _can_name = ""
|
||||
meta.libs = Config.libs, meta.volcano = Config.volcano
|
||||
meta.volcano = Config.volcano, meta.libs = Config.libs
|
||||
|
||||
// 预加载
|
||||
var Preload = Config.libs; Config.panes.forEach(function(pane) {
|
||||
@ -23,7 +23,7 @@ var Volcanos = shy("火山架", {cache: {}, libs: [], _target: document.body}, [
|
||||
|
||||
// 根模块
|
||||
name = Config.name, can = {_follow: Config.name,
|
||||
_width: window.innerWidth, _height: window.innerHeight,
|
||||
_target: document.body, _width: window.innerWidth, _height: window.innerHeight,
|
||||
}, libs = Preload.concat(Config.volcano), cb = function(can) {
|
||||
can.onengine._init(can, can.Conf(Config), Config.panes, function(msg) {
|
||||
can.base.Log(name, "run", window.can = can)
|
||||
@ -32,7 +32,6 @@ var Volcanos = shy("火山架", {cache: {}, libs: [], _target: document.body}, [
|
||||
}, can.onlayout._init(can, can._target, window.innerWidth, window.innerHeight-8)
|
||||
}, can._target)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
list.push(can = can || {}), can.__proto__ = {__proto__: Volcanos.meta, _name: name, _load: function(name, cb) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user