diff --git a/frame.js b/frame.js index 13ff8555..38dafcd3 100644 --- a/frame.js +++ b/frame.js @@ -24,7 +24,8 @@ Volcanos("onaction", { _init: function(can, meta, list, cb, target) { }) } can.onengine && getRiver(can.onengine.river) - var pane = can[meta.main.name], msg = can.request(can._event); + // 应用入口 + var pane = can[meta.main.name], msg = can.request({}); pane.onaction._init(pane, msg, msg.option||[], cb, target); }) }, target) }); @@ -316,14 +317,14 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { var ui = can.page.Appends(can, can._toast, [ {text: [meta.title||"", "div", "title"]}, {text: [meta.text||"执行成功", "div", "content"]}, - meta.button, + {view: ["button"], list: meta.button}, {text: ["", "div", "duration"]}, ]) var width = meta.width||200, height = meta.height||100 var pos = {position: "absolute", display: "block", width: width+"px", - top: document.body.clientHeight/2, + top: document.body.clientHeight/2-height/2, left: document.body.clientWidth/2-width/2, }; pos.left += "px"; pos.top += "px"; can.page.Modify(can, can._toast, {style: pos}) @@ -337,13 +338,14 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { }) return ui }, - share: function(can, meta) { - return - can._share = can._share || can.page.Append(can, can._target, [{view: "share", onmouseleave: function(event) { - can.page.Modify(can, can._carte, {style: {display: "none"}}) - }}]).last - - can.page.Appends(can, can._share, [{view: ["title", "div", ]},]) + share: function(can, msg) { + can.run(msg._event, ["share"], function(msg) { + var src = can.user.Share(can, {path: "/share/"+msg.Result()}, true); + var ui = can.onappend.toast(can, {title: can.page.Format("a", src, msg.Result()), text: can.page.Format("img", src+"/share"), + width: 300, height: 300, duration: 100000, button: [{button: ["确定", function(event) { + can.page.Modify(can, can._toast, {style: {display: "none"}}) + }]}] }); + }) } }, [], function(can) {}) Volcanos("onlayout", { _init: function(can, meta, list, cb, target) { diff --git a/lib/page.js b/lib/page.js index 12915030..5c0b07bb 100644 --- a/lib/page.js +++ b/lib/page.js @@ -346,6 +346,14 @@ Volcanos("page", {help: "网页模块", }, Upload: function(can, file, cb, cbs) { }, + Format: function(type) { + switch (type) { + case "a": + return ""+(arguments[2]||arguments[1])+"" + case "img": + return "" + } + }, DelText: function(target, start, count) { target.value = target.value.substring(0, start)+target.value.substring(start+(count||target.value.length), target.value.length) diff --git a/lib/user.js b/lib/user.js index 5c65e2b6..cc9c1e91 100644 --- a/lib/user.js +++ b/lib/user.js @@ -44,9 +44,9 @@ Volcanos("user", {help: "用户模块", Share: shy("共享链接", function(can, objs, clear) {var obj = objs || {}; var path = location.pathname; obj.path && (path = obj.path, delete(obj.path)) !clear && can.core.Item(can.user.Search(), function(key, value) {obj[key] || (obj[key] = value)}); - return location.origin+path+(objs? "?"+can.core.Item(obj, function(key, value) { + return can.core.List([location.origin+path, can.core.Item(obj, function(key, value) { return can.core.List(value, function(value) {return key+"="+encodeURIComponent(value)}).join("&"); - }).join("&"): ""); + }).join("&")], function(item) { return item? item: undefined }).join("?") }), Search: shy("请求参数", function(can, key, value) {var args = {} location.search && location.search.slice(1).split("&").forEach(function(item) {var x = item.split("=") diff --git a/pane/Action.js b/pane/Action.js index 876b4c22..b5585ac9 100644 --- a/pane/Action.js +++ b/pane/Action.js @@ -1,5 +1,5 @@ Volcanos("onimport", {help: "导入数据", list: [], - _init: function(can, meta, list, cb, target) {}, + _init: function(can, meta, list, cb, target) { }, }) Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) { @@ -8,28 +8,25 @@ Volcanos("onaction", {help: "交互操作", list: [], }) Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg, list, cb, target) { var key = "action"; - can.run(msg._event, ["search", "Storm.onaction._init"], function(msg) { - can.Cache(can.Conf("river")+"."+can.Conf("storm"), can._output, can._output.scrollTop+1); - var river = can.Conf("river", msg.Option("river")), storm = can.Conf("storm", msg.Option("storm")); - var position = can.Conf(key, msg.Option(key, can.Cache(river+"."+storm, can._output))); - if (position) { can._output.scrollTo(0, position-1); typeof cb == "function" && cb(msg); return } + can.Cache(can.Conf("river")+"."+can.Conf("storm"), can._output, can._output.scrollTop+1); + var river = can.Conf("river", msg.Option("river")), storm = can.Conf("storm", msg.Option("storm")); + var position = can.Conf(key, msg.Option(key, can.Cache(river+"."+storm, can._output))); + if (position) { can._output.scrollTo(0, position-1); return } - var pod = can.user.Search(can, "pod"); msg = can.request({}, {}); - can.run(msg._event, [river, storm], function(msg) { can._output.innerHTML = ""; msg.Table(function(value, index, array) { - // 添加插件 - can.onappend._init(can, value, Config.libs.concat(["plugin/state.js"]), function(sub) { - sub.run = function(event, cmds, cb, silent) { - // 插件回调 - var msg = can.request(event); pod && msg.Option("pod", pod); - can.run(event, [river, storm, index].concat(cmds), function(msg) { - can.onappend.toast(can, "执行成功", value.name, 2000); - typeof cb == "function" && cb(msg) - }, silent); - can.run(msg._event, ["search", "Footer.onaction.cmd"]) - } - }, can._output); - }); typeof cb == "function" && cb(msg); }) - }); + msg.Clear("option"), can.run(msg._event, [river, storm], function(sup) { can._output.innerHTML = ""; sup.Table(function(value, index, array) { + value.inputs = can.base.Obj(value.inputs, []) + value.inputs.length == 0 && (value.inputs = [{type: "text"}, {type: "button", name: "查看"}]) + can.onappend._init(can, value, Config.libs.concat(["plugin/state.js"]), function(sub) { + sub.run = function(event, cmds, cb, silent) { var msg = can.request(event, {_msg: sup}); + // 插件回调 + can.run(event, [river, storm, index].concat(cmds), function(msg) { + can.run(msg._event, ["search", "Footer.onaction.ncmd"]); + can.onappend.toast(can, "执行成功", value.name, 2000); + typeof cb == "function" && cb(msg) + }, silent); + } + }, can._output); + }) }) }, }) diff --git a/pane/Footer.css b/pane/Footer.css index 307e3b3f..e4f82b52 100644 --- a/pane/Footer.css +++ b/pane/Footer.css @@ -10,10 +10,6 @@ fieldset.Footer>div.output div.title { float:left; } fieldset.Footer>div.output div.state { - float:right; -} -fieldset.Footer>div.output div.state>div { margin-right:5px; float:right; } - diff --git a/pane/Footer.js b/pane/Footer.js index 871a89a0..fb77b0d1 100644 --- a/pane/Footer.js +++ b/pane/Footer.js @@ -1,12 +1,11 @@ Volcanos("onimport", {help: "导入数据", list: [], - _init: function(can, meta, list, cb, target) { - }, + _init: function(can, meta, list, cb, target) { }, }) Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) { can.onexport._init(can, msg, list, cb, target) }, - cmd: function(can, msg, list, cb, target) { + ncmd: function(can, msg, list, cb, target) { can.page.Select(can, can._target, "span.ncmd", function(item) { item.innerHTML = can.Conf("ncmd", parseInt(can.Conf("ncmd")||"0")+1+"")+"" }) @@ -14,16 +13,17 @@ Volcanos("onaction", {help: "交互数据", list: [], }) Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg, list, cb, target) { - msg = can.request({}, {}), can.run(msg._event, [], function(msg) { can._output.innerHTML = ""; + can.run({}, [], function(msg) { can._output.innerHTML = ""; can.core.List(msg.result, function(title) { can.page.Append(can, can._output, [{view: ["title", "div", title]}]) }) - can.ui = can.page.Append(can, can._output, [{view: "state", list: can.core.List(can.Conf("state"), function(item) { - return {view: "item", list: [{text: item}, {text: ": "}, {text: [can.Conf(item)||"", "span", item]}], click: function(event) { - can.onaction[item](event, can, item); - }}; - }) }]) + can.core.List(can.Conf("state"), function(item) { + can.page.Append(can, can._output, [{view: ["state "+item, "div", can.Conf(item)], + list: [{text: item}, {text: ": "}, {text: [can.Conf(item)||"", "span", item]}], + click: function(event) { can.onaction[item](event, can, item) }, + }]) + }) }) }, }) diff --git a/pane/Header.css b/pane/Header.css index 415e44d8..6bd5933e 100644 --- a/pane/Header.css +++ b/pane/Header.css @@ -16,14 +16,11 @@ fieldset.Header>div.output>div.title:hover { } fieldset.Header>div.output>div.state { - float:right; -} -fieldset.Header>div.output>div.state>div { cursor:pointer; margin-right:5px; float:right; } -fieldset.Header>div.output>div.state>div:hover { +fieldset.Header>div.output>div.state:hover { background-color:red; } diff --git a/pane/Header.js b/pane/Header.js index 87a36b8c..8d07cffb 100644 --- a/pane/Header.js +++ b/pane/Header.js @@ -1,14 +1,13 @@ Volcanos("onimport", {help: "导入数据", list: [], - _init: function(can, meta, list, cb, target) { - }, + _init: function(can, meta, list, cb, target) { }, }) Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) { - can.onexport._init(can, msg, list, cb, target) - can.run(msg._event, ["search", "River.onaction._init"], function(msg) { - }) - can.run(msg._event, ["search", "Footer.onaction._init"], function(msg) { - }) + can.onexport._init(can, msg, list, function(msg) { + can.user.title(can.user.Search(can, "pod")); + can.run(msg._event, ["search", "River.onaction._init"]); + can.run(msg._event, ["search", "Footer.onaction._init"]); + }, target) }, title: function(event, can, key) { can.run(event, ["search", "Action.onaction._init"], function(msg) { @@ -20,29 +19,32 @@ Volcanos("onaction", {help: "交互数据", list: [], }, }) Volcanos("onexport", {help: "导出数据", list: [], - _init: function(can, msg, list, cb, target) { can._output.innerHTML = ""; - msg = can.request({}, {}) - can.run(msg._event, [], function(msg) { - // if (Volcanos.meta.follow["debug"]) { debugger } + _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")) 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")}, + click: function(event) { can.onaction["title"](event, can, "title") }, }]) }) - console.log(can._root, can._name, "show", can.Conf("state")) - can.ui = can.page.Append(can, can._output, [{view: "state", list: can.core.List(can.Conf("state"), function(item) { - return {name: item, view: ["item", "div", can.Conf(item)||""], click: function(event) {can.onaction[item](event, can, item)}}; - })}]) - - can.timer = can.Timer({interval: 1000, length: -1}, function(event) { - can.onexport.time(event, can, "time") + 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) + }) + }) + + typeof cb == "function" && cb(can.request({}, {_msg: msg})) }) }, - time: function(event, can, key) { - can.ui[key].innerHTML = can.base.Time().split(" ")[1] + time: function(event, can, key, target) { + target.innerHTML = can.base.Time().split(" ")[1] }, }) diff --git a/pane/River.js b/pane/River.js index 30ffca20..9f3acda0 100644 --- a/pane/River.js +++ b/pane/River.js @@ -1,5 +1,5 @@ Volcanos("onimport", {help: "导入数据", list: [], - _init: function(can, meta, list, cb, target) {}, + _init: function(can, meta, list, cb, target) { }, }) Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) { @@ -8,19 +8,18 @@ Volcanos("onaction", {help: "交互数据", list: [], }) Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg, list, cb, target) { var key = "river"; - if (msg.Option(key, can.Conf(key))) { typeof cb == "function" && cb (msg); return } - - msg = can.request({}, {}), can.run(msg._event, [], function(msg) { can._output.innerHTML = ""; var select; msg.Table(function(value, index, array) { - var view = can.onappend.item(can, can._output, "item", value, function(event, item) { + can.run(msg._event, [], function(sup) { can._output.innerHTML = ""; var select; sup.Table(function(value, index, array) { + var view = can.onappend.item(can, can._output, "item", value, function(event, item) { var msg = can.request(event, {_msg: sup}); // 左键点击 - can.Conf(key, value.key); can.run(event, ["search", "Storm.onaction._init"], function(action) { }); + msg.Option(key, can.Conf(key, value.key)), can.run(event, ["search", "Storm.onaction._init"]); }, function(event) { // 右键点击 }); + if (index == 0 || [value.key, value.name].indexOf(can.user.Search(can, key)) > -1) { - msg.Option(key, value.key), select = view + select = view } - }); select && select.click(); typeof cb == "function" && cb(msg); }) + }); select && select.click(); typeof cb == "function" && cb(sup); }) }, }) diff --git a/pane/Storm.js b/pane/Storm.js index 69fbf36f..78a05b3e 100644 --- a/pane/Storm.js +++ b/pane/Storm.js @@ -1,5 +1,5 @@ Volcanos("onimport", {help: "导入数据", list: [], - _init: function(can, meta, list, cb, target) {}, + _init: function(can, meta, list, cb, target) { }, }) Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) { @@ -11,33 +11,38 @@ Volcanos("ondetail", {help: "交互菜单", list: ["共享", "更名", "删除"] can.onexport._init(can, msg, list, cb, target) }, "共享": function(event, can, value) { - can.onappend.share(can, {river: can.Conf("river"), storm: can.Conf("storm")}) + var msg = can.request(event) + msg.Option("name", "storm") + msg.Option("storm", can.Conf("storm")) + msg.Option("river", can.Conf("river")) + can.onappend.share(can, msg) }, }) Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg, list, cb, target) { var key = "storm"; - can.run(msg._event, ["search", "River.onaction._init"], function(msg) { - can.Cache(can.Conf("river"), can._output, can.Conf(key)); - var river = can.Conf("river", msg.Option("river")); - if (can.Conf(key, msg.Option(key, can.Cache(river, can._output)))) { typeof cb == "function" && cb (msg); return } + can.Cache(can.Conf("river"), can._output, can.Conf(key)); + var river = can.Conf("river", msg.Option("river")); + if (msg.Option(key, can.Conf(key, can.Cache(river, can._output)||""))) { + return can.run(msg._event, ["search", "Action.onaction._init"]); + } - msg = can.request({}, {}), can.run(msg._event, [river], function(msg) { can._output.innerHTML = ""; var select; msg.Table(function(value, index, array) { - var view = can.onappend.item(can, can._output, "item", value, function(event, item) { - // 左键点击 - can.Conf(key, value.key); can.run(event, ["search", "Action.onaction._init"], function(msg) {}) - }, function(event, item) { - // 右键点击 - can.onappend.carte(can, can.ondetail, can.ondetail.list, function(event, item, meta) { - meta[item] && meta[item](event, can, value) - console.log(item) - }) - }); + can.run(msg._event, [river], function(sup) { can._output.innerHTML = ""; var select; sup.Table(function(value, index, array) { + var view = can.onappend.item(can, can._output, "item", value, function(event, item) { var msg = can.request(event, {_msg: sup}); + // 左键点击 + msg.Option("river", river) + msg.Option(key, can.Conf(key, value.key)), can.run(event, ["search", "Action.onaction._init"]); + }, function(event, item) { + // 右键点击 + can.onappend.carte(can, can.ondetail, can.ondetail.list, function(event, item, meta) { + meta[item] && meta[item](event, can, value) + console.log(item) + }) + }); - if (index == 0 || [value.key, value.name].indexOf(can.user.Search(can, key)) > -1) { - msg.Option(key, value.key), select = view - } - }); select && select.click(); typeof cb == "function" && cb(msg); }) - }) + if (index == 0 || [value.key, value.name].indexOf(can.user.Search(can, key)) > -1) { + select = view + } + }); select && select.click(); }) }, }) diff --git a/proto.js b/proto.js index e534a65c..5a26bfd0 100644 --- a/proto.js +++ b/proto.js @@ -78,10 +78,10 @@ var Volcanos = shy("火山架", {cache: {}, index: 1, order: 1, debug: { request: function(event, msg, proto) { event = event || {}; if (!msg && event._msg) { return event._msg } - event._msg = msg = msg || {}, msg._event = event; + event._msg = msg = msg || {}, msg._event = event, msg._can = can; msg.__proto__ = proto || { _name: meta.order++, _create_time: new Date(), Option: function(key, val) { - if (val == undefined) { return msg && msg[key] && msg[key][0] || "" } + if (val == undefined) { return msg && msg[key] && msg[key][0] || msg._msg && msg._msg.Option(key) || "" } msg.option = msg.option || [], can.core.List(msg.option, function(k) { if (k == key) {return k} }).length > 0 || msg.option.push(key)