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

add stack

This commit is contained in:
shaoying 2020-01-13 22:35:39 +08:00
parent 9b9d396626
commit 34802bc626
6 changed files with 64 additions and 4 deletions

View File

@ -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

View File

@ -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

View File

@ -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) {
},

View File

@ -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

View File

@ -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}

View File

@ -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;