1
0
forked from x/volcanos
This commit is contained in:
shaoying 2020-10-03 10:13:33 +08:00
parent 691e582959
commit 66e4f86fe0
6 changed files with 102 additions and 81 deletions

View File

@ -51,11 +51,13 @@ var base = Volcanos("base", {help: "基础模块",
}
return size + "B"
},
Time: shy("时间格式化", function(t, fmt) {var now = t? new Date(t): new Date();
fmt = fmt || "%y-%m-%d %H:%M:%S";
Time: shy("时间格式化", function(t, fmt) { var now = t? new Date(t): new Date()
var list = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
fmt = fmt || "%y-%m-%d %H:%M:%S"
fmt = fmt.replace("%y", now.getFullYear())
fmt = fmt.replace("%m", this.Number(now.getMonth()+1, 2))
fmt = fmt.replace("%d", this.Number(now.getDate(), 2))
fmt = fmt.replace("%w", list[now.getDay()])
fmt = fmt.replace("%H", this.Number(now.getHours(), 2))
fmt = fmt.replace("%M", this.Number(now.getMinutes(), 2))
fmt = fmt.replace("%S", this.Number(now.getSeconds(), 2))

View File

@ -193,6 +193,8 @@ var page = Volcanos("page", {help: "网页模块",
var table = can.page.Append(can, target, "table");
var tr = can.page.Append(can, table, "tr", {dataset: {index: -1}});
can.core.List(list, function(key, index) {if (key.indexOf("_") == 0) {return}
key = can.Conf("feature.table.trans."+key) || {}[key] || key
can.page.Append(can, tr, "th", key.trim()).onclick = function(event) {
var dataset = event.target.dataset;
dataset["sort_asc"] = (dataset["sort_asc"] == "1") ? 0: 1;

View File

@ -97,6 +97,7 @@ var user = Volcanos("user", {help: "用户模块",
}
}
var msg = can.request(event)
var x = event.clientX, y = event.clientY; y += 10; if (x > 600) { x -= 160 }
var button; var ui = can.page.Append(can, document.body, [{view: ["input", "fieldset"], style: {left: x+"px", top: y+"px"}, list: [
{view: ["option", "table"], list: can.core.List(form, function(item) {
@ -111,7 +112,7 @@ var user = Volcanos("user", {help: "用户模块",
var pval = item.value.slice(1).split("=")[1]
}
target.type != "button" && (target.value = pval)
target.type != "button" && (target.value = pval || msg.Option(item.name))
can.page.Modify(can, target, {autocomplete: "off"})
can.require(["/plugin/input/"+pkey], function(can) {
can.onfigure._init(can, item, target, function(event) {

View File

@ -2,25 +2,29 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta,
},
})
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) {
function init() {
can.onexport._init(can, msg, list, function() {
can.user.title(can.user.Search(can, "pod"))
can.run(msg._event, ["search", "River.onaction._init"])
can.run(msg._event, ["search", "Footer.onaction._init"])
function init() { can.run({}, [], function(msg) {
can.onexport._init(can, msg, msg.append, function() {
can.run({}, ["search", "River.onaction._init"])
can.run({}, ["search", "Footer.onaction._init"])
}, target)
}
if (location.protocol == "file:") { return init() }
can.run({}, ["check"], function(msg) { if (msg.Result()) { return init() }
can.user.login(can, init)
}) }
location.protocol == "file:"? init(): can.run({}, ["check"], function(msg) {
msg.Result()? init(): can.user.login(can, init)
})
},
title: function(event, can, key) { var msg = can.request(event)
can.core.List(["pod"], function(key) { var value = can.user.Search(can, key)
value != undefined && msg.Option(key, can.user.Search(can, key))
title: function(event, can, key) {
var args = {}; can.core.List(["pod", "topic"], function(key) {
var value = can.user.Search(can, key); value && (args[key] = value)
})
var args = {}; can.core.List(msg.option, function(key) { args[key] = msg.Option(key) })
location.href = can.user.Share(can, args, true)
},
white: function(event, can, key) {
can.page.Modify(can, document.body, {className: key})
},
black: function(event, can, key) {
can.page.Modify(can, document.body, {className: key})
},
username: function(event, can, key) {
if (can.user.confirm("logout?")) {
can.user.Cookie(can, "sessid", "")
@ -28,23 +32,19 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
}
},
pack: function(event, can, key) {
var msg = can.request(event)
can.core.Item(Volcanos.meta.pack, function(key, msg) {
delete(msg._event), delete(msg._can)
})
var toast = can.user.toast(can, "打包中...", "webpack", 1000000)
var msg = can.request(event)
msg.Option("name", "demo")
msg.Option("content", JSON.stringify(Volcanos.meta.pack))
can.run(event, ["pack"], function(msg) {
toast.Close(), can.user.toast(can, "打包成功", "webpack")
})
},
white: function(event, can, key) {
can.page.Modify(can, document.body, {className: key})
},
black: function(event, can, key) {
can.page.Modify(can, document.body, {className: key})
},
River: function(event, can, key) {
can.page.Select(can, document.body, "fieldset.River", function(item) {
can.page.Modify(can, item, {style: {display: item.style.display == "none"? "block": "none"}})
@ -67,63 +67,59 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
},
})
Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg, list, cb, target) {
can.run(msg._event, [], function(msg) { can._output.innerHTML = ""
can.Conf("username", msg.Option("user.nick")||msg.Option("user.name"))
if (can.Conf("username").length > 10) {
can.Conf("username", can.Conf("username").slice(0, 10))
}
const USERNAME = "username"
can.Conf(USERNAME, msg.Option("user.nick")||msg.Option("user.name"))
can.Conf(USERNAME).length > 10 && can.Conf(USERNAME, can.Conf(USERNAME).slice(0, 10))
can._output.innerHTML = ""
can.user.isMobile || can.core.List(msg.result||["github.com/shylinux/contexts"], function(title) {
can.page.Append(can, can._output, [{view: ["title", "div", title],
click: function(event) { can.onaction["title"](event, can, "title") },
}])
})
can.core.List(can.Conf("state")||["time", "username"], function(item) {
can.page.Append(can, can._output, [{view: ["state "+item, "div", can.Conf(item)],
click: function(event) { can.onaction[item](event, can, item) },
}])
})
can.page.Select(can, can._output, "div.state.time", function(item) {
can.timer = can.Timer({interval: 1000, length: -1}, function(event) {
can.onexport.time(event, can, "time", item)
})
})
can.user.isMobile || (can.search = can.page.Append(can, can._output, [{view: "search", list: [{type: "input", data: {placeholder: "search"}, onkeydown: function(event) {
switch (event.key) {
case "Enter": can.run(event, ["search", "Search.onimport.input", "*", event.target.value]); break
}
}, }], }]).input)
var height = document.body.offsetHeight
var ui = can.page.Append(can, can._output, can.core.List(can.user.isMobile || can.user.isExtension || can.user.Search(can, "pod")? ["River"]: ["pack"], function(item) {
return {view: "item", list: [{type: "input", data: {name: item, type: "button", value: item.toLowerCase()},
onclick: function(event) {
var cb = can.onaction[item]; if (typeof cb == "function") {
return cb(event, can, item)
}
},
}]}
}));
if (can.user.isExtension) {
can.onaction.River({}, can)
} else if (can.user.isMobile) {
can.onaction.River({}, can)
can.onaction.Footer({}, can)
} else if (can.user.Search(can, "topic") == "white") {
} else if (can.user.Search(can, "pod")) {
can.onaction.River({}, can)
can.onaction.Footer({}, can)
}
typeof cb == "function" && cb()
// 标题
can.user.title(can.user.Search(can, "pod"))
can.user.isMobile || can.core.List(msg.result||["github.com/shylinux/contexts"], function(title) {
can.page.Append(can, can._output, [{view: ["title", "div", title],
click: function(event) { can.onaction["title"](event, can, "title") },
}])
})
// 状态
can.core.List(can.Conf("state")||["time", USERNAME], function(item) {
can.page.Append(can, can._output, [{view: ["state "+item, "div", can.Conf(item)],
click: function(event) { can.onaction[item](event, can, item) },
}])
})
can.page.Select(can, can._output, "div.state.time", function(item) {
can.timer = can.Timer({interval: 1000, length: -1}, function(event) {
can.onexport.time(event, can, "time", item)
})
})
// 搜索
can.user.isMobile || (can.search = can.page.Append(can, can._output, [{view: "search", list: [{type: "input", data: {placeholder: "search"}, onkeydown: function(event) {
switch (event.key) {
case "Enter": can.run(event, ["search", "Search.onimport.input", "*", event.target.value]); break
}
}, }], }]).input)
var ui = can.page.Append(can, can._output, can.core.List(can.user.isMobile || can.user.isExtension || can.user.Search(can, "pod")? ["River"]: ["pack"], function(item) {
return {view: "item", list: [{type: "input", data: {type: "button", name: item, value: item.toLowerCase()}, onclick: function(event) {
var cb = can.onaction[item]; typeof cb == "function" && cb(event, can, item)
}, }]}
}))
// 场景
if (can.user.isExtension) {
can.onaction.River({}, can)
} else if (can.user.isMobile) {
can.onaction.River({}, can)
can.onaction.Footer({}, can)
} else if (can.user.Search(can, "pod")) {
can.onaction.River({}, can)
can.onaction.Footer({}, can)
}
typeof cb == "function" && cb()
},
time: function(event, can, key, target) {
var list = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
target.innerHTML = list[(new Date()).getDay()]+" "+can.base.Time().split(" ")[1]
target.innerHTML = can.base.Time(null, "%w %H:%M:%S")
},
})

View File

@ -59,11 +59,19 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
]}
},
_table: function(can, value, key, index, line, array) {
return {type: "td", inner: value, click: function(event) {
var target = event.target; if (target.tagName == "INPUT" && target.type == "button") {
var msg = can.sup.request(event); msg.Option(can.Option()), msg.Option(line)
var cb = can.onaction[target.value]; return typeof cb == "function"? cb(event, can, target.value):
can.sup.onaction.input(event, can.sup, target.value, function(msg) {
return {type: "td", inner: value, click: function(event) { var target = event.target
if (target.tagName == "INPUT" && target.type == "button") { var msg = can.sup.request(event)
msg.Option(can.Option()); if (key == "value") {
can.core.List(array, function(item, index) {
msg.Option(item.key, item.value)
})
} else {
msg.Option(line)
}
var cb = can.onaction[target.name]; return typeof cb == "function"? cb(event, can, target.name):
can.sup.onaction.input(event, can.sup, target.name, function(msg) {
can.user.toast(can, msg.Result())
if (can.onimport._process(can, msg)) {
return typeof cb == "function" && cb(msg)
}
@ -94,6 +102,11 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
var process = msg.Option("_process") || can.Conf("feature")["_process"]
var cb = can.onimport[process]; return typeof cb == "function" && cb(can, msg)
},
_inner: function(can, msg) {
can.onappend.board(can, can.ui.display, "board", msg)
can.onimport._board(can, msg)
return true
},
_field: function(can, msg) {
msg.Table(function(value) {
value.inputs = can.base.Obj(msg.list&&msg.list[0]||"[]", [])

View File

@ -167,6 +167,13 @@ var Volcanos = shy("火山架", {cache: {}, index: 1, order: 1, pack: {}, libs:
if (value != undefined) {var old = conf[key], res;
conf[key] = conf_cb[key] && (res = conf_cb[key](value, old, key)) != undefined && res || value
}
if (conf[key] == undefined && key.indexOf(".") > 0) {
var p = conf, ls = key.split(".")
while (p && ls.length > 0) {
p = p[ls[0]], ls = ls.slice(1)
}
return p
}
return conf[key] || ""
}),
Cache: shy("缓存器", function(name, output, data) {