mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
add favor
This commit is contained in:
parent
877af916eb
commit
06729dd4dd
11
frame.js
11
frame.js
@ -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)
|
||||||
|
13
lib/misc.js
13
lib/misc.js
@ -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 {
|
||||||
|
@ -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 {
|
||||||
|
@ -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)
|
||||||
},
|
},
|
||||||
|
@ -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)
|
||||||
|
@ -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) {
|
||||||
|
@ -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 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user