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

add favor

This commit is contained in:
shaoying 2020-03-16 15:50:00 +08:00
parent 877af916eb
commit 06729dd4dd
8 changed files with 61 additions and 16 deletions

View File

@ -48,7 +48,6 @@ var can = Volcanos("chat", {
}), }),
Pane: shy("构造组件", function(can, name, meta, cb, field) { Pane: shy("构造组件", function(can, name, meta, cb, field) {
var river = "", storm = ""; var river = "", storm = "";
var pane = Volcanos(name, {_type: "local", _plugins: [], _local: {}, target: field, var pane = Volcanos(name, {_type: "local", _plugins: [], _local: {}, target: field,
option: field.querySelector("form.option"), option: field.querySelector("form.option"),
action: field.querySelector("div.action"), action: field.querySelector("div.action"),
@ -67,7 +66,9 @@ var can = Volcanos("chat", {
pane.page.Select(pane, pane.action, "input."+key, function(item) {item.value = value}) pane.page.Select(pane, pane.action, "input."+key, function(item) {item.value = value})
}, },
Action: function(key, value) { Action: function(key, value) {var cb = pane.onimport[key];
typeof cb == "function" && cb(event, pane, value, key, field);
return can.page.Select(can, pane.action, "input[name="+key+"],select."+key+",select[name="+key+"]", function(item) { return can.page.Select(can, pane.action, "input[name="+key+"],select."+key+",select[name="+key+"]", function(item) {
// 读写控件 // 读写控件
value != undefined && (item.value = value), value = item.value value != undefined && (item.value = value), value = item.value
@ -134,6 +135,8 @@ var can = Volcanos("chat", {
return pane return pane
}), }),
Plugin: shy("构造插件", function(can, name, meta, run, field, cb) { Plugin: shy("构造插件", function(can, name, meta, run, field, cb) {
meta && meta.class && can.page.ClassList.add(can, field, meta.class)
var option = field.querySelector("form.option"); var option = field.querySelector("form.option");
var action = field.querySelector("div.action"); var action = field.querySelector("div.action");
var output = field.querySelector("div.output"); var output = field.querySelector("div.output");
@ -314,7 +317,7 @@ var can = Volcanos("chat", {
cmd = cmd || can.Option(), can.page.Select(can, option, ".args", function(item) { cmd = cmd || can.Option(), can.page.Select(can, option, ".args", function(item) {
item.name && item.value && msg.Option(item.name, item.value) item.name && item.value && msg.Option(item.name, item.value)
}); });
(output[cmd[1]] || can[cmd[1]] || can.Run)(event, cmd, cb, silent); can.Run(event, cmd, cb, silent);
}, },
}, Config.libs.concat([(type.startsWith("/")? "": "plugin/")+type]), function(output) { }, Config.libs.concat([(type.startsWith("/")? "": "plugin/")+type]), function(output) {
status.innerHTML = "", output.onstatus && can.page.AppendStatus(output, status, output.onstatus.list) status.innerHTML = "", output.onstatus && can.page.AppendStatus(output, status, output.onstatus.list)
@ -328,7 +331,7 @@ var can = Volcanos("chat", {
can.user.Search(can, "sessid") && can.user.Cookie(can, "sessid", can.user.Search(can, "sessid")) && can.user.Search(can, "sessid", "") can.user.Search(can, "sessid") && can.user.Cookie(can, "sessid", can.user.Search(can, "sessid")) && can.user.Search(can, "sessid", "")
can[Config.main] = can.Page(can, Config.main, Config, function(chat) { can[Config.main] = can.Page(can, Config.main, Config, function(chat) {
chat.Import({}, can.user.Search(can, "you")||can.user.Search(can, "title")||Config.title, "title") chat.Import({}, can.user.Search(can, "pod")||can.user.Search(can, "you")||can.user.Search(can, "title")||Config.title, "title")
chat.Import({}, can.user.Search(can, "layout")||Config.layout.def, "layout") chat.Import({}, can.user.Search(can, "layout")||Config.layout.def, "layout")
chat.Import({}, "", "login") chat.Import({}, "", "login")
}, document.body, can.user.Search(can, "topic")||Config.topic) }, document.body, can.user.Search(can, "topic")||Config.topic)

View File

@ -54,16 +54,17 @@ Volcanos("misc", {help: "工具模块",
WSS: shy("请求后端", {order: 0}, function(can, url, args, cb, onopen, onerror, onclose) {var meta = arguments.callee.meta WSS: shy("请求后端", {order: 0}, function(can, url, args, cb, onopen, onerror, onclose) {var meta = arguments.callee.meta
can._socket = new WebSocket(url+"?"+can.base.Args(args)) can._socket = new WebSocket(url+"?"+can.base.Args(args))
var timer = can.Timer(30000, function() {can._socket.send("{}")})
can._socket.onclose = onclose || function() { can._socket.onclose = onclose || function() {
timer.stop = true, can.user.toast("wss redial")
can.Log("wss", "close"), delete(can._socket), setTimeout(function() { }, can._socket.onerror = onerror || function() {
can.user.toast("wss redial")
can._socket.close(), can.Log("wss", "close"), delete(can._socket), setTimeout(function() {
// 断线重连 // 断线重连
can.misc.WSS(can, url, args, cb, onerror, onclose, onopen) can.misc.WSS(can, url, args, cb, onerror, onclose, onopen)
}, 1000) }, 1000)
}, can._socket.onerror = onerror || function() { }, can._socket.onopen = onopen || function() {
can._socket.close()
}, can._socket.onopen = onopen }
can._socket.onmessage = function(event) {var order = ++meta.order can._socket.onmessage = function(event) {var order = ++meta.order
try { try {

View File

@ -3,7 +3,7 @@ body, fieldset {
background-color:black; background-color:black;
} }
fieldset.item { fieldset.item {
border:ridge 1px cyan; border:ridge 2px cyan;
margin:2px; margin:2px;
} }
fieldset.item:hover { fieldset.item:hover {

View File

@ -31,6 +31,9 @@ Volcanos("onimport", {help: "导入数据", list: [],
can.onimport.init(event, can, msg, cmd, can.output) can.onimport.init(event, can, msg, cmd, can.output)
}) })
}, },
pod: function(event, can, value, cmd, field) {
can.user.title(value)
},
you: function(event, can, value, cmd, field) { you: function(event, can, value, cmd, field) {
can.user.title(value) can.user.title(value)
}, },

View File

@ -8,7 +8,7 @@ Volcanos("onimport", {help: "导入数据", list: [],
})}]) })}])
can.timer = can.Timer({interval: 1000, length: -1}, function(event) { can.timer = can.Timer({interval: 1000, length: -1}, function(event) {
can.Import(event, can.base.Time().split(" ")[1], "time") can.onimport.time(event, can, can.base.Time().split(" ")[1], "time")
}) })
}, },
title: function(event, can, value, cmd, field) { title: function(event, can, value, cmd, field) {
@ -39,7 +39,7 @@ Volcanos("onexport", {help: "导出数据", list: [],
title: function(event, can, value, cmd, field) { title: function(event, can, value, cmd, field) {
var args = {river: can.Conf("river"), storm: can.Conf("storm"), layout: can.Conf("layout")} var args = {river: can.Conf("river"), storm: can.Conf("storm"), layout: can.Conf("layout")}
can.page.Select(can, field, "div.action>input", function(input) { can.page.Select(can, document.body, "fieldset.Action>div.action input", function(input) {
input.name && input.value && (args[input.name] = input.value) input.name && input.value && (args[input.name] = input.value)
}) })
can.user.Search(can, args) can.user.Search(can, args)

View File

@ -15,7 +15,22 @@ Volcanos("onimport", {help: "导入数据", list: [],
})) }))
}); });
if (msg.Option("render") != "" && msg.result) {
var story = can.page.Append(can, output, [{view: [msg.Option("render"), "div", msg.Result()]}]).first;
can.page.Select(can, story, ".story", function(item) {var data = item.dataset;
switch (item.tagName) {
case "FIELDSET":
can.Plugin(can, data.name, JSON.parse(data.meta||"{}"), function(event, cmds, cb, silent) {
can.run(event, ["action", "story", data.type, data.name, data.text].concat(cmds), cb, true)
}, item, function(sub) {
})
break
}
})
} else {
msg.result && can.page.Append(can, output, [{view: ["code", "div", can.page.Display(msg.Result())]}]).code; msg.result && can.page.Append(can, output, [{view: ["code", "div", can.page.Display(msg.Result())]}]).code;
}
return typeof cb == "function" && cb(msg); return typeof cb == "function" && cb(msg);
}, },
}) })
@ -36,7 +51,7 @@ Volcanos("onchoice", {help: "组件菜单", list: ["返回", "清空", "复制",
can.page.Download(can, list[0]+list[1], list[2]); can.page.Download(can, list[0]+list[1], list[2]);
}, },
}) })
Volcanos("ondetail", {help: "组件详情", list: ["选择", "编辑", "删除", "复制", "下载"], Volcanos("ondetail", {help: "组件详情", list: ["选择", "编辑", "删除", "复制", "下载", "收藏"],
"选择": "select", "选择": "select",
"删除": "delete", "删除": "delete",
"编辑": function(event, can, msg, index, key, cmd, td) { "编辑": function(event, can, msg, index, key, cmd, td) {
@ -61,6 +76,18 @@ Volcanos("ondetail", {help: "组件详情", list: ["选择", "编辑", "删除",
"下载": function(event, can, msg, index, key, cmd, target) { "下载": function(event, can, msg, index, key, cmd, target) {
can.page.Download(can, key, target.innerHTML); can.page.Download(can, key, target.innerHTML);
}, },
"收藏": function(event, can, msg, index, key, cmd, target) {
can.user.input(event, can, [
{_input: "text", name: "favor", value: can._last_favor||""},
{_input: "text", name: "type", value: msg.type && msg.type[index] || ""},
{_input: "text", name: "name", value: msg.name && msg.name[index] || ""},
{_input: "text", name: "text", value: msg.text && msg.text[index] || ""},
], function(event, cmd, meta, list) {can._last_favor = meta.favor;
can.run(event, ["action", "favor", meta.favor, meta.type, meta.name, meta.text], function(msg) {
can.user.toast(msg.Result()||"收藏成功");
}, true)
})
},
}) })
Volcanos("onexport", {help: "导出数据", list: [], Volcanos("onexport", {help: "导出数据", list: [],
Format: function(can, msg, name) { Format: function(can, msg, name) {

View File

@ -1,3 +1,13 @@
fieldset.story {
clear:both;
}
fieldset.float {
float:left;
clear:none;
}
fieldset.clear {
clear:both;
}
fieldset .story { fieldset .story {
border:solid 2px #f000; border:solid 2px #f000;
@ -7,7 +17,7 @@ fieldset .story:hover {
} }
fieldset fieldset.story { fieldset fieldset.story {
border:ridge 1px cyan; border:ridge 2px cyan;
} }
fieldset p.story { fieldset p.story {

View File

@ -5,6 +5,7 @@ html, body {
margin:0px; margin:0px;
} }
fieldset { fieldset {
border-width:2px;
padding:0px; padding:0px;
min-width:10px; min-width:10px;
overflow:auto; overflow:auto;