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) {
|
}, Config.libs.concat(["pane/"+name]), function(pane) {
|
||||||
can.Dream(document.head, "pane/"+name+".css")
|
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) {
|
function deal(event, value) {
|
||||||
typeof pane.onaction[value] == "function" && pane.onaction[value](event, pane, meta, value, pane.output)
|
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) {
|
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
|
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)
|
typeof cb == "function" && cb(pane)
|
||||||
}, meta)
|
}, meta)
|
||||||
return pane
|
return pane
|
||||||
|
@ -23,6 +23,7 @@ Volcanos("user", {help: "用户模块",
|
|||||||
if (typeof key == "object") {
|
if (typeof key == "object") {
|
||||||
can.core.Item(key, function(key, value) {
|
can.core.Item(key, function(key, value) {
|
||||||
if (value != undefined) {args[key] = value}
|
if (value != undefined) {args[key] = value}
|
||||||
|
args[key] == "" && delete(args[key])
|
||||||
})
|
})
|
||||||
} else if (key == undefined) {
|
} else if (key == undefined) {
|
||||||
return args
|
return args
|
||||||
|
@ -1,10 +1,16 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [],
|
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 = "";
|
init: function(event, can, msg, cmd, output) {output.innerHTML = "";
|
||||||
msg.Table(function(item, index) {if (!item.name) {return}
|
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._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.run(event, [item.river, item.storm, item.action].concat(cmds), cbs)
|
||||||
}, can.page.AppendField(can, output, "item "+item.group+" "+item.name, item)))
|
}, can.page.AppendField(can, output, "item "+item.group+" "+item.name, item)))
|
||||||
})
|
})
|
||||||
|
|
||||||
},
|
},
|
||||||
size: function(event, can, value, cmd, output) {
|
size: function(event, can, value, cmd, output) {
|
||||||
},
|
},
|
||||||
|
@ -38,11 +38,15 @@ Volcanos("onchoice", {help: "组件菜单", list: []})
|
|||||||
Volcanos("ondetail", {help: "组件详情", list: []})
|
Volcanos("ondetail", {help: "组件详情", list: []})
|
||||||
Volcanos("onexport", {help: "导出数据", list: [],
|
Volcanos("onexport", {help: "导出数据", list: [],
|
||||||
title: function(event, can, value, cmd, output) {
|
title: function(event, can, value, cmd, output) {
|
||||||
can.user.Search(can, {
|
var args = {
|
||||||
river: can.Conf("river"),
|
river: can.Conf("river"),
|
||||||
storm: can.Conf("storm"),
|
storm: can.Conf("storm"),
|
||||||
layout: can.Conf("layout"),
|
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) {
|
link: function(event, can, value, cmd, output) {
|
||||||
can.ui[cmd].innerHTML = value
|
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];
|
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}
|
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;
|
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 {
|
fieldset div.code {
|
||||||
color:white;
|
color:white;
|
||||||
font-size:14px;
|
font-size:14px;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user