1
0
forked from x/volcanos

add share

This commit is contained in:
shaoying 2020-05-14 22:57:36 +08:00
parent 96224b7862
commit bbdaa41dfa
11 changed files with 110 additions and 104 deletions

View File

@ -24,7 +24,8 @@ Volcanos("onaction", { _init: function(can, meta, list, cb, target) {
}) } }) }
can.onengine && getRiver(can.onengine.river) 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); pane.onaction._init(pane, msg, msg.option||[], cb, target);
}) })
}, target) }); }, target) });
@ -316,14 +317,14 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) {
var ui = can.page.Appends(can, can._toast, [ var ui = can.page.Appends(can, can._toast, [
{text: [meta.title||"", "div", "title"]}, {text: [meta.title||"", "div", "title"]},
{text: [meta.text||"执行成功", "div", "content"]}, {text: [meta.text||"执行成功", "div", "content"]},
meta.button, {view: ["button"], list: meta.button},
{text: ["", "div", "duration"]}, {text: ["", "div", "duration"]},
]) ])
var width = meta.width||200, height = meta.height||100 var width = meta.width||200, height = meta.height||100
var pos = {position: "absolute", display: "block", var pos = {position: "absolute", display: "block",
width: width+"px", width: width+"px",
top: document.body.clientHeight/2, top: document.body.clientHeight/2-height/2,
left: document.body.clientWidth/2-width/2, left: document.body.clientWidth/2-width/2,
}; pos.left += "px"; pos.top += "px"; }; pos.left += "px"; pos.top += "px";
can.page.Modify(can, can._toast, {style: pos}) can.page.Modify(can, can._toast, {style: pos})
@ -337,13 +338,14 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) {
}) })
return ui return ui
}, },
share: function(can, meta) { share: function(can, msg) {
return can.run(msg._event, ["share"], function(msg) {
can._share = can._share || can.page.Append(can, can._target, [{view: "share", onmouseleave: function(event) { var src = can.user.Share(can, {path: "/share/"+msg.Result()}, true);
can.page.Modify(can, can._carte, {style: {display: "none"}}) var ui = can.onappend.toast(can, {title: can.page.Format("a", src, msg.Result()), text: can.page.Format("img", src+"/share"),
}}]).last width: 300, height: 300, duration: 100000, button: [{button: ["确定", function(event) {
can.page.Modify(can, can._toast, {style: {display: "none"}})
can.page.Appends(can, can._share, [{view: ["title", "div", ]},]) }]}] });
})
} }
}, [], function(can) {}) }, [], function(can) {})
Volcanos("onlayout", { _init: function(can, meta, list, cb, target) { Volcanos("onlayout", { _init: function(can, meta, list, cb, target) {

View File

@ -346,6 +346,14 @@ Volcanos("page", {help: "网页模块",
}, },
Upload: function(can, file, cb, cbs) { Upload: function(can, file, cb, cbs) {
}, },
Format: function(type) {
switch (type) {
case "a":
return "<a href='"+arguments[1]+"' target='_blank'>"+(arguments[2]||arguments[1])+"</a>"
case "img":
return "<img src='"+arguments[1]+"'>"
}
},
DelText: function(target, start, count) { DelText: function(target, start, count) {
target.value = target.value.substring(0, start)+target.value.substring(start+(count||target.value.length), target.value.length) target.value = target.value.substring(0, start)+target.value.substring(start+(count||target.value.length), target.value.length)

View File

@ -44,9 +44,9 @@ Volcanos("user", {help: "用户模块",
Share: shy("共享链接", function(can, objs, clear) {var obj = objs || {}; var path = location.pathname; 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)}); !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("&"); 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 = {} Search: shy("请求参数", function(can, key, value) {var args = {}
location.search && location.search.slice(1).split("&").forEach(function(item) {var x = item.split("=") location.search && location.search.slice(1).split("&").forEach(function(item) {var x = item.split("=")

View File

@ -1,5 +1,5 @@
Volcanos("onimport", {help: "导入数据", list: [], Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, meta, list, cb, target) {}, _init: function(can, meta, list, cb, target) { },
}) })
Volcanos("onaction", {help: "交互操作", list: [], Volcanos("onaction", {help: "交互操作", list: [],
_init: function(can, msg, list, cb, target) { _init: function(can, msg, list, cb, target) {
@ -8,28 +8,25 @@ Volcanos("onaction", {help: "交互操作", list: [],
}) })
Volcanos("onexport", {help: "导出数据", list: [], Volcanos("onexport", {help: "导出数据", list: [],
_init: function(can, msg, list, cb, target) { var key = "action"; _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);
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 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 }
if (position) { can._output.scrollTo(0, position-1); typeof cb == "function" && cb(msg); return }
var pod = can.user.Search(can, "pod"); msg = can.request({}, {}); msg.Clear("option"), can.run(msg._event, [river, storm], function(sup) { can._output.innerHTML = ""; sup.Table(function(value, index, array) {
can.run(msg._event, [river, storm], function(msg) { can._output.innerHTML = ""; msg.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) { can.onappend._init(can, value, Config.libs.concat(["plugin/state.js"]), function(sub) {
sub.run = function(event, cmds, cb, silent) { sub.run = function(event, cmds, cb, silent) { var msg = can.request(event, {_msg: sup});
// 插件回调 // 插件回调
var msg = can.request(event); pod && msg.Option("pod", pod); can.run(event, [river, storm, index].concat(cmds), function(msg) {
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); can.onappend.toast(can, "执行成功", value.name, 2000);
typeof cb == "function" && cb(msg) typeof cb == "function" && cb(msg)
}, silent); }, silent);
can.run(msg._event, ["search", "Footer.onaction.cmd"]) }
} }, can._output);
}, can._output); }) })
}); typeof cb == "function" && cb(msg); })
});
}, },
}) })

View File

@ -10,10 +10,6 @@ fieldset.Footer>div.output div.title {
float:left; float:left;
} }
fieldset.Footer>div.output div.state { fieldset.Footer>div.output div.state {
float:right;
}
fieldset.Footer>div.output div.state>div {
margin-right:5px; margin-right:5px;
float:right; float:right;
} }

View File

@ -1,12 +1,11 @@
Volcanos("onimport", {help: "导入数据", list: [], Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, meta, list, cb, target) { _init: function(can, meta, list, cb, target) { },
},
}) })
Volcanos("onaction", {help: "交互数据", list: [], Volcanos("onaction", {help: "交互数据", list: [],
_init: function(can, msg, list, cb, target) { _init: function(can, msg, list, cb, target) {
can.onexport._init(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) { can.page.Select(can, can._target, "span.ncmd", function(item) {
item.innerHTML = can.Conf("ncmd", parseInt(can.Conf("ncmd")||"0")+1+"")+"" item.innerHTML = can.Conf("ncmd", parseInt(can.Conf("ncmd")||"0")+1+"")+""
}) })
@ -14,16 +13,17 @@ Volcanos("onaction", {help: "交互数据", list: [],
}) })
Volcanos("onexport", {help: "导出数据", list: [], Volcanos("onexport", {help: "导出数据", list: [],
_init: function(can, msg, list, cb, target) { _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.core.List(msg.result, function(title) {
can.page.Append(can, can._output, [{view: ["title", "div", 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) { 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.page.Append(can, can._output, [{view: ["state "+item, "div", can.Conf(item)],
can.onaction[item](event, can, item); list: [{text: item}, {text: ": "}, {text: [can.Conf(item)||"", "span", item]}],
}}; click: function(event) { can.onaction[item](event, can, item) },
}) }]) }])
})
}) })
}, },
}) })

View File

@ -16,14 +16,11 @@ fieldset.Header>div.output>div.title:hover {
} }
fieldset.Header>div.output>div.state { fieldset.Header>div.output>div.state {
float:right;
}
fieldset.Header>div.output>div.state>div {
cursor:pointer; cursor:pointer;
margin-right:5px; margin-right:5px;
float:right; float:right;
} }
fieldset.Header>div.output>div.state>div:hover { fieldset.Header>div.output>div.state:hover {
background-color:red; background-color:red;
} }

View File

@ -1,14 +1,13 @@
Volcanos("onimport", {help: "导入数据", list: [], Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, meta, list, cb, target) { _init: function(can, meta, list, cb, target) { },
},
}) })
Volcanos("onaction", {help: "交互数据", list: [], Volcanos("onaction", {help: "交互数据", list: [],
_init: function(can, msg, list, cb, target) { _init: function(can, msg, list, cb, target) {
can.onexport._init(can, msg, list, cb, target) can.onexport._init(can, msg, list, function(msg) {
can.run(msg._event, ["search", "River.onaction._init"], 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"], function(msg) { can.run(msg._event, ["search", "Footer.onaction._init"]);
}) }, target)
}, },
title: function(event, can, key) { title: function(event, can, key) {
can.run(event, ["search", "Action.onaction._init"], function(msg) { can.run(event, ["search", "Action.onaction._init"], function(msg) {
@ -20,29 +19,32 @@ Volcanos("onaction", {help: "交互数据", list: [],
}, },
}) })
Volcanos("onexport", {help: "导出数据", list: [], Volcanos("onexport", {help: "导出数据", list: [],
_init: function(can, msg, list, cb, target) { can._output.innerHTML = ""; _init: function(can, msg, list, cb, target) {
msg = can.request({}, {}) can.run(msg._event, [], function(msg) { can._output.innerHTML = "";
can.run(msg._event, [], function(msg) {
// if (Volcanos.meta.follow["debug"]) { debugger }
can.Conf("username", msg.Option("user.nick")||msg.Option("user.name")) can.Conf("username", msg.Option("user.nick")||msg.Option("user.name"))
can.core.List(msg.result||["github.com/shylinux/contexts"], function(title) { can.core.List(msg.result||["github.com/shylinux/contexts"], function(title) {
can.page.Append(can, can._output, [{view: ["title", "div", 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.core.List(can.Conf("state")||["time", "username"], function(item) {
can.ui = can.page.Append(can, can._output, [{view: "state", list: can.core.List(can.Conf("state"), function(item) { can.page.Append(can, can._output, [{view: ["state "+item, "div", can.Conf(item)],
return {name: item, view: ["item", "div", can.Conf(item)||""], click: function(event) {can.onaction[item](event, can, 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.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) { time: function(event, can, key, target) {
can.ui[key].innerHTML = can.base.Time().split(" ")[1] target.innerHTML = can.base.Time().split(" ")[1]
}, },
}) })

View File

@ -1,5 +1,5 @@
Volcanos("onimport", {help: "导入数据", list: [], Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, meta, list, cb, target) {}, _init: function(can, meta, list, cb, target) { },
}) })
Volcanos("onaction", {help: "交互数据", list: [], Volcanos("onaction", {help: "交互数据", list: [],
_init: function(can, msg, list, cb, target) { _init: function(can, msg, list, cb, target) {
@ -8,19 +8,18 @@ Volcanos("onaction", {help: "交互数据", list: [],
}) })
Volcanos("onexport", {help: "导出数据", list: [], Volcanos("onexport", {help: "导出数据", list: [],
_init: function(can, msg, list, cb, target) { var key = "river"; _init: function(can, msg, list, cb, target) { var key = "river";
if (msg.Option(key, can.Conf(key))) { typeof cb == "function" && cb (msg); return } 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});
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.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) { }, function(event) {
// 右键点击 // 右键点击
}); });
if (index == 0 || [value.key, value.name].indexOf(can.user.Search(can, key)) > -1) { 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); })
}, },
}) })

View File

@ -1,5 +1,5 @@
Volcanos("onimport", {help: "导入数据", list: [], Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, meta, list, cb, target) {}, _init: function(can, meta, list, cb, target) { },
}) })
Volcanos("onaction", {help: "交互操作", list: [], Volcanos("onaction", {help: "交互操作", list: [],
_init: function(can, msg, list, cb, target) { _init: function(can, msg, list, cb, target) {
@ -11,33 +11,38 @@ Volcanos("ondetail", {help: "交互菜单", list: ["共享", "更名", "删除"]
can.onexport._init(can, msg, list, cb, target) can.onexport._init(can, msg, list, cb, target)
}, },
"共享": function(event, can, value) { "共享": 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: [], Volcanos("onexport", {help: "导出数据", list: [],
_init: function(can, msg, list, cb, target) { var key = "storm"; _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));
can.Cache(can.Conf("river"), can._output, can.Conf(key)); var river = can.Conf("river", msg.Option("river"));
var river = can.Conf("river", msg.Option("river")); if (msg.Option(key, can.Conf(key, can.Cache(river, can._output)||""))) {
if (can.Conf(key, msg.Option(key, can.Cache(river, can._output)))) { typeof cb == "function" && cb (msg); return } 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) { 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 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", "Action.onaction._init"], function(msg) {}) msg.Option("river", river)
}, function(event, item) { 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) can.onappend.carte(can, can.ondetail, can.ondetail.list, function(event, item, meta) {
console.log(item) meta[item] && meta[item](event, can, value)
}) console.log(item)
}); })
});
if (index == 0 || [value.key, value.name].indexOf(can.user.Search(can, key)) > -1) { 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(); })
})
}, },
}) })

View File

@ -78,10 +78,10 @@ var Volcanos = shy("火山架", {cache: {}, index: 1, order: 1, debug: {
request: function(event, msg, proto) { event = event || {}; request: function(event, msg, proto) { event = event || {};
if (!msg && event._msg) { return event._msg } 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(), msg.__proto__ = proto || { _name: meta.order++, _create_time: new Date(),
Option: function(key, val) { 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) { msg.option = msg.option || [], can.core.List(msg.option, function(k) {
if (k == key) {return k} if (k == key) {return k}
}).length > 0 || msg.option.push(key) }).length > 0 || msg.option.push(key)