1
0
mirror of https://shylinux.com/x/ContextOS synced 2025-04-26 17:24:05 +08:00
2019-05-13 19:01:07 +08:00

127 lines
4.9 KiB
JavaScript

var page = Page({
initOcean: function(page, pane, form, output) {
var table = kit.AppendChild(output, "table")
pane.Show = function() {
pane.ShowDialog() && (table.innerHTML = "", form.Run(["ocean"], function(msg) {
kit.AppendTable(table, ctx.Table(msg), ["key", "user.route"])
}))
}
return {"button": ["关闭"], "action": function(event) {
pane.Show()
}}
},
initRiver: function(page, pane, form, output) {
pane.Show = function() {
output.innerHTML = "", form.Runs(["river"], function(line, index, msg) {
index == 0 && page.target.Show(line.key)
kit.AppendChild(output, [{view: ["item", "div", line.name+"("+line.count+")"], click: function(event) {
page.target.Show(line.key)
}}])
})
}
pane.Show()
return {"button": ["添加", "查找"], "action": function(value) {
switch (value) {
case "添加":
var name = prompt("name")
name && form.Run(["river", "create", name], pane.Show)
break
case "查找":
page.ocean.Show()
break
}
}}
},
initTarget: function(page, pane, form, output) {
var river = ""
pane.Show = function(which) {
which && river != which && (river = which, output.innerHTML = "", form.Runs(["river", "wave", river], function(line, index, msg) {
kit.AppendChild(output, [{view: ["item", "div", line.text], click: function(event) {}}])
pane.scrollBy(0,100)
}))
}
pane.Send = function(type, text, cb) {
form.Run(["river", "wave", river, type, text], function(msg) {
kit.AppendChild(output, [{"text" :[text, "div"]}])
pane.scrollBy(0,100)
typeof cb == "function" && cb(msg)
})
}
return [{"text": ["target"]}]
},
initSource: function(page, pane, form, output) {
var ui = kit.AppendChild(pane, [{"view": ["input", "textarea"], "name": "input", "data": {"onkeyup": function(event){
event.key == "Enter" && !event.shiftKey && page.target.Send("text", event.target.value, pane.Clear)
}, "onkeydown": function(event) {
event.key == "Enter" && !event.shiftKey && event.preventDefault()
}}}])
pane.Size = function(width, height) {
pane.style.display = width==0? "none": "block"
pane.style.width = width+"px"
pane.style.height = height+"px"
ui.input.style.width = (width-7)+"px"
ui.input.style.height = (height-7)+"px"
}
pane.Clear = function() {
ui.input = ""
}
return
},
initStorm: function(page, pane, form, output) {
return [{"text": ["storm"]}]
},
initSteam: function(page, pane, form, output) {
return [{"text": ["steam"]}]
},
range: function(sizes) {
sizes = sizes || {}
var width = document.body.offsetWidth
var height = document.body.offsetHeight-80
sizes.left == undefined && (sizes.left = page.river.offsetWidth-page.conf.border)
sizes.right == undefined && (sizes.right = page.storm.offsetWidth-page.conf.border)
sizes.middle = width - sizes.left - sizes.right-5*page.conf.border
page.river.Size(sizes.left, height)
page.storm.Size(sizes.right, height)
if (sizes.top != undefined) {
sizes.bottom = height-sizes.top-page.conf.border
} else if (sizes.bottom != undefined) {
sizes.top = height-sizes.bottom-page.conf.border
} else {
sizes.bottom = page.source.offsetHeight-page.conf.border
sizes.top = height-sizes.bottom-page.conf.border
}
kit.Log(sizes)
page.target.Size(sizes.middle, sizes.top)
page.source.Size(sizes.middle, sizes.bottom)
},
init: function(exp) {
var page = this
page.eachField(page, function(init, pane, form) {
var output = pane.querySelector("div.output")
if (typeof init == "function") {
var conf = init(page, pane, form, output)
if (conf && conf["button"]) {
var buttons = []
conf.button.forEach(function(value, index) {
buttons.push({"button": [value, function(event) {
typeof conf["action"] == "function" && conf["action"](value, event)
}]})
})
kit.InsertChild(pane, output, "div", buttons)
} else if (conf) {
kit.AppendChild(output, conf)
}
}
})
window.onresize = this.range
this.range({left:160, bottom:60, right:160})
},
conf: {border: 4},
})