diff --git a/frame.js b/frame.js index 872b2e8e..13ff8555 100644 --- a/frame.js +++ b/frame.js @@ -242,6 +242,31 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { } }) }, function(event, value, key, index, tr, td) { can.onappend.carte(can, can.ondetail||{}, msg["_detail"] || can.Conf("detail") || can.ondetail.list, function(event, item, meta) { + var back = td.innerHTML + switch (item) { + case "编辑": + var ui = can.page.Appends(can, td, [{type: "input", value: back, onkeydown: function(event) { + console.log("key", event.key) + switch (event.key) { + case "Enter": + td.innerHTML = event.target.value + + var res = can.request(event); can.core.List(msg.append, function(key) { + res.Option(key, msg[key][index]) + }); can.run(event, ["field", "action", item, key, event.target.value.trim(), value.trim()], function(res) {}, true) + break + case "Escape": + td.innerHTML = back + break + } + }, onkeyup: function(event) { + + }}]); + ui.input.focus() + ui.input.setSelectionRange(0, -1) + return + } + var res = can.request(event); can.core.List(msg.append, function(key) { res.Option(key, msg[key][index]) }); can.run(event, ["field", "action", item, key, value.trim()], function(res) {}, true) @@ -251,6 +276,7 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { board: function(can, target, type, msg) { msg.result && can.page.AppendBoard(can, can._output, can.page.Display(msg.Result())) }, + carte: function(can, meta, list, cb) { can._carte = can._carte || can.page.Append(can, can._target, [{view: "carte", onmouseleave: function(event) { can.page.Modify(can, can._carte, {style: {display: "none"}}) @@ -281,6 +307,36 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { event.stopPropagation() event.preventDefault() }, + toast: function(can, text, title, duration) { + var meta = typeof text == "object"? text: {text: text, title: title, duration: duration} + can._toast = can._toast || can.page.Append(can, can._target, [{view: "toast", onmouseleave: function(event) { + can.page.Modify(can, can._carte, {style: {display: "none"}}) + }}]).last + + var ui = can.page.Appends(can, can._toast, [ + {text: [meta.title||"", "div", "title"]}, + {text: [meta.text||"执行成功", "div", "content"]}, + 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, + left: document.body.clientWidth/2-width/2, + }; pos.left += "px"; pos.top += "px"; + can.page.Modify(can, can._toast, {style: pos}) + + can.Timer({value: 1000, length: (meta.duration||3000)/1000}, function(event, interval, index) { + if (index > 2) { + ui.duration.innerHTML = index+"s..." + } + }, function() { + can.page.Modify(can, can._toast, {style: {display: "none"}}) + }) + return ui + }, share: function(can, meta) { return can._share = can._share || can.page.Append(can, can._target, [{view: "share", onmouseleave: function(event) { diff --git a/pane/Action.js b/pane/Action.js index a1075afc..876b4c22 100644 --- a/pane/Action.js +++ b/pane/Action.js @@ -21,7 +21,10 @@ Volcanos("onexport", {help: "导出数据", list: [], 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), cb, silent); + 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); diff --git a/pane/Footer.js b/pane/Footer.js index 87b19fc0..871a89a0 100644 --- a/pane/Footer.js +++ b/pane/Footer.js @@ -7,8 +7,9 @@ Volcanos("onaction", {help: "交互数据", list: [], can.onexport._init(can, msg, list, cb, target) }, cmd: function(can, msg, list, cb, target) { - can.Conf("ncmd", parseInt(can.Conf("ncmd")||"0")+1+"") - can.onexport._init(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+"")+"" + }) }, }) Volcanos("onexport", {help: "导出数据", list: [], @@ -19,7 +20,7 @@ Volcanos("onexport", {help: "导出数据", list: [], }) 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)||""}], click: function(event) { + return {view: "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 bb6b95ea..415e44d8 100644 --- a/pane/Header.css +++ b/pane/Header.css @@ -16,7 +16,6 @@ fieldset.Header>div.output>div.title:hover { } fieldset.Header>div.output>div.state { - margin-right:5px; float:right; } fieldset.Header>div.output>div.state>div { diff --git a/style.css b/style.css index b385236d..85d44f69 100644 --- a/style.css +++ b/style.css @@ -125,6 +125,7 @@ fieldset table td.select { div.carte { background:black; border:solid 2px red; + position:absolute; } div.carte div.item { padding:0 5px; @@ -134,3 +135,22 @@ div.carte div.item:hover { border:solid 2px yellow; cursor:pointer; } + +div.toast { + background:black; + border:solid 2px red; + position:absolute; + padding:5px; + color:yellow +} +div.toast div.title { + font-size:14px; + color:gray; +} +div.toast div.content { + text-align:center; +} +div.toast div.duration { + font-size:14px; + color:gray; +}