diff --git a/frame.js b/frame.js index 060894d1..740467ed 100644 --- a/frame.js +++ b/frame.js @@ -172,6 +172,7 @@ Volcanos(chat.ONAPPEND, { Update: function(event, cmds, cb, silent) { event = event||{}, sub.request(event)._caller(), event.metaKey && sub.request(event, {metaKey: ice.TRUE}) var msg = sub.request(event), list = can.core.Value(sub, "sub.db._checkbox"); can.core.Item(list, function(key, value) { msg.Option(key, value) }) sub.request(event, sub.Option()) + sub.request(event, sub.Conf("option")) if (event.isTrusted && cmds && cmds.length > 0 && cmds[0] == ctx.ACTION) { can.onengine.signal(can, "onrecord", can.request({}, {cmds: [sub.ConfSpace(), sub.ConfIndex()].concat(cmds||[])})) } can.onengine.signal(can, "onevent", can.request(event)) @@ -345,7 +346,8 @@ Volcanos(chat.ONAPPEND, { _legend: can._legend, _option: can._option, _action: action||can._action, _output: output, _status: status||can._status, Update: can.Update, Option: can.Option, Action: can.Action, Status: can.Status, db: {hash: [""], value: {}}, ui: {layout: function() {}}, }, display.split(",").concat([msg.Option(ice.MSG_DISPLAY_CSS)||can.Conf("display_css")||undefined, chat.PLUGIN_TABLE_JS]), function(sub) { sub.Conf(can.Conf()) - sub.db.hash = can.base.getValid(can.isCmdMode()? can.misc.SearchHash(can): [], can.onexport.storage(can, "hash"))||[] + // sub.db.hash = can.base.getValid(can.isCmdMode()? can.misc.SearchHash(can): [], can.onexport.storage(can, "hash"))||[] + sub.db.hash = can.base.getValid(can.isCmdMode()? can.misc.SearchHash(can): [])||[] var last = can.sub; last && can.core.CallFunc([last, "onaction.hidden"], {can: last}) sub.run = function(event, cmds, cb, silent) { var msg = sub.request(event)._caller() msg.RunAction(event, sub, cmds) || can.Update(event, cmds||can.Input(cmds, !silent), cb, silent) @@ -675,7 +677,9 @@ Volcanos(chat.ONAPPEND, { function run(event, cmd, arg) { can.misc.Event(event, can, function(msg) { can.run(request(event), [ctx.ACTION, cmd].concat(arg)) }) } function img(p) { return !msg.IsDetail()? can.page.Format(html.IMG, p, 48, 48): can.user.isMobile? can.page.Format(html.IMG, p, null, 320): can.page.Format(html.IMG, p, 320, null) } if ((key == mdb.ICON || can.base.endWith(key, "_icon")) && value) { _value = can.base.contains(value, ".ico", ".png", ".jpg", "jpeg")? img(can.misc.Resource(can, data[key], data.pod||data.space||data.nodename)): "" } - if ((key == mdb.ICONS || can.base.endWith(key, "_icons")) && value) { _value = img(can.misc.Resource(can, data[key])) } + if ((key == mdb.ICONS || can.base.endWith(key, "_icons")) && value) { + _value = can.base.contains(value, "bi ")? "": img(can.misc.Resource(can, data[key])) + } if ((key == aaa.AVATAR || can.base.endWith(key, "_avatar")) && value) { _value = img(can.misc.Resource(can, data[key])) } if ((key == aaa.BACKGROUND || can.base.endWith(key, "_background")) && value) { _value = img(can.misc.Resource(can, data[key])) } if (key == nfs.IMAGE && value) { _value = can.core.List(can.core.Split(data[key]), function(item) { return img(can.misc.ShareCache(can, item, data.space)) }).join("") } @@ -1327,7 +1331,8 @@ Volcanos(chat.ONMOTION, { can.onmotion.delay(can, function() { can._root.Action.onlayout._init(can) }) }) }, - slideOut: function(can, cb) { var margin = 100 + slideOut: function(can, cb, skip) { var margin = 100 + if (skip) { return cb() } var target = can._target if (can._output.innerHTML == "") { return can.page.Remove(can, target), cb && cb() } can.core.Timer({interval: 10, length: 30}, function(timer, interval, index, list) { @@ -1395,6 +1400,9 @@ Volcanos(chat.ONMOTION, { target.ontouchmove = function(event) { var msg = can.request(event) if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return } msg.Option(ice.MSG_HANDLE, ice.TRUE) spanY = event.touches[0].clientY-beginY, spanX = event.touches[0].clientX-beginX + if (can.page.tagis(event.target, "table.content")) { return } + if (can.page.tagis(event.target, "th")) { return } + if (can.page.tagis(event.target, "td")) { return } if (Math.abs(spanX) > Math.abs(spanY)) { can.onkeymap.prevent(event) } can.onaction.onslidemove(event, can, data = {beginX: beginX, beginY: beginY, spanX: spanX, spanY: spanY}, direction()) } diff --git a/index.css b/index.css index de94dd1b..02711498 100644 --- a/index.css +++ b/index.css @@ -2,7 +2,8 @@ body { --code-bg-color:black; --code-fg-color:silver; --disable-fg-color:gray; --notice-color:blue; --danger-color:red; - --shadow-color:var(--disable-fg-color); --border-color:var(--disable-fg-color); + // --shadow-color:var(--disable-fg-color); --border-color:var(--disable-fg-color); + --shadow-color:transparent; --border-color:var(--disable-fg-color); --notice-bg-color:var(--notice-color); --notice-fg-color:white; --danger-bg-color:var(--danger-color); --danger-fg-color:var(--notice-fg-color); --progress-bg-color:var(--danger-bg-color); @@ -137,7 +138,7 @@ table.content.action td:last-child input.danger:hover { background-color:var(--h table.content.detail td:first-child { word-break:keep-all; white-space:pre; } table.content.detail td:first-child { text-align:center; } table.content.detail td:first-child { position:sticky; left:0; } -table.content.option td.option { position:sticky; left:2px; z-index:1; box-shadow:var(--box-shadow); background-color:var(--th-bg-color); } +table.content.option td.option { position:sticky; left:2px; z-index:1; background-color:var(--th-bg-color); } table.content.option th.option { position:sticky; left:2px; z-index:2; } table.content.option.checkbox td.option { left:50px; } table.content.option.checkbox th.option { left:50px; } @@ -185,7 +186,7 @@ div.output.card>div.item>div.title>div.title { white-space:pre; overflow:auto } div.output.card>div.item>div.title>div.title>span { padding:0 var(--input-padding); white-space:pre; } div.output.card>div.item>div.title>div.title>span.exists { color:var(--notice-bg-color); } div.output.card>div.item>div.title>img { height:var(--header-height); width:var(--header-height); margin:0; float:left; } -div.output.card>div.item>div.title>img.jpg { padding:var(--input-padding); } +div.output.card>div.item>div.title>img.jpg { border-radius:10px; padding:var(--input-padding); } div.item.card:not(.hide) { position:relative; display:flex; align-items:center; padding:0; } div.item.card img { height:60px; width:60px; margin:5px; } div.item.card div.info { width:100%; } @@ -208,7 +209,7 @@ div.item.card div.action input[type=button].notice:not(:hover) { background-colo div.item.card div.action input[type=button]:last-child { margin-right:5px; } div.item.card div.output { padding:10px 0; display:flex; transition:left .2s; } body.width1 div.item.card div.output { width:100%; } -body.width1 div.item.card div.output { background-color:var(--output-bg-color); } +body.width1 div.item.card>div.output { background-color:var(--output-bg-color); } div.item.card.select div.title { font-weight:bold; } div.item.card.select div.output { transition:left .5s; } div.item img[src*=".ico"] { padding:3px; } @@ -633,7 +634,7 @@ div.float { box-shadow:var(--float-box-shadow); } // div.float { box-shadow:var(--float-box-shadow); border:var(--plugin-border); } div.float:hover { box-shadow:var(--notice-box-shadow); } fieldset.plugin { box-shadow:var(--plugin-box-shadow); border-radius:var(--plugin-radius); } -fieldset.story { box-shadow:var(--plugin-box-shadow); border-radius:var(--plugin-radius); } +// fieldset.story { box-shadow:var(--plugin-box-shadow); border-radius:var(--plugin-radius); } fieldset.float { box-shadow:var(--float-box-shadow); border:var(--plugin-border); border-radius:var(--plugin-radius); } fieldset.plugin:hover { box-shadow:var(--notice-box-shadow); } body.light fieldset.plugin>legend { box-shadow:var(--legend-box-shadow); margin-right:var(--legend-margin); } @@ -650,7 +651,7 @@ fieldset>div.action div.item:not(.state) { box-shadow:var(--input-box-shadow); } fieldset>div.action>div.tabs:not(.state).select { box-shadow:var(--legend-box-shadow); } fieldset>div.action>div.tabs:not(.state) span.exists { color:var(--notice-bg-color); } fieldset>div.action>div.cmds:not(.state) { box-shadow:var(--legend-box-shadow); } -div.output.card>div.item { box-shadow:var(--th-box-shadow); border:var(--plugin-border); border-radius:var(--plugin-radius); } +div.output.card>div.item { border:var(--plugin-border); border-radius:var(--plugin-radius); } div.output.card>div.item:hover { box-shadow:var(--notice-box-shadow); } fieldset>div.output.card>div.item>div.title { border-bottom:var(--box-border); } fieldset>div.output.card>div.item>div.action>input { box-shadow:var(--input-box-shadow); } @@ -658,12 +659,12 @@ fieldset>div.status { border-top:var(--status-border); } fieldset>div.status>legend.select { box-shadow:var(--legend-box-shadow); } fieldset>div.status>legend:hover { box-shadow:var(--legend-box-shadow); } fieldset.Action>div.toast>div.toast:hover { box-shadow:var(--notice-box-shadow); } -table.content th { box-shadow:var(--th-box-shadow); } +// table.content th { box-shadow:var(--th-box-shadow); } fieldset.input.key table.content th { box-shadow:none; } fieldset.input.key table.content.checkbox td:first-child { box-shadow:none; } -table.content.checkbox td:first-child { box-shadow:var(--th-box-shadow); } -table.content.action td:last-child { box-shadow:var(--th-box-shadow); } -table.content.detail tr.action td { box-shadow:var(--th-box-shadow); position:sticky; bottom:2px; } +// table.content.checkbox td:first-child { box-shadow:var(--th-box-shadow); } +// table.content.action td:last-child { box-shadow:var(--th-box-shadow); } +// table.content.detail tr.action td { box-shadow:var(--th-box-shadow); position:sticky; bottom:2px; } div.project:not(.toggle) { border-right:var(--box-border); overflow-x:hidden; } div.layout>div.profile:not(.toggle) { border-left:var(--box-border); } div.layout>div.display:not(.toggle) { border-top:var(--box-border); } @@ -695,7 +696,8 @@ textarea { font-family:var(--input-font-family); font-size:var(--body-font-size) table.content.full { width:100%; } table.content col.time { width:180px; } table.content col.action { width:var(--project); } -table.content.detail td:first-child { width:var(--input-width); box-shadow:var(--th-box-shadow); } +table.content.detail td:first-child { width:var(--input-width); } +// table.content.detail td:first-child { width:var(--input-width); box-shadow:var(--th-box-shadow); } body.mobile table.content.detail td:first-child { max-width:150px; word-break:break-all; white-space:break-spaces; } table.content.detail td { min-width:90px; } table.content.detail tr.option td { top:34px; z-index:2; } diff --git a/panel/header.js b/panel/header.js index 316f6786..64493166 100644 --- a/panel/header.js +++ b/panel/header.js @@ -212,8 +212,14 @@ Volcanos(chat.ONPLUGIN, { modify: shy(function(can, msg, arg) { if (arg[0] == mdb.VALUE) { can.misc.sessionStorage(can, msg.Option(mdb.NAME), arg[1]) } else { can.misc.sessionStorage(can, arg[1], msg.Option(mdb.VALUE)), can.misc.sessionStorage(can, msg.Option(mdb.NAME), "") } }), - }, [web.FILTER, ice.LIST, mdb.CREATE, mdb.PRUNES], function(can, msg, arg) { msg.Defer(function() { msg.PushAction(mdb.REMOVE).StatusTimeCount() }) - can.core.Item(can.misc.sessionStorage(can), function(name, value) { can.base.contains(name, arg[0]) && msg.Push(mdb.NAME, name).Push(mdb.VALUE, value) }) + }, [web.FILTER, ice.LIST, mdb.CREATE, mdb.PRUNES], function(can, msg, arg) { + // msg.Defer(function() { msg.PushAction(mdb.REMOVE).StatusTimeCount() }) + can.core.Item(can.misc.sessionStorage(can), function(name, value) { + if (name == "can.daemon") { return } + can.base.contains(name, arg[0]) && msg.Push(mdb.NAME, name).Push(mdb.VALUE, value) + msg.PushButton(mdb.REMOVE) + }) + msg.Sort(mdb.NAME) }), localStorage: shy("本地存储", { create: shy([mdb.NAME, mdb.VALUE], function(can, name, value) { can.misc.localStorage(can, name, value) }), @@ -221,8 +227,13 @@ Volcanos(chat.ONPLUGIN, { modify: shy(function(can, msg, arg) { if (arg[0] == mdb.VALUE) { can.misc.localStorage(can, msg.Option(mdb.NAME), arg[1]) } else { can.misc.localStorage(can, arg[1], msg.Option(mdb.VALUE)), can.misc.localStorage(can, msg.Option(mdb.NAME), "") } }), - }, [web.FILTER, ice.LIST, mdb.CREATE], function(can, msg, arg) { msg.Defer(function() { msg.PushAction(mdb.REMOVE).StatusTimeCount() }) - can.core.Item(can.misc.localStorage(can), function(name, value) { can.base.contains(name, arg[0]) && msg.Push(mdb.NAME, name).Push(mdb.VALUE, value) }) + }, [web.FILTER, ice.LIST, mdb.CREATE], function(can, msg, arg) { + // msg.Defer(function() { msg.PushAction(mdb.REMOVE).StatusTimeCount() }) + can.core.Item(can.misc.localStorage(can), function(name, value) { + can.base.contains(name, arg[0]) && msg.Push(mdb.NAME, name).Push(mdb.VALUE, value) + can.base.beginWith(name, "sessid_")? msg.PushButton(): msg.PushButton(mdb.REMOVE) + }) + msg.Sort(mdb.NAME) }), cookie: shy("会话参数", { create: shy([mdb.NAME, mdb.VALUE], function(can, name, value) { can.misc.Cookie(can, name, value) }), @@ -230,8 +241,14 @@ Volcanos(chat.ONPLUGIN, { modify: shy(function(can, msg, arg) { if (arg[0] == mdb.VALUE) { can.misc.Cookie(can, msg.Option(mdb.NAME), arg[1]) } else { can.misc.Cookie(can, arg[1], msg.Option(mdb.VALUE)), can.misc.Cookie(can, msg.Option(mdb.NAME), "") } }), - }, [web.FILTER, ice.LIST, mdb.CREATE], function(can, msg, arg) { msg.Defer(function() { msg.PushAction(mdb.REMOVE).StatusTimeCount() }) - can.core.Item(can.misc.Cookie(can), function(name, value) { can.base.contains(name, arg[0]) && msg.Push(mdb.NAME, name).Push(mdb.VALUE, value) }) + }, [web.FILTER, ice.LIST, mdb.CREATE], function(can, msg, arg) { + // msg.Defer(function() { msg.PushAction(mdb.REMOVE).StatusTimeCount() }) + can.core.Item(can.misc.Cookie(can), function(name, value) { + if (can.base.beginWith(name, "sessid_")) { return } + can.base.contains(name, arg[0]) && msg.Push(mdb.NAME, name).Push(mdb.VALUE, value) + can.base.beginWith(name, "sessid_")? msg.PushButton(): msg.PushButton(mdb.REMOVE) + }) + msg.Sort(mdb.NAME) }), language: shy("语言地区", {_init: function(can) { can.Option(aaa.LANGUAGE, can.user.info.language||ice.AUTO) }}, ["language:select=auto,zh,en", ctx.RUN], function(can, msg, arg) { can.onimport.language(can, arg[0]) }), avatar: shy("用户头像", function(can, sub, cb) { can.page.Append(can, sub._output, [{img: can.user.info.avatar, style: kit.Dict(html.MAX_HEIGHT, sub.ConfHeight(), html.MAX_WIDTH, sub.ConfWidth())}]) }), diff --git a/plugin/state.js b/plugin/state.js index db6199e2..c014f97b 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -359,7 +359,7 @@ Volcanos(chat.ONEXPORT, { return can.misc.localStorage(can, [can.ConfSpace()||can.misc.Search(can, ice.POD), can.ConfIndex(), key], value) }, hash: function(can, hash) { - if (can.user.isMobile) { return } + if (can.user.isWeiXin) { return } can.misc.SearchHash(can, hash) // can.onexport.storage(can, "hash", hash) return hash diff --git a/plugin/table.js b/plugin/table.js index cf557f1a..5a397a71 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -307,10 +307,11 @@ Volcanos(chat.ONIMPORT, { if (sub._stacks_current) { var plugin = sub._stacks_current[0], current = plugin.current||{} can.core.List(sub._stacks_current, function(p) { current = p.current||current, p.current && (plugin = p) }) if (plugin == sub._stacks_root) { var PLACE_UID = can.core.Item(can.Option())[0] + var place_uid = can.Option(PLACE_UID) == can.misc.Search(can, PLACE_UID)? "": can.Option(PLACE_UID) if (sub._stacks_current.length == 1) { - plugin.sub.onexport.hash(plugin.sub, can.Option(PLACE_UID)) + plugin.sub.onexport.hash(plugin.sub, place_uid) } else { - plugin.sub.onexport.hash(plugin.sub, can.Option(PLACE_UID), can.ConfIndex(), can.Option(UID)) + plugin.sub.onexport.hash(plugin.sub, place_uid, can.ConfIndex(), can.Option(UID)) } } sub._stacks_root.onexport.title(sub._stacks_root, current._name, can.ConfHelp(), @@ -360,13 +361,12 @@ Volcanos(chat.ONIMPORT, { if (!can._stacks_current) { var sup = can.sup; can._stacks_root = sup, sup._stacks = {} var key = [can.ConfSpace(), can.ConfIndex()].concat(can.base.trim(can.core.Item(can.Option(), function(key, value) { return value }))).join(",") can._stacks_current = sup._stacks[key] = [can.sup], sup._select = function() { can.onimport.myPluginSelect(can, sup, sup._target.parentNode) } - } var plugin = can._stacks_current[0], _action = plugin._action, _output = plugin._output; current = plugin.current||{} - // value.index.split(".").pop() == "credit" && (ACTION_HEIGHT = 0), value.index == "web.team.renzhengshouquan.profile" && (ACTION_HEIGHT = 0) - value.type = html.STORY, value.style = html.OUTPUT, value.height = can._stacks_root.ConfHeight()-ACTION_HEIGHT - // value.height = (can.user.isMobile? window.innerHeight: can.ConfHeight())-ACTION_HEIGHT + } var portal = can._stacks_root - can.core.List(can._stacks_current, function(sub) { if (can.base.endWith(sub.ConfIndex(), ".portal")) { portal = sub } }) + var plugin = can._stacks_current[0], _action = plugin._action, _output = plugin._output; current = plugin.current||{} + can.core.List(can._stacks_current, function(p) { current = p.current||current, p.current && (plugin = p, portal = p) }) if (value.space && can.base.endWith(value.index, ".portal")) { portal = can._root.Action } + value.type = html.STORY, value.style = html.OUTPUT, value.height = can._stacks_root.ConfHeight()-ACTION_HEIGHT can.onappend.plugin(portal, value, function(sub) { can.onimport.myField(can, sub), can.onmotion.slideIn(sub) var STREET_NAME = plugin.sub.Conf("_street_name"), PLACE_NAME = plugin.sub.Conf("_place_name") var run = sub.run; sub.run = function(event, cmds, cb) { @@ -376,21 +376,22 @@ Volcanos(chat.ONIMPORT, { command_uid: sub.Conf("command_uid"), portal_name: can.ConfHelp(), }, can.base.Obj(sub.Conf("field.option"))), cmds, cb) } - function goback(event, cb) { if (can._stacks_current.length == 1) { return cb && cb()} - if (sub._history.length > 1) { sub.request(event, {_toast: "reload"}); return sub.onimport.back(event, sub), cb && cb() } + function goback(event, cb) { if (can._stacks_current.length == 1) { return cb && cb() } + if (sub._history.length > 1 && sub.ConfIndex().split(".").pop() != "market") { + sub.request(event, {_toast: "reload"}); return sub.onimport.back(event, sub), cb && cb() + } var _last = can._stacks_current.pop() can.onmotion.slideOut(_last, function() { var last = can._stacks_current[can._stacks_current.length-1] - if (_last._index == "web.team.renzhengshouquan.profile") { - if (last._index.split(".").pop() == "credit") { - can._stacks_current.pop(), last = can._stacks_current[can._stacks_current.length-1] - } + if (_last._index == "web.team.renzhengshouquan.profile" && last._index.split(".").pop() == "credit") { + can._stacks_current.pop(), last = can._stacks_current[can._stacks_current.length-1] } last._select(), can.onmotion.delay(can, function() { can._root.Action.onlayout._init(can) }) last.request(event, {_toast: "reload"}) + if (last.ConfIndex().split(".").pop() == "market" && last.Option("uid")) { last.Option("uid", "") } if (last.ConfIndex().split(".").pop() == "message") { last._history.pop(), last.Option("uid", ""), last.Update(event) } - // can._stacks_current.length == 1 && last._output.innerHTML == "" && last.Update(event) if (can._stacks_current.length == 1) { - var hash = can.base.Obj(can.misc.SearchHash(can), can.db.hash) + // var hash = can.base.Obj(can.misc.SearchHash(can), can.db.hash) + var hash = can.misc.SearchHash(can)||[] if (hash.length > 1) { last._goback = true last.Option(can.core.Item(last.Option())[0], hash[0]) last.Option("index", ""), last.Option("uid", "") @@ -405,20 +406,16 @@ Volcanos(chat.ONIMPORT, { msg.IsDetail() === false && can.onappend.filter(can, _action, sub._output) if (can.base.endWith(sub.ConfIndex(), ".portal")) { return } msg.Option(ice.MSG_ACTION) && can.onappend._action(sub, msg.Option(ice.MSG_ACTION), _action, null, true) - can.user.isMobile || can.page.Append(can, _action, [{view: html.ITM, list: [ - {text: can._msg.Option("user_name")}, - ]}]) } - sub._select = function() { can.onimport.myOption(sub) + sub._select = function() { can.onimport.myOption(sub), can.user.trans(can, {goback: "返回"}) can.page.SelectChild(can, _output, "*", function(target) { can.onmotion.toggle(can, target, target == sub._target) }) var list = [ can.user.isMobile || can._msg.IsTech() && can.page.button(can, can.user.trans(can, sub.ConfIndex(), sub.ConfHelp()), function(event) { sub._legend.onclick(event) }), - can.page.button(can, can.user.trans(can, "goback", "返回"), function(event) { goback(event) }), - can.page.button(can, can.user.trans(can, "reload", "刷新"), function(event) { reload(event) }), + can.page.button(can, "goback", function(event) { goback(event) }), + can.page.button(can, "reload", function(event) { reload(event) }), ] - // var list = [can.page.button(can, can.user.trans(can, "goback", "返回"), function(event) { goback(event) })] can.page.Appends(can, _action, list) sub._msg && sub._msg.IsDetail() === false && can.onappend.filter(can, _action, sub._output) can.page.style(can, _action, html.DISPLAY, html.FLEX) @@ -427,39 +424,16 @@ Volcanos(chat.ONIMPORT, { can._stacks_current.push(sub), sub._select() }, _output) }, - myTabs: function(can, key, list, target) { var last = can.misc.Cookie(can, key) + myTabs: function(can, key, list, target) { var last = can.sup.Conf("option."+key)||"" if (!target && !can.ui.tabs) { can.ui = can.page.Append(can, can._output, [html.TABS, html.LIST]) } target = target||can.ui.tabs can.page.Append(can, target, can.core.List(list, function(value) { return {text: [can.user.trans(can, value, "", "value."+key), "", [value, value == "all" && last == "" || value == last? html.SELECT: ""]], onclick: function(event) { - can.onmotion.select(can, target, "*", event.target), can.misc.Cookie(can, key, value == "all"? "": value), can.Update() + can.onmotion.select(can, target, "*", event.currentTarget) + can.sup.Conf("option."+key, value == "all"? "": value) + can.Update() }} })) }, - myPlaceInfo: function(can, msg, action) { if (!can.user.isMobile) { return } - can.core.List(can._stacks_current.concat([]).reverse(), function(sub) { - if (sub._output == can._target) { can.onappend.style(can, "market_uid", can._fields) - can.page.Append(can, can._output, [{view: "place_info", _init: function(target) { - can.run({}, [ctx.ACTION, action], function(msg) { - can.onimport.itemcards(can, msg, function(value) { return [ - {view: html.TITLE, list: [value.user_name, can.onimport.titleAction(can, value)]}, - {view: html.STATUS, list: [value.city_name, value.street_name, value.place_name, value.service_name]}, - ] }, function(event, value) { - can.onimport.myStory(can, { - index: can.ConfIndex().split(".").slice(0, 3).concat("portal").join("."), args: [value.place_uid], - }) - }, target) - can.page.Select(can, target, html.INPUT_BUTTON, function(target) { - target.onclick = function(event) { - can.onimport.myStory(can, { - index: can.ConfIndex().split(".").slice(0, 3).concat("portal").join("."), args: [msg.Append("place_uid")], - }) - } - }) - }) - }}]) - } - }) - }, myViewTabs: function(can, status, msg, cb, cbs, target) { var trans = can.Conf("feature._trans.value."+status) var stat = {}; msg.Table(function(value) { stat[value[status]] = (stat[value[status]]||0)+1 }) @@ -470,12 +444,14 @@ Volcanos(chat.ONIMPORT, { msg.Table(function(value) { can.base.AddUniq(_list, value[status]), stat[value[status]] = (stat[value[status]]||0)+1 }) can.core.List(_list, function(status) { list.push({name: status, value: status+"("+stat[status]+")"}) }) } + var last = can.sup.Conf("option."+status) if (!msg.IsDetail() && msg.Length() > 3 && list.length > 1) { can.ui.tabs = can.page.Append(can, can._output, [{view: "tabs", list: can.core.List([ - {name: "all", value: "全部"+"("+msg.Length()+")", style: "select"}, + {name: "all", value: "全部"+"("+msg.Length()+")", style: last == undefined? "select": ""}, ].concat(list), function(value) { - return {view: [[html.ITEM].concat([value.name, value.style]), "", can.user.trans(can, value.name, value.value)], onclick: function(event) { var target = event.currentTarget + return {view: [[html.ITEM].concat([value.name, value.style, value.name == last? "select": ""]), "", can.user.trans(can, value.name, value.value)], onclick: function(event) { var target = event.currentTarget can.onmotion.select(can, target.parentNode, html.DIV_ITEM, target) + // can.sup.Conf("option."+status, value.name == "all"? "": value.name) can.page.Select(can, can._output, "div.item.card", function(target) { can.onmotion.hidden(can, target, value.name == "all" || can.page.ClassList.has(can, target, value.name)) }) @@ -552,34 +528,47 @@ Volcanos(chat.ONIMPORT, { can.onmotion.select(can, event.currentTarget.parentNode, html.DIV_ITEM, event.currentTarget) }} }, - uidView: function(can, value) { return value.uid.slice(0, 6) }, - metaView: function(can, value) { - return {view: html.STATUS, list: [can.onimport.uidView(can, value), can.onimport.timeView(can, value), value.user_name]} + myPlaceInfo: function(can, msg, action) { if (!can.user.isMobile) { return } + can.core.List(can._stacks_current.concat([]).reverse(), function(sub) { + if (sub._output == can._target) { can.onappend.style(can, "market_uid", can._fields) + can.page.Append(can, can._output, [{view: "place_info", _init: function(target) { + can.run({}, [ctx.ACTION, action], function(msg) { + can.onimport.itemcards(can, msg, function(value) { return [ + {view: html.TITLE, list: [value.user_name, can.onimport.titleAction(can, value)]}, + {view: html.STATUS, list: [value.city_name, value.street_name, value.place_name, value.service_name]}, + ] }, function(event, value) { + can.onimport.myStory(can, { + index: can.ConfIndex().split(".").slice(0, 3).concat("portal").join("."), args: [value.place_uid], + }) + }, target) + can.page.Select(can, target, html.INPUT_BUTTON, function(target) { + target.onclick = function(event) { + can.onimport.myStory(can, { + index: can.ConfIndex().split(".").slice(0, 3).concat("portal").join("."), args: [msg.Append("place_uid")], + }) + } + }) + }) + }}]) + } + }) }, - shipView: function(can, value) { - return {view: html.STATUS, list: [value.city_name, value.city_name? "|": "", value.street_name, value.street_name? "|": "", value.service_name.replace(" ", " | ")]} + otherList: function(can, msg, action) { if (!msg.IsDetail()) { return } typeof action == "string" && (action = [action]) + can.core.Next(action, function(action, next) { + can.run(can.request({}, {uid: msg.Append(UID)}, msg.TableDetail()), action, function(msg) { if (msg.Length() == 0) { return next() } + can.page.Append(can, can._output, [{view: [[html.ITEM, html.TITLE, action], "", can.user.trans(can, action)]}]) + can.onappend.plugin(can, {index: can.ConfIndex()}, function(sub) { can.onimport.myField(can, sub), can.onappend.style(sub, "otherList") + sub.run = function(event, cmds, cb) { if (!cmds || cmds.length == 0) { cb(msg) } else { can.run(event, cmds, cb) } }, next() + sub.onexport.output = function(_sub, msg) { + _sub.onaction.carddetail = function(event, _sub, value) { + can.onimport.myStory(can, {index: msg.Option("_other_cmd"), args: [value.place_uid||msg.Option("place_uid"), value.uid]}) + return true + } + } + }) + }) + }) }, - spaceView: function(can, value) { - return {view: "space"} - }, - timeView: function(can, value, key) { - if (key) { return {text: [can.user.trans(can, key, null, html.INPUT)+": "+can.base.TimeTrim(value[key]), "", mdb.TIME]} } - return {text: [can.base.TimeTrim(value[key]||value.browse_time||value.updated_at||value.created_at||value.time), "", mdb.TIME]} - }, - unitView: function(can, value, key, unit) { if (!value[key] || value[key] == "0") { return } - return {text: [[can.user.trans(can, key, null, html.INPUT)+":", value[key]].concat(unit? [unit]: []).join(" "), "", key]} - }, - textView: function(can, value, key, type) { - key || can.core.Item(value, function(k, v) { if (k == "status" || can.base.endWith(k, "_status")) { key = k } }); if (!type) { type = key.split("_").pop() } - return value[key] && !can.base.isIn(value[key], "finish", "done") && {text: [can.user.transValue(can, value, key), "", [type, value[key], can.Conf("_trans.value."+key+".style."+value[key])||""]]} - }, - authView: function(can, value) { return can.base.isIn(value.auth_status, "issued", "2") && {view: [aaa.AUTH, html.SPAN], list: [{icon: "bi bi-patch-check-fill", style: {color: "var(--notice-bg-color)"}}]} }, - moneyView: function(can, value, key) { return {text: ["¥ "+(value[key]||value.price||value.amount)+" 元", "", "price"]} }, - beginTime: function(can, value) { - return (value.process_time||value.begin_time).split(" ")[0]+" ~ "+(value.finish_time||value.end_time).split(" ")[0] - }, - typeStyle: function(can, value, key) { return can.Conf("_trans.value."+key+".style."+value[key])||"" }, - roleStyle: function(can, value, key) { return can.Conf("_trans.value."+key+".style."+value[key])||"" }, shareTitle: function(can, msg, icons, title, content) { if (msg.IsDetail()) { var value = msg.TableDetail() msg.Option("_share_icons", msg.Option("_share_icons")||value[icons]||value.icons||value.avatar) msg.Option("_share_title", msg.Option("_share_title")||(value[title]||value.title||value.name||value.uid.slice(0, 6))) @@ -599,6 +588,38 @@ Volcanos(chat.ONIMPORT, { }) }} }, + uidView: function(can, value) { return value.uid.slice(0, 6) }, + metaView: function(can, value) { + return {view: html.STATUS, list: [can.onimport.uidView(can, value), can.onimport.timeView(can, value), value.user_name]} + }, + shipView: function(can, value) { + return {view: html.STATUS, list: [value.city_name, value.city_name? "|": "", + value.street_name, value.street_name? "|": "", + value.place_name, value.place_name? "|": "", + value.service_name.replace(" ", " | ")]} + }, + spaceView: function(can, value) { return {view: "space"} }, + imageView: function(can, value) { + return can.base.contains(value.icons, "bi ")? {view: [value.icons, "i"]}: {img: can.misc.ResourceIcons(can, value.icons)} + }, + timeView: function(can, value, key) { + if (key) { return {text: [can.user.trans(can, key, null, html.INPUT)+": "+can.base.TimeTrim(value[key]), "", mdb.TIME]} } + return {text: [can.base.TimeTrim(value[key]||value.browse_time||value.updated_at||value.created_at||value.time), "", mdb.TIME]} + }, + unitView: function(can, value, key, unit) { if (!value[key] || value[key] == "0") { return } + return {text: [[can.user.trans(can, key, null, html.INPUT)+":", value[key]].concat(unit? [unit]: []).join(" "), "", key]} + }, + typeStyle: function(can, value, key) { return can.Conf("_trans.value."+key+".style."+value[key])||"" }, + roleStyle: function(can, value, key) { return can.Conf("_trans.value."+key+".style."+value[key])||"" }, + authView: function(can, value) { return can.base.isIn(value.auth_status, "issued", "2") && {view: [aaa.AUTH, html.SPAN], list: [{icon: "bi bi-patch-check-fill", style: {color: "var(--notice-bg-color)"}}]} }, + textView: function(can, value, key, type) { + key || can.core.Item(value, function(k, v) { if (k == "status" || can.base.endWith(k, "_status")) { key = k } }); if (!type) { type = key.split("_").pop() } + return value[key] && !can.base.isIn(value[key], "finish", "done") && {text: [can.user.transValue(can, value, key), "", [type, value[key], can.Conf("_trans.value."+key+".style."+value[key])||""]]} + }, + beginTime: function(can, value) { + return (value.process_time||value.begin_time).split(" ")[0]+" ~ "+(value.finish_time||value.end_time).split(" ")[0] + }, + moneyView: function(can, value, key) { return {text: ["¥ "+(value[key]||value.price||value.amount)+" 元", "", "price"]} }, }) Volcanos(chat.ONLAYOUT, { _init: function(can, height, width) { can.core.CallFunc([can.onimport, html.LAYOUT], {can: can, height: height, width: width}) }, @@ -611,21 +632,21 @@ Volcanos(chat.ONLAYOUT, { cmd: function(can, height, width) { can.onlayout._init(can, height, width) }, }) Volcanos(chat.ONEXPORT, { - title: function(can, title) { can.sup.onexport.title.apply(can.sup.onexport, [can.sup].concat(can.core.List(arguments).slice(1))) }, action_value: function(can, key, def) { var value = can.Action(key); return can.base.isIn(value, ice.AUTO, key, undefined)? def: value }, - tabs: function(can) {}, - tool: function(can) { can.misc.sessionStorage(can, [can.ConfIndex(), "tool"], JSON.stringify(can.page.Select(can, can._status, html.LEGEND, function(target) { return target._meta }))) }, - hash: function(can, hash) { - hash = typeof hash == code.STRING? hash.split(":").concat(can.core.List(arguments).slice(2)||[]): hash || can.core.Item(can.Option(), function(key, value) { return value||"" }) - return can.sup.onexport.hash(can.sup, hash) - }, - session: function(can, key, value) { return can.sup && can.sup.onexport.session(can.sup, key, value) }, - storage: function(can, key, value) { return can.sup.onexport.storage(can.sup, key, value) }, table: function(can) { var msg = can._msg; if (msg.Length() == 0) { return } var res = [msg.append && msg.append.join(mdb.FS)] msg.Table(function(line, index, array) { res.push(can.core.Item(line, function(key, value) { return value }).join(ice.FS)) }) return res.join(lex.NL) }, board: function(can) { var msg = can._msg; return msg.Result() }, + tabs: function(can) {}, + tool: function(can) { can.onexport.session(can, "tool", JSON.stringify(can.page.Select(can, can._status, html.LEGEND, function(target) { return target._meta }))) }, + hash: function(can, hash) { + hash = typeof hash == code.STRING? hash.split(":").concat(can.core.List(arguments).slice(2)||[]): hash || can.core.Item(can.Option(), function(key, value) { return value||"" }) + return can.sup.onexport.hash(can.sup, hash) + }, + title: function(can, title) { can.sup.onexport.title.apply(can.sup.onexport, [can.sup].concat(can.core.List(arguments).slice(1))) }, + session: function(can, key, value) { return can.sup && can.sup.onexport.session(can.sup, key, value) }, + storage: function(can, key, value) { return can.sup && can.sup.onexport.storage(can.sup, key, value) }, }) Volcanos(chat.ONACTION, { onkeydown: function(event, can) {