1
0
mirror of https://shylinux.com/x/ContextOS synced 2025-04-25 16:58:06 +08:00
This commit is contained in:
shaoying 2019-08-19 23:27:07 +08:00
parent f6f22b1bc2
commit 72f57af479
4 changed files with 138 additions and 92 deletions

View File

@ -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? "办公": "工作")
},
})

View File

@ -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;

View File

@ -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", "<a href='mailto:shylinux@163.com'>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":

View File

@ -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]