From 06729dd4dd94496c5da2c6ac42482a2cd605a889 Mon Sep 17 00:00:00 2001 From: shaoying Date: Mon, 16 Mar 2020 15:50:00 +0800 Subject: [PATCH] add favor --- frame.js | 11 +++++++---- lib/misc.js | 13 +++++++------ page/black.css | 2 +- pane/Action.js | 3 +++ pane/Header.js | 4 ++-- plugin/table.js | 31 +++++++++++++++++++++++++++++-- plugin/wiki/word.css | 12 +++++++++++- style.css | 1 + 8 files changed, 61 insertions(+), 16 deletions(-) diff --git a/frame.js b/frame.js index ea315598..ef7e06c8 100644 --- a/frame.js +++ b/frame.js @@ -48,7 +48,6 @@ var can = Volcanos("chat", { }), Pane: shy("构造组件", function(can, name, meta, cb, field) { var river = "", storm = ""; - var pane = Volcanos(name, {_type: "local", _plugins: [], _local: {}, target: field, option: field.querySelector("form.option"), 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}) }, - 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) { // 读写控件 value != undefined && (item.value = value), value = item.value @@ -134,6 +135,8 @@ var can = Volcanos("chat", { return pane }), 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 action = field.querySelector("div.action"); 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) { 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) { 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[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({}, "", "login") }, document.body, can.user.Search(can, "topic")||Config.topic) diff --git a/lib/misc.js b/lib/misc.js index 5f8ddfc1..02bd7456 100644 --- a/lib/misc.js +++ b/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 can._socket = new WebSocket(url+"?"+can.base.Args(args)) - var timer = can.Timer(30000, function() {can._socket.send("{}")}) 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) }, 1000) - }, can._socket.onerror = onerror || function() { - can._socket.close() - }, can._socket.onopen = onopen + }, can._socket.onopen = onopen || function() { + + } can._socket.onmessage = function(event) {var order = ++meta.order try { diff --git a/page/black.css b/page/black.css index b7bd995d..7ffda2a6 100644 --- a/page/black.css +++ b/page/black.css @@ -3,7 +3,7 @@ body, fieldset { background-color:black; } fieldset.item { - border:ridge 1px cyan; + border:ridge 2px cyan; margin:2px; } fieldset.item:hover { diff --git a/pane/Action.js b/pane/Action.js index d9643d0e..316daf68 100644 --- a/pane/Action.js +++ b/pane/Action.js @@ -31,6 +31,9 @@ Volcanos("onimport", {help: "导入数据", list: [], 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) { can.user.title(value) }, diff --git a/pane/Header.js b/pane/Header.js index ee3e418b..c49b282c 100644 --- a/pane/Header.js +++ b/pane/Header.js @@ -8,7 +8,7 @@ Volcanos("onimport", {help: "导入数据", list: [], })}]) 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) { @@ -39,7 +39,7 @@ Volcanos("onexport", {help: "导出数据", list: [], title: function(event, can, value, cmd, field) { 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) }) can.user.Search(can, args) diff --git a/plugin/table.js b/plugin/table.js index 52bca0f6..99317d28 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -15,7 +15,22 @@ Volcanos("onimport", {help: "导入数据", list: [], })) }); - msg.result && can.page.Append(can, output, [{view: ["code", "div", can.page.Display(msg.Result())]}]).code; + 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; + } return typeof cb == "function" && cb(msg); }, }) @@ -36,7 +51,7 @@ Volcanos("onchoice", {help: "组件菜单", list: ["返回", "清空", "复制", can.page.Download(can, list[0]+list[1], list[2]); }, }) -Volcanos("ondetail", {help: "组件详情", list: ["选择", "编辑", "删除", "复制", "下载"], +Volcanos("ondetail", {help: "组件详情", list: ["选择", "编辑", "删除", "复制", "下载", "收藏"], "选择": "select", "删除": "delete", "编辑": function(event, can, msg, index, key, cmd, td) { @@ -61,6 +76,18 @@ Volcanos("ondetail", {help: "组件详情", list: ["选择", "编辑", "删除", "下载": function(event, can, msg, index, key, cmd, target) { 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: [], Format: function(can, msg, name) { diff --git a/plugin/wiki/word.css b/plugin/wiki/word.css index 3d075db4..72326118 100644 --- a/plugin/wiki/word.css +++ b/plugin/wiki/word.css @@ -1,3 +1,13 @@ +fieldset.story { + clear:both; +} +fieldset.float { + float:left; + clear:none; +} +fieldset.clear { + clear:both; +} fieldset .story { border:solid 2px #f000; @@ -7,7 +17,7 @@ fieldset .story:hover { } fieldset fieldset.story { - border:ridge 1px cyan; + border:ridge 2px cyan; } fieldset p.story { diff --git a/style.css b/style.css index a76a7154..74d31acd 100644 --- a/style.css +++ b/style.css @@ -5,6 +5,7 @@ html, body { margin:0px; } fieldset { + border-width:2px; padding:0px; min-width:10px; overflow:auto;