diff --git a/usr/librarys/chat.js b/usr/librarys/chat.js index 5ca31192..ce28feb0 100644 --- a/usr/librarys/chat.js +++ b/usr/librarys/chat.js @@ -84,16 +84,16 @@ Page({ } }, onaction: { - title: function(event, item, value) { + title: function(event, item, value, page) { ctx.Search({"river": page.river.Pane.which.get(), "storm": page.storm.Pane.which.get(), "layout": page.action.Pane.Layout()}) }, - user: function(event, item, value) { + user: function(event, item, value, page) { var name = kit.prompt("new name") name && page.login.Pane.Run(["rename", name], function(msg) { page.header.Pane.State("user", name) }) }, - logout: function(event, item, value) { + logout: function(event, item, value, page) { kit.confirm("logout?") && page.login.Pane.Exit() }, }, @@ -279,7 +279,6 @@ Page({ echo: function(one, two) { kit.Log(one, two) }, - _split: function(str) {return str.trim().split(" ")}, help: function() { var args = kit.List(arguments) if (args.length > 1 && page[args[0]] && page[args[0]].Pane[args[1]]) { @@ -290,25 +289,23 @@ Page({ } return kit._call(page.Help, args) }, + _split: function(str) {return str.trim().split(" ")}, _cmd: function(arg) { var args = engine._split(arg[1]); if (typeof engine[args[0]] == "function") { return kit._call(engine[args[0]], args.slice(1)) } - - if (page.plugin && page.plugin.Plugin.Jshy(event, args)) {return true} - if (page.dialog && page.dialog.Pane.Jshy(event, args)) {return true} - if (page.pane && page.pane.Pane.Jshy(event, args)) {return true} - if (page && page.Jshy(event, args)) {return true} - - if (page.plugin) { - if (args.length > 1) { - return kit._call(page.plugin.Plugin.Run, [window.event].concat(args.slice(1))) - } else { - return kit._call(page.plugin.Plugin.Runs, [window.event]) - } + if (page.plugin && typeof page.plugin[args[0]] == "function") { + return kit._call(page.plugin[args[0]], args.slice(1)) } + if (page.dialog && page.dialog.Pane.Jshy(event, args)) {return true} + if (page.pane && page.pane.Pane.Jshy(event, args)) {return true} + if (page.storm && page.storm.Pane.Jshy(event, args)) {return true} + if (page.river && page.river.Pane.Jshy(event, args)) {return true} + + if (page && page.Jshy(event, args)) {return true} + if (page.plugin && page.plugin.Plugin.Jshy(event, args)) {return true} kit.Log("not find", arg[1]) return true }, @@ -405,7 +402,7 @@ Page({ page.input && page.plugin.Plugin.Delete() }, "加参": function(event, value) { - page.plugin && page.plugin.Plugin.Append({}) + page.plugin && page.plugin.Plugin.Append({className: "args temp"}) }, "减参": function(event, value) { page.plugin && page.plugin.Plugin.Remove() @@ -421,10 +418,10 @@ Page({ page.plugin && page.plugin.Plugin.display("canvas") }, }, - Button: [["layout", "聊天", "办公", "工作", "最高", "最宽", "最大"], "", - "刷新", "清空", "并行", "串行", "", - ["display", "表格", "编辑", "绘图"], - "添加", "删除", "加参", "减参", "", + Button: [["layout", "聊天", "办公", "工作", "最高", "最宽", "最大"], + "", "刷新", "清空", "并行", "串行", + "", ["display", "表格", "编辑", "绘图"], + "", "添加", "删除", "加参", "减参", ], } }, @@ -565,14 +562,11 @@ Page({ } }, init: function(page) { - page.onlayout(window.event, page.conf.layout) - page.action.Pane.Layout(ctx.Search("layout")? ctx.Search("layout"): kit.isMobile? "办公": "工作") - page.footer.Pane.Order({"ncmd": "", "ntxt": "", ":":""}, kit.isMobile? ["ncmd", "ntxt"]: ["ncmd", "ntxt", ":"], function(event, item, value) {}) + page.footer.Pane.Order({"ncmd": "", "ntxt": ""}, ["ncmd", "ntxt"], function(event, item, value) {}) page.header.Pane.Order({"logout": "logout", "user": ""}, ["logout", "user"], function(event, item, value) { - page.onaction[item] && page.onaction[item](event, item, value) + page.onaction[item] && page.onaction[item](event, item, value, page) }) - page.river.Pane.Show() - page.pane = page.action - page.plugin = kit.Selector(page.action, "fieldset")[0] + page.river.Pane.Show(), page.pane = page.action, page.plugin = kit.Selector(page.action, "fieldset")[0] + page.action.Pane.Layout(ctx.Search("layout")? ctx.Search("layout"): kit.isMobile? "办公": "工作") }, }) diff --git a/usr/librarys/example.css b/usr/librarys/example.css index d5966605..b00cc3a0 100644 --- a/usr/librarys/example.css +++ b/usr/librarys/example.css @@ -17,20 +17,16 @@ legend { margin-left:10px; } -fieldset>div.Help { - position:absolute; - left:0px; - top:0px; - width:calc(100% - 4px); - height:calc(100% - 4px); +.hidden { + display:none; } -fieldset>div.Help>div{ - border:solid 2px red; - background-color:cyan; - color:blue; - opacity:0.7; - overflow:auto; +.normal { } +.choice { +} +.select { +} + fieldset>form.option div { margin-right:6px; float:left; @@ -38,6 +34,12 @@ fieldset>form.option div { fieldset>form.option div.hide { display:none; } +fieldset>form.option div.clear { + clear:both; +} +fieldset>form.option label { + margin-right:6px; +} fieldset>form.option div input.args { width:80px; } @@ -46,19 +48,13 @@ fieldset>form.option div.cmd input.args { background-color: black; width:160px; } -fieldset>form.option div.clear { - clear:both; -} fieldset>form.option div.long input.args { width:240px; } -fieldset>form.option label { - margin-right:6px; -} fieldset>div.action { padding:6px; } -fieldset>div.action>div.space { +fieldset>div.action div.space { display:inline-block; width:10px; } @@ -98,24 +94,39 @@ fieldset>div.output table td { word-break:keep-all; min-width:40px; } -fieldset>div.output>table.edit { +fieldset>div.output table.edit { } -fieldset>div.output>table.edit td { +fieldset>div.output table.edit td { min-width:4px; padding:0px; } -fieldset>div.output>table.edit td>input { +fieldset>div.output table.edit td>input { width:600px; padding:0px; } fieldset>div.output table.edit { } +fieldset>div.Help { + position:absolute; + width:calc(100% - 4px); + height:calc(100% - 4px); + left:0px; + top:0px; +} +fieldset>div.Help>div { + color:blue; + opacity:0.7; + background-color:cyan; + border:solid 2px red; + overflow:auto; +} fieldset.toast { border:solid 2px red; background-color:#ffffff; position:absolute; display:none; + z-index:100; } fieldset.toast>div.output { padding:0 10px; @@ -139,6 +150,7 @@ fieldset.dialog { padding:10px; display:none; position:absolute; + z-index:10; } fieldset.dialog>div.output { padding:10px; @@ -157,12 +169,26 @@ fieldset.dialog>div.create { float:left; } +fieldset.Login { + font-size:28px; + z-index:20; +} +fieldset.Login>form.option input { + font-size:18px; + height:28px; +} +fieldset.Login>form.option button { + font-size:18px; + height:28px; +} fieldset.Header { height:32px; clear:both; + min-width:640px; } fieldset.Header>div.output div.title { float:left; + cursor:pointer; } fieldset.Header>div.output div.state { float:right; @@ -174,6 +200,7 @@ fieldset.Header>div.output div.state div { } fieldset.Footer { clear:both; + overflow:hidden; height:32px; } fieldset.Footer>div.output div.title { @@ -193,16 +220,9 @@ fieldset.Footer>div.output div.state div { margin-left:5px; float:right; } -fieldset.Login { - font-size:28px; -} -fieldset.Login>form.option input { - font-size:18px; - height:28px; -} -fieldset.Login>form.option button { - font-size:18px; - height:28px; + +fieldset.Source { + overflow:hidden; } fieldset.item { @@ -235,14 +255,6 @@ fieldset.item>div.output>div.status>input.cmd { width:250px; } -.hidden { - display:none; -} -.normal { -} -.choice { -} - fieldset table { font-size:14px; overflow: auto; diff --git a/usr/librarys/example.js b/usr/librarys/example.js index ae3ab6b5..749962fe 100644 --- a/usr/librarys/example.js +++ b/usr/librarys/example.js @@ -187,6 +187,17 @@ function Page(page) { }, document.body.onkeydown = function(event) { if (page.localMap && page.localMap(event)) {return} page.oncontrol && page.oncontrol(event, document.body, "control") + if (event.ctrlKey && kit.isWindows) { + event.stopPropagation() + event.preventDefault() + return true + } + }, document.body.onkeyup = function(event) { + if (event.ctrlKey && kit.isWindows) { + event.stopPropagation() + event.preventDefault() + return true + } } }, ontoast: function(text, title, duration) { @@ -253,7 +264,7 @@ function Page(page) { return true } var his = target.History - var pos = target.Current + var pos = target.Current || -1 switch (event.key) { case "p": if (!his) { break } @@ -298,6 +309,7 @@ function Page(page) { } event.stopPropagation() + event.preventDefault() return true } switch (event.key) { @@ -425,12 +437,12 @@ function Page(page) { }}})}, ]) }, + Help: function() {}, } }, initFooter: function(page, field, option, output) { var state = {}, list = [], cb = function(event, item, value) {} - field.onclick = function(event) {page.pane && page.pane.scrollTo(0,page.pane.scrollHeight)} - var ui, w = 0 + var ui, w = 0, history return { Select: function() { ui.magic.focus() @@ -450,35 +462,41 @@ function Page(page) { output.innerHTML = "", ui = kit.AppendChild(output, [ {"view": ["title", "div", "shylinux@163.com"]}, {"view": ["magic"], style: {"margin-top": "-4px"}, list: [{input: ["magic", function(event) { - if (event.type != "keydown") {return} + if (event.key == "Enter" || event.ctrlKey && event.key == "j") { + ui.magic.History.push(event.target.value) + page.action.Pane.Core(event, {}, ["_cmd", event.target.value]), event.target.value = "" + event.stopPropagation() + event.preventDefault() + return + } switch (event.key) { case " ": - return - case "Enter": - page.action.Pane.Core(event, {}, ["_cmd", event.target.value]), event.target.value = "" - return + return true } page.oninput(event, function(event) { switch (event.key) { case "j": - page.action.Pane.Core(event, {}, ["_cmd", event.target.value]), event.target.value = "" break case "Enter": kit.Log(event.target.value) break + default: + return false } + return true }) - return true }], style: {width: w, "margin-top": "-2px", "font-size": "16px"}}]}, {"view": ["state"], list: list.map(function(item) {return {text: [item+":"+state[item], "div"], click: function(item) { cb(event, item, state[item]) }}})}, ]) + ui.magic.History = [] field.Pane.Size(field.clientWidth, field.clientHeight) }, + Help: function() {}, } }, Pane: Pane, @@ -491,15 +509,16 @@ function Pane(page, field) { var output = field.querySelector("div.output") var timer = "" - var list = [], last = -1 + var list = [], last = -1, member = {} var name = option.dataset.name var pane = Meta(field, (page[field.dataset.init] || function() { })(page, field, option, output) || {}, { Append: function(type, line, key, which, cb) { type = type || line.type var index = list.length, ui = pane.View(output, type, line, key, function(event, cmds, cbs) { - pane.Select(index), pane.which.set(line[which]) + pane.Select(index, line[which]) }) + key && key.length > 0 && (member[line[which]] = member[line[key[0]]] = {index:index, key:line[which]}) list.push(ui.last), field.scrollBy(0, field.scrollHeight+100); (type == "plugin" || type == "field") && pane.Plugin(page, pane, ui.field, function(event, cmds, cbs) { typeof cb == "function" && cb(line, index, event, cmds, cbs) @@ -516,9 +535,10 @@ function Pane(page, field) { } }) }, - Select: function(index) { + Select: function(index, key) { -1 < last && last < list.length && (list[last].className = "item") last = index, list[index] && (list[index].className = "item select") + key && pane.which.set(key) }, Clear: function() { output.innerHTML = "", list = [], last = -1 @@ -552,15 +572,15 @@ function Pane(page, field) { }, Jshy: function(event, args) { if (pane[args[0]] && pane[args[0]].type == "fieldset") { - if (args.length > 1) { - return kit._call(pane[args[0]].Plugin.Run, [event].concat(args.slice(1))) - } else { - return kit._call(pane[args[0]].Plugin.Runs, [event]) - } + return pane[args[0]].Plugin.Jshy(event, args.slice(1)) } if (typeof pane.Action[args[0]] == "function") { return kit._call(pane.Action[args[0]], [event, args[0]]) } + if (member[args[0]] != undefined) { + pane.Select(member[args[0]].index, member[args[0]].key) + return true + } return typeof pane[args[0]] == "function" && kit._call(pane[args[0]], args.slice(1)) }, @@ -631,7 +651,6 @@ function Plugin(page, pane, field, run) { var action = field.querySelector("div.action") var output = field.querySelector("div.output") - var count = 0 var plugin = Meta(field, (field.Script && field.Script.init || function() { })(run, field, option, output)||{}, { Append: function(item, name, value) { @@ -641,9 +660,10 @@ function Plugin(page, pane, field, run) { }: cb) }) + var count = kit.Selector(option, "args").length args && count < args.length && (item.value = value||args[count++]||item.value||"") - name = item.name || "input" + name = item.name || "input" var input = {type: "input", name: name, data: item} switch (item.type) { case "select": @@ -676,8 +696,8 @@ function Plugin(page, pane, field, run) { return action }, Remove: function() { - var list = option.querySelectorAll(".args") - list.length > 0 && (option.removeChild(list[list.length-1].parentNode), count--) + var list = option.querySelectorAll("input.temp") + list.length > 0 && (option.removeChild(list[list.length-1].parentNode)) }, Delete: function() { page.plugin = field.previousSibling @@ -721,7 +741,13 @@ function Plugin(page, pane, field, run) { setTimeout(function() {plugin.Help("", "hide")}, delay) }, Jshy: function(event, args) { - return typeof plugin[args[0]] == "function" && kit._call(plugin[args[0]], args.slice(1)) + if (typeof plugin[args[0]] == "function") { + return kit._call(plugin[args[0]], args.slice(1)) + } + if (args.length > 1) { + return kit._call(plugin.Run, [event].concat(args.slice(1))) + } + return kit._call(plugin.Runs, [event]) }, Delay: function(time, event, text) { @@ -822,8 +848,15 @@ function Plugin(page, pane, field, run) { plugin.Check(action) }, onkeyup: function(event, action, type, name, item) { + switch (event.key) { + case " ": + event.stopPropagation() + return true + } + page.oninput(event, function(event) { switch (event.key) { + case " ": case "w": break default: @@ -835,8 +868,15 @@ function Plugin(page, pane, field, run) { }) }, onkeydown: function(event, action, type, name, item) { + switch (event.key) { + case " ": + event.stopPropagation() + return true + } + page.oninput(event, function(event) { switch (event.key) { + case " ": case "w": break case "p": diff --git a/usr/librarys/toolkit.js b/usr/librarys/toolkit.js index 17789ccb..c49e80b7 100644 --- a/usr/librarys/toolkit.js +++ b/usr/librarys/toolkit.js @@ -189,7 +189,7 @@ kit = toolkit = { } else if (child.input) { child.type = "input" child.data["name"] = child.input[0] - child.data["onkeyup"] = child.input[1] + // child.data["onkeyup"] = child.input[1] child.data["onkeydown"] = child.input[1] child.name = child.name || child.input[0]