diff --git a/frame.js b/frame.js index 1163e75e..9058ae7b 100644 --- a/frame.js +++ b/frame.js @@ -104,6 +104,12 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { _option: option, _action: action, _output: output, _follow: can._follow+"."+meta.name, _history: [], Option: function(key, value) { + if (key == undefined) { value = {} + sub.page.Select(sub, option, "select.args,input.args", function(item) { + value[item.name] = item.value + }) + return value + } sub.page.Select(sub, option, "select[name="+key+"],input[name="+key+"]", function(item) { value == undefined? (value = item.value): (item.value = value) }) @@ -125,6 +131,10 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { meta.feature = can.base.Obj(meta.feature, {}) meta.detail = meta.feature["detail"] || {} sub.onimport._init(sub, sub.Conf(meta), list, function() {}, field); + if (can.user.Search(can, "share") && can.user.Search(can, "river") && can.user.Search(can, "storm")) { + can.page.Select(can, field, "legend", function(item) { can.page.Remove(can, item) }) + } + // 添加控件 var args = can.base.Obj(meta.args, []) @@ -135,7 +145,7 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { _follow: can._follow+"."+meta.name+"."+item.name, }, 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) { + 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) } diff --git a/index.css b/index.css index 8f89df5e..ec24e125 100644 --- a/index.css +++ b/index.css @@ -76,6 +76,11 @@ fieldset>div.action { } fieldset>div.action>div.item { float:left; + margin:2px 0; +} +fieldset>div.action>div.item>select { + color:cyan; + background:black; } fieldset>div.action>div.item>input { color:cyan; @@ -84,10 +89,6 @@ fieldset>div.action>div.item>input { fieldset>div.action>div.item>input:hover { background:gray; } -fieldset>div.action>div.item>select { - color:cyan; - background:black; -} fieldset>div.status>div.item { float:left; padding:4px; diff --git a/pane/Action.js b/pane/Action.js index d0067073..2173f954 100644 --- a/pane/Action.js +++ b/pane/Action.js @@ -7,13 +7,15 @@ Volcanos("onaction", {help: "交互操作", list: [], }, }) Volcanos("ondetail", {help: "交互菜单", list: ["共享", "更名", "删除"], - "共享": function(event, can, value) { - var msg = can.request(event) - msg.Option("name", "storm") + "共享": function(event, can, value, sub) { + console.log(sub.Option()) + var msg = sub.request(event) + msg.Option("name", value.name) msg.Option("node", value.pod) msg.Option("group", value.group) msg.Option("index", value.index) msg.Option("args", value.args) + msg.Option("value", JSON.stringify(sub.Option())) msg.Option("storm", can.Conf("storm")) msg.Option("river", can.Conf("river")) can.onappend.share(can, msg) @@ -45,7 +47,7 @@ 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) + meta[item] && meta[item](event, can, value, sub) }) } }, can._output); diff --git a/plugin/inner.css b/plugin/inner.css index 434779d4..eb33f89c 100644 --- a/plugin/inner.css +++ b/plugin/inner.css @@ -2,6 +2,7 @@ fieldset.editor>div.action>div.file { border:solid 2px red; padding:2px; float:left; + margin:2px 0; } fieldset.editor>div.action>div.file:hover { background-color:green; @@ -22,7 +23,6 @@ fieldset.editor>div.output>div.profile { width:80px; overflow:auto; } fieldset.editor>div.output>div.profile:hover { - position:absolute; right:0; width:480px; } diff --git a/plugin/inner.js b/plugin/inner.js index 68554f5f..cd6b0740 100644 --- a/plugin/inner.js +++ b/plugin/inner.js @@ -1,10 +1,18 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb, target) { target.innerHTML = "" + if (can.user.Search(can, "share") && can.user.Search(can, "river") && can.user.Search(can, "storm")) { + can.onaction.list = ["项目", "运行"] + can.page.Modify(can, can._action, {style: {clear: "none"}}) + can.page.Select(can, can._option, "input[type=button]", function(item) { + can.page.Remove(can, item) + }) + can.Conf("height", can.Conf("height") + 64) + } var width = can.Conf("width"), height = can.Conf("height") can.page.Modify(can, target, {style: {"max-height": height-160+"px"}}) - msg.Option("_action") != "查看" && can.onappend.table(can, target, "table", msg) + msg.Option("_action") != "查看" && msg.Option("_action") != "打开" && can.onappend.table(can, target, "table", msg) can.ui = can.page.Append(can, target, [ - {view: ["project", "div"], style: {width: "80px"}}, + {view: ["project", "div"], style: {width: "80px", "max-height": height-160+"px"}}, {view: ["profile", "div"]}, {view: "preview", style: {width: "30px"}}, @@ -37,11 +45,6 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb, can.Option("name", name) if (can.tabview[path+name]) { return can.onsyntax._init(can, can.tabview[path+name]) } - var p = can.onsyntax[can.parse] - !p && can.run({}, ["action", "plug", can.Option("path"), can.Option("name")], function(msg) { - can.onsyntax[can.parse] = p - }, true) - can.run({}, [path, name], function(msg) { msg.Option("path", can.Option("path")) msg.Option("name", can.Option("name")) @@ -53,18 +56,22 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb, }, project: function(can, path) { can.ui.project.innerHTML = "" can.Option("path", path) - can.run({}, ["action", "project", path], function(res) { - res.Table(function(value) { can.page.Append(can, can.ui.project, [{text: [value.file, "div", "item"], onclick: function(event) { + can.run({}, ["action", "project", path], function(res) { res.Table(function(value) { + var title = can.core.List(["time", "size"], function(item) { + return item + ": " + value[item] + }).join("\n") + + can.page.Append(can, can.ui.project, [{text: [value.file, "div", "item"], title: title, onclick: function(event) { if (value.file.endsWith("/")) { can.onimport.project(can, can.Option("path", can.base.Path(can.Option("path"), value.file))) } else { can.onimport.tabview(can, can.Option("path"), can.Option("name", value.file)) } - }} ]) }) - }, true) + }} ]) + }) }, true) }, }, ["/plugin/inner.css"]) -Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], _init: function(can, msg) { +Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], _init: function(can, msg) { can._msg = msg var file = can.base.Path(msg.Option("path"), msg.Option("name")) // option @@ -86,8 +93,6 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], }); if (cache) { return } // remote - can.ui.preview.innerHTML = "" - can.ui.content.innerHTML = "" can.parse = file.split(".").pop()||"txt" can.max = 0, can.core.List(can.ls = msg.Result().split("\n"), function(item) { can.onaction.appendLine(can, item) @@ -296,15 +301,17 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], k: function(event, can) { }, }, - display: true, - line: function(can, line) { var auto = false, loop = true + line: function(can, line) { var auto = true, loop = true var total = 0 function cb(event) { console.log(event) } return {className: "preview", type: "video", style: {height: can.Conf("height")-160+"px", width: can.Conf("width")-160+"px"}, data: {src: "/share/local/"+line, controls: "controls", autoplay: auto, loop: loop}, oncontextmenu: cb, onplay: cb, onpause: cb, onended: cb, - onloadedmetadata: function(event) { total = event.timeStamp }, onloadeddata: cb, ontimeupdate: function(event) { - can.Status("当前行", can.onexport.position(can, event.target.currentTime-1, event.target.duration)) + onloadedmetadata: function(event) { + total = event.timeStamp + event.target.currentTime = can._msg.currentTime || 0 + }, onloadeddata: cb, ontimeupdate: function(event) { + can.Status("当前行", can.onexport.position(can, (can._msg.currentTime=event.target.currentTime)-1, event.target.duration)) }, } }, diff --git a/proto.js b/proto.js index fdf3f607..28fd23fe 100644 --- a/proto.js +++ b/proto.js @@ -182,6 +182,7 @@ var Volcanos = shy("火山架", {cache: {}, index: 1, order: 1, debug: { return name } + output.innerHTML = "" var list = cache[name]; if (!list) {return} console.log(can._root, can._name, "load", name, cache[name]);