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)