diff --git a/frame.js b/frame.js index 9058ae7b..e059fadd 100644 --- a/frame.js +++ b/frame.js @@ -146,8 +146,8 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { }, Volcanos.meta.libs.concat([item.display||"/plugin/input.js"]), function(input) { input.onimport._init(input, input.Conf(item), item.list||[], function() {}, input._target); if (can.user.Search(can, "active") == meta.name || can.user.Search(can, "title") == meta.name) { - var p = sub.user.Search(can, item.name) || "" - p && (input._target.value = p) + var p = sub.user.Search(can, item.name) + p != undefined && (input._target.value = p) } input.run = function(event, cmds, cb, silent) { diff --git a/index.css b/index.css index ec24e125..be96c6a0 100644 --- a/index.css +++ b/index.css @@ -217,3 +217,8 @@ div.upload { div.upload div.item { float:left; } + +fieldset.input { + position:absolute; + left:0; top:0; +} diff --git a/lib/user.js b/lib/user.js index cc9c1e91..29ee6a13 100644 --- a/lib/user.js +++ b/lib/user.js @@ -5,9 +5,21 @@ Volcanos("user", {help: "用户模块", reload: function(force) {(force || confirm("重新加载页面?")) && location.reload()}, title: function(text) {return text && (document.title = text), document.title}, - input: function(event, can, form, cb) { + input: function(event, can, form, cb) { var button + function cbs(event, button) { var data = {} + var list = can.page.Select(can, view.table, "select,input,textarea", function(item) { + return data[item.name] = item.value + }) + if (typeof cb == "function" && cb(event, button, data, list)) { + can.page.Remove(can, view.first) + } + } + var view = can.page.Append(can, document.body, [{view: ["input", "fieldset"], style: {left: event.clientX+"px", top: event.clientY+"px"}, list: [ {view: ["option", "table"], list: can.core.List(form, function(item) { + if (item.button) { button = can.core.List(item.button, function(item) { return {button: typeof item == "object"? item: [item, function(event) { + cbs(event, item) + } ]} } ); return } return {type: ["tr"], list: [ {type: "td", list: [{text: typeof item == "string"? item: item.length > 0? item[0]: item.name || "", @@ -19,15 +31,9 @@ Volcanos("user", {help: "用户模块", ]}, ]} })}, - {view: "action", list: [{button: ["提交", function(event, value) { - var data = {} - var list = can.page.Select(can, view.table, "select,input,textarea", function(item) { - return data[item.name] = item.value - }) - if (typeof cb == "function" && cb(event, value, data, list)) { - can.page.Remove(can, view.first) - } - }]}, {button: ["关闭", function(event, value) { + {view: "action", list: button||[{button: ["提交", function(event) { + cbs(event, "提交") + }]}, {button: ["关闭", function(event, button) { can.page.Remove(can, view.first) }]}]}, ]}]) @@ -42,7 +48,7 @@ Volcanos("user", {help: "用户模块", login: function(cb) {}, Share: shy("共享链接", function(can, objs, clear) {var obj = objs || {}; var path = location.pathname; - obj.path && (path = obj.path, delete(obj.path)) + obj._path && (path = obj._path, delete(obj._path)) !clear && can.core.Item(can.user.Search(), function(key, value) {obj[key] || (obj[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("&"); diff --git a/pane/Action.js b/pane/Action.js index 2173f954..759125e6 100644 --- a/pane/Action.js +++ b/pane/Action.js @@ -21,11 +21,10 @@ Volcanos("ondetail", {help: "交互菜单", list: ["共享", "更名", "删除"] can.onappend.share(can, msg) }, }) -Volcanos("onexport", {help: "导出数据", list: [], - _init: function(can, msg, list, cb, target) { var key = "action"; +Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg, list, cb, target) { var key = "action"; 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))); + var position = can.Conf(key, msg.Option(key, can.Cache(river+"."+storm, can._output)||"")); if (position) { can._output.scrollTo(0, position-1); return } msg.Clear("option"), can.run(msg._event, [river, storm], function(sup) { can._output.innerHTML = ""; sup.Table(function(value, index, array) { @@ -38,6 +37,8 @@ Volcanos("onexport", {help: "导出数据", list: [], value.height = can._target.offsetHeight can.onappend._init(can, value, Volcanos.meta.libs.concat(["/plugin/state.js"]), function(sub) { sub.run = function(event, cmds, cb, silent) { var msg = can.request(event, event._msg||{_msg: sup}); + can.Conf("active", sub.Option()) + can.Conf("action", value.name) // 插件回调 can.run(event, [river, storm, index].concat(cmds), function(msg) { can.run(msg._event, ["search", "Footer.onaction.ncmd"]); @@ -47,11 +48,15 @@ Volcanos("onexport", {help: "导出数据", list: [], } sub._target.oncontextmenu = function(event) { can.onappend.carte(can, can.ondetail, can.ondetail.list, function(event, item, meta) { + // 菜单命令 meta[item] && meta[item](event, can, value, sub) }) } }, can._output); }) }) }, + key: function(can, msg) { msg.Option("active", can.Conf("action")) + can.core.Item(can.Conf("active"), msg.Option) + }, }) diff --git a/pane/Header.js b/pane/Header.js index 8d07cffb..edc9737e 100644 --- a/pane/Header.js +++ b/pane/Header.js @@ -1,25 +1,50 @@ -Volcanos("onimport", {help: "导入数据", list: [], - _init: function(can, meta, list, cb, target) { }, -}) -Volcanos("onaction", {help: "交互数据", list: [], - _init: function(can, msg, list, cb, target) { - 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) +Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta, list, cb, target) { }, - title: function(event, can, key) { - can.run(event, ["search", "Action.onaction._init"], function(msg) { - console.log(msg) +}) +Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) { + function init() { + can.onexport._init(can, msg, list, function() { + 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) + } + can.run({}, ["check"], function(msg) { + if (msg.Result()) { return init() } + + var ui = can.user.input({}, can, [ + {username: "username", name: "用户"}, + {password: "password", name: "密码"}, + {button: [["登录", function(event) { + var username = ui["用户"].value + var password = ui["密码"].value + can.run({}, ["login", username, password], function(msg) { + if (msg.Result()) { + can.page.Remove(can, ui.first) + return init() + } + can.user.alert("用户或密码错误") + }) + }], "扫码"]}, + ], function(event, button, data, list) { + }) }) }, + title: function(event, can, key) { var msg = can.request(event) + can.core.List(["River", "Storm", "Action"], function(item) { + can.run(event, ["search", item+".onexport.key"]) + }) + var args = {}; can.core.List(msg.option, function(key) { args[key] = msg.Option(key) }) + location.href = can.user.Share(can, args) + }, username: function(event, can, key) { - // can.ui[key].innerHTML = can.base.Time().split(" ")[1] + if (can.user.confirm("logout?")) { + can.user.Cookie(can, "sessid", "") + can.user.reload(true) + } }, }) -Volcanos("onexport", {help: "导出数据", list: [], - _init: function(can, msg, list, cb, target) { +Volcanos("onexport", {help: "导出数据", list: [], _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")) @@ -28,23 +53,18 @@ Volcanos("onexport", {help: "导出数据", list: [], click: function(event) { can.onaction["title"](event, can, "title") }, }]) }) - 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})) + typeof cb == "function" && cb() }) }, - time: function(event, can, key, target) { - target.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 9f3acda0..68d733ed 100644 --- a/pane/River.js +++ b/pane/River.js @@ -1,13 +1,11 @@ -Volcanos("onimport", {help: "导入数据", list: [], - _init: function(can, meta, list, cb, target) { }, +Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta, list, cb, target) { + }, }) -Volcanos("onaction", {help: "交互数据", list: [], - _init: function(can, msg, list, cb, target) { +Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) { can.onexport._init(can, msg, list, cb, target) }, }) -Volcanos("onexport", {help: "导出数据", list: [], - _init: function(can, msg, list, cb, target) { var key = "river"; +Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg, list, cb, target) { var key = "river"; 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}); // 左键点击 @@ -21,5 +19,6 @@ Volcanos("onexport", {help: "导出数据", list: [], } }); select && select.click(); typeof cb == "function" && cb(sup); }) }, + key: function(can, msg) { msg.Option("river", can.Conf("river")) }, }) diff --git a/pane/Storm.js b/pane/Storm.js index 8753e652..dcb8082b 100644 --- a/pane/Storm.js +++ b/pane/Storm.js @@ -15,8 +15,7 @@ Volcanos("ondetail", {help: "交互菜单", list: ["共享", "更名", "删除"] can.onappend.share(can, msg) }, }) -Volcanos("onexport", {help: "导出数据", list: [], - _init: function(can, msg, list, cb, target) { var key = "storm"; +Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg, list, cb, target) { var key = "storm"; 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)||""))) { @@ -40,5 +39,6 @@ Volcanos("onexport", {help: "导出数据", list: [], } }); select && select.click(); }) }, + key: function(can, msg) { msg.Option("storm", can.Conf("storm")) }, })