mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
add stack
This commit is contained in:
parent
9b9d396626
commit
34802bc626
4
frame.js
4
frame.js
@ -97,15 +97,13 @@ var can = Volcanos("chat", {
|
||||
},
|
||||
}, Config.libs.concat(["pane/"+name]), function(pane) {
|
||||
can.Dream(document.head, "pane/"+name+".css")
|
||||
pane.onimport._init && pane.onimport._init(pane, pane.Conf(meta), pane.output, pane.action, pane.option, field)
|
||||
|
||||
function deal(event, value) {
|
||||
typeof pane.onaction[value] == "function" && pane.onaction[value](event, pane, meta, value, pane.output)
|
||||
}
|
||||
|
||||
can.page.Append(can, pane.action, can.core.List(pane.onaction.list, function(line) {
|
||||
return typeof line == "string"? {button: [line, deal]}: line.length > 0? {select: [line, deal]}: line
|
||||
}))
|
||||
pane.onimport._init && pane.onimport._init(pane, pane.Conf(meta), pane.output, pane.action, pane.option, field)
|
||||
typeof cb == "function" && cb(pane)
|
||||
}, meta)
|
||||
return pane
|
||||
|
@ -23,6 +23,7 @@ Volcanos("user", {help: "用户模块",
|
||||
if (typeof key == "object") {
|
||||
can.core.Item(key, function(key, value) {
|
||||
if (value != undefined) {args[key] = value}
|
||||
args[key] == "" && delete(args[key])
|
||||
})
|
||||
} else if (key == undefined) {
|
||||
return args
|
||||
|
@ -1,10 +1,16 @@
|
||||
Volcanos("onimport", {help: "导入数据", list: [],
|
||||
_init: function(can, conf, output, action, option, field) {
|
||||
can.page.Select(can, action, "input", function(input) {
|
||||
input.value = can.user.Search(can, input.name) || ""
|
||||
})
|
||||
},
|
||||
init: function(event, can, msg, cmd, output) {output.innerHTML = "";
|
||||
msg.Table(function(item, index) {if (!item.name) {return}
|
||||
can._plugins.push(can[item.name] = can.Plugin(can, item.name, item, function(event, cmds, cbs) {
|
||||
can.run(event, [item.river, item.storm, item.action].concat(cmds), cbs)
|
||||
}, can.page.AppendField(can, output, "item "+item.group+" "+item.name, item)))
|
||||
})
|
||||
|
||||
},
|
||||
size: function(event, can, value, cmd, output) {
|
||||
},
|
||||
|
@ -38,11 +38,15 @@ Volcanos("onchoice", {help: "组件菜单", list: []})
|
||||
Volcanos("ondetail", {help: "组件详情", list: []})
|
||||
Volcanos("onexport", {help: "导出数据", list: [],
|
||||
title: function(event, can, value, cmd, output) {
|
||||
can.user.Search(can, {
|
||||
var args = {
|
||||
river: can.Conf("river"),
|
||||
storm: can.Conf("storm"),
|
||||
layout: can.Conf("layout"),
|
||||
}
|
||||
can.page.Select(can, document.body, "fieldset.Action>div.action>input", function(input) {
|
||||
args[input.name] = input.value
|
||||
})
|
||||
can.user.Search(can, args)
|
||||
},
|
||||
link: function(event, can, value, cmd, output) {
|
||||
can.ui[cmd].innerHTML = value
|
||||
|
@ -22,6 +22,43 @@ Volcanos("onimport", {help: "导入数据", list: [],
|
||||
}))
|
||||
}
|
||||
})
|
||||
can.page.Select(can, output, "div.stack", function(stack) {var data = stack.dataset||{};
|
||||
function fold(stack) {
|
||||
stack.nextSibling && (stack.nextSibling.style.display = "none")
|
||||
can.page.ClassList.add(can, stack, "fold")
|
||||
can.page.ClassList.del(can, stack, "span")
|
||||
can.page.Select(can, stack, "span.state", function(state) {
|
||||
state.innerText = ">"
|
||||
})
|
||||
}
|
||||
function span(stack) {
|
||||
stack.nextSibling && (stack.nextSibling.style.display = "")
|
||||
can.page.ClassList.add(can, stack, "span")
|
||||
can.page.ClassList.del(can, stack, "fold")
|
||||
can.page.Select(can, stack, "span.state", function(state) {
|
||||
state.innerText = "v"
|
||||
})
|
||||
}
|
||||
|
||||
stack.oncontextmenu = function(event) {var detail = can.feature.detail || can.ondetail.list, target = event.target;
|
||||
can.user.carte(event, shy("", can.ondetail, ["全部折叠", "全部展开", "标记颜色"], function(event, cmd, meta) {var cb = meta[cmd];
|
||||
switch (cmd) {
|
||||
case "标记颜色":
|
||||
can.user.prompt("请输入颜色:", function(color) {
|
||||
target.style.background = color;
|
||||
})
|
||||
break
|
||||
case "全部折叠":
|
||||
fold(stack), can.page.Select(can, stack.nextSibling, "div.stack", fold)
|
||||
break
|
||||
case "全部展开":
|
||||
span(stack), can.page.Select(can, stack.nextSibling, "div.stack", span)
|
||||
break
|
||||
}
|
||||
}))
|
||||
}
|
||||
stack.onclick = function(event) {stack.nextSibling && (stack.nextSibling.style.display == "none"? span(stack): fold(stack))}
|
||||
})
|
||||
},
|
||||
favor: function(event, can, msg, cmd, output) {var key = msg.detail[0];
|
||||
var cb = can.onaction[key]; if (typeof cb == "function") {cb(event, can, msg, cmd, output); return msg.Echo(can._name, " onaction ", key), msg._hand = true}
|
||||
|
14
style.css
14
style.css
@ -223,6 +223,20 @@ fieldset table td.select {
|
||||
background-color:red;
|
||||
}
|
||||
|
||||
fieldset div.stack {
|
||||
cursor:pointer;
|
||||
width:fit-content;
|
||||
}
|
||||
fieldset div.stack.fold {
|
||||
font-weight:bold;
|
||||
}
|
||||
fieldset ul.stack {
|
||||
margin:0px;
|
||||
}
|
||||
fieldset ul.stack:hover {
|
||||
border:solid 2px red;
|
||||
}
|
||||
|
||||
fieldset div.code {
|
||||
color:white;
|
||||
font-size:14px;
|
||||
|
Loading…
x
Reference in New Issue
Block a user