mirror of
https://shylinux.com/x/ContextOS
synced 2025-04-26 09:14:06 +08:00
opt PanePlugin.js
This commit is contained in:
parent
7c4a8caaad
commit
d4464b9a74
@ -35,7 +35,7 @@ Plugin["love/index.js"] = function(field, option, output) {return {
|
|||||||
})
|
})
|
||||||
break
|
break
|
||||||
case "detail":
|
case "detail":
|
||||||
plugin.Change(event.target, function(value) {
|
kit.Change(event.target, function(value) {
|
||||||
plugin.Run(event, ["update", option.table.value, option.index.value, line.key, value], function(msg) {
|
plugin.Run(event, ["update", option.table.value, option.index.value, line.key, value], function(msg) {
|
||||||
kit.Log("ok")
|
kit.Log("ok")
|
||||||
})
|
})
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
Plugin["mind/index.js"] = function(field, option, output) {return {
|
Plugin["mind/index.js"] = function(field, option, output) {return {
|
||||||
ondaemon: {
|
onfigure: shy(function(type, msg, cb) {if (msg.event && msg.event.type == "blur") {return}
|
||||||
table: function(msg, cb) {if (msg.event && msg.event.type == "blur") {return}
|
|
||||||
var plugin = field.Plugin
|
var plugin = field.Plugin
|
||||||
output.innerHTML = "", msg.append && kit.OrderTable(kit.AppendTable(kit.AppendChild(output, "table"), ctx.Table(msg), msg.append), "", function(event, value, name, line, index) {
|
output.innerHTML = "", msg.append && kit.OrderTable(kit.AppendTable(kit.AppendChild(output, "table"), msg.Table(), msg.append), "", function(event, value, name, line, index) {
|
||||||
if (name == "id") {
|
if (name == "id") {
|
||||||
page.Sync("plugin_"+plugin.exports[0]).set(plugin.onexport[plugin.exports[2]||""](value, name, line))
|
page.Sync("plugin_"+plugin.exports[0]).set(plugin.onexport[plugin.exports[2]||""](value, name, line))
|
||||||
|
|
||||||
@ -51,6 +50,5 @@ Plugin["mind/index.js"] = function(field, option, output) {return {
|
|||||||
}}}]).first.focus()
|
}}}]).first.focus()
|
||||||
}
|
}
|
||||||
}), typeof cb == "function" && cb(msg)
|
}), typeof cb == "function" && cb(msg)
|
||||||
},
|
}),
|
||||||
},
|
|
||||||
}}
|
}}
|
||||||
|
@ -183,7 +183,7 @@ var page = Page({check: true,
|
|||||||
return {
|
return {
|
||||||
Show: function(which) {var pane = field.Pane
|
Show: function(which) {var pane = field.Pane
|
||||||
pane.Event(event, {}, {name: pane.Zone("show", page.who.get())})
|
pane.Event(event, {}, {name: pane.Zone("show", page.who.get())})
|
||||||
output.innerHTML = "", pane.Update([], "text", ["nick", "count"], "key", which||ctx.Search("river")||true)
|
output.innerHTML = "", pane.Appends([], "text", ["nick", "count"], "key", which||ctx.Search("river")||true)
|
||||||
},
|
},
|
||||||
Action: {
|
Action: {
|
||||||
"创建": function(event) {
|
"创建": function(event) {
|
||||||
@ -419,10 +419,10 @@ var page = Page({check: true,
|
|||||||
},
|
},
|
||||||
_msg: function(msg) {
|
_msg: function(msg) {
|
||||||
if (msg) {
|
if (msg) {
|
||||||
var text = plugin? plugin.Reveal(msg): ""
|
var text = msg.Format()
|
||||||
text && event.ctrlKey && page.target.Pane.Send(text[0], text[1])
|
text && event.ctrlKey && page.target.Pane.Send(text[0], text[1])
|
||||||
} else {
|
} else {
|
||||||
page.target.Pane.Send("field", plugin.Format())
|
page.target.Pane.Send("field", plugin.Reveal())
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_run: function() {
|
_run: function() {
|
||||||
@ -439,7 +439,7 @@ var page = Page({check: true,
|
|||||||
if (river && storm && field.Pane.Load(river+"."+storm, output)) {return}
|
if (river && storm && field.Pane.Load(river+"."+storm, output)) {return}
|
||||||
|
|
||||||
pane.Event(event, {}, {name: pane.Zone("show", river, storm)})
|
pane.Event(event, {}, {name: pane.Zone("show", river, storm)})
|
||||||
pane.clear(), pane.Update([river, storm], "plugin", ["name", "help"], "name", true, function(line, index, event, args, cbs) {
|
output.innerHTML = "", pane.Appends([river, storm], "plugin", ["name", "help"], "name", true, function(line, index, event, args, cbs) {
|
||||||
kit.notNone(args) && pane.Core(event, line, args, cbs)
|
kit.notNone(args) && pane.Core(event, line, args, cbs)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -576,7 +576,7 @@ var page = Page({check: true,
|
|||||||
if (data) {return pane.which.set(data.which)}
|
if (data) {return pane.which.set(data.which)}
|
||||||
|
|
||||||
pane.Event(event, {}, {name: pane.Zone("show", river)})
|
pane.Event(event, {}, {name: pane.Zone("show", river)})
|
||||||
output.innerHTML = "", pane.Update([river], "text", ["key", "count"], "key", which||ctx.Search("storm")||true, null, function(msg) {
|
output.innerHTML = "", pane.Appends([river], "text", ["key", "count"], "key", which||ctx.Search("storm")||true, null, function(msg) {
|
||||||
pane.which.get() == "" && pane.Select(0, msg.key[0])
|
pane.which.get() == "" && pane.Select(0, msg.key[0])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -680,7 +680,7 @@ var page = Page({check: true,
|
|||||||
click: function(event) {last.parentNode.removeChild(last)},
|
click: function(event) {last.parentNode.removeChild(last)},
|
||||||
}]).last
|
}]).last
|
||||||
},
|
},
|
||||||
Update: function(list, pod) {var pane = field.Pane
|
Appends: function(list, pod) {var pane = field.Pane
|
||||||
kit.AppendChilds(device, [{text: ["2. 选择模块命令 ->", "caption"]}])
|
kit.AppendChilds(device, [{text: ["2. 选择模块命令 ->", "caption"]}])
|
||||||
kit.AppendTable(device, list, ["key", "index", "name", "help"], function(value, key, com, i, tr, event) {
|
kit.AppendTable(device, list, ["key", "index", "name", "help"], function(value, key, com, i, tr, event) {
|
||||||
pane.Select(com, pod)
|
pane.Select(com, pod)
|
||||||
@ -701,7 +701,7 @@ var page = Page({check: true,
|
|||||||
if (field.Pane.Load(river+"."+user+"."+node, device)) {return}
|
if (field.Pane.Load(river+"."+user+"."+node, device)) {return}
|
||||||
|
|
||||||
pane.Run(event, [river, pod.user, pod.node], function(msg) {
|
pane.Run(event, [river, pod.user, pod.node], function(msg) {
|
||||||
pane.Update(msg.Table(), pod)
|
pane.Appends(msg.Table(), pod)
|
||||||
})
|
})
|
||||||
}), table.querySelector("td").click()
|
}), table.querySelector("td").click()
|
||||||
},
|
},
|
||||||
|
@ -45,6 +45,9 @@ ctx = context = (function(kit) {var ctx = {__proto__: kit,
|
|||||||
kit.notNone(res) && (msg.result = (msg.result || []).concat(kit._call(kit.List, arguments)))
|
kit.notNone(res) && (msg.result = (msg.result || []).concat(kit._call(kit.List, arguments)))
|
||||||
return msg
|
return msg
|
||||||
},
|
},
|
||||||
|
Format: function() {
|
||||||
|
return msg.append && msg.append[0]? ["table", JSON.stringify(msg.Table())]: ["code", msg.result? msg.result.join(""): ""]
|
||||||
|
},
|
||||||
Result: function() {return msg.result? msg.result.join(""): ""},
|
Result: function() {return msg.result? msg.result.join(""): ""},
|
||||||
Results: function() {return kit.Color(msg.Result().replace(/</g, "<").replace(/>/g, ">"))},
|
Results: function() {return kit.Color(msg.Result().replace(/</g, "<").replace(/>/g, ">"))},
|
||||||
Table: function(cb) {if (!msg.append || !msg.append.length || !msg[msg.append[0]]) {return}
|
Table: function(cb) {if (!msg.append || !msg.append.length || !msg[msg.append[0]]) {return}
|
||||||
|
@ -317,6 +317,16 @@ fieldset.item.select {
|
|||||||
background-color:gold;
|
background-color:gold;
|
||||||
border:ridge 2px red;
|
border:ridge 2px red;
|
||||||
}
|
}
|
||||||
|
fieldset.item>form.option>div.item {
|
||||||
|
padding:0;
|
||||||
|
border:0;
|
||||||
|
}
|
||||||
|
fieldset.item>form.option>div.item:hover {
|
||||||
|
border:0;
|
||||||
|
}
|
||||||
|
fieldset.item>form.option>div.item.select {
|
||||||
|
border:0;
|
||||||
|
}
|
||||||
fieldset.item>div.output {
|
fieldset.item>div.output {
|
||||||
overflow:auto;
|
overflow:auto;
|
||||||
}
|
}
|
||||||
|
@ -87,6 +87,10 @@ function Meta(zone, target, obj) {
|
|||||||
})})
|
})})
|
||||||
break
|
break
|
||||||
|
|
||||||
|
case "input":
|
||||||
|
list.push(line)
|
||||||
|
break
|
||||||
|
|
||||||
case "field": text = JSON.parse(line.text)
|
case "field": text = JSON.parse(line.text)
|
||||||
case "plugin": if (!text.name) {return {}}
|
case "plugin": if (!text.name) {return {}}
|
||||||
var id = "plugin"+meta.ID()
|
var id = "plugin"+meta.ID()
|
||||||
@ -600,14 +604,28 @@ function Pane(page, field) {
|
|||||||
var option = field.querySelector("form.option")
|
var option = field.querySelector("form.option")
|
||||||
var action = field.querySelector("div.action")
|
var action = field.querySelector("div.action")
|
||||||
var output = field.querySelector("div.output")
|
var output = field.querySelector("div.output")
|
||||||
var itemkeys = "fieldset.item.select, div.item.select"
|
|
||||||
var itemkey = "fieldset.item, div.item"
|
|
||||||
|
|
||||||
var timer = ""
|
var timer = ""
|
||||||
var name = option.dataset.names
|
var name = option.dataset.names
|
||||||
var pane = Meta(page.Zone(name), field, (page[field.dataset.init] || function() {
|
var itemkey = "fieldset.item, div.item"
|
||||||
})(page, field, option, output) || {}, {
|
var itemkeys = "fieldset.item.select, div.item.select"
|
||||||
Append: function(type, line, key, which, cb) {type = type || line.type
|
|
||||||
|
var pane = Meta(page.Zone(name), field, (page[field.dataset.init] || function() {})(page, field, option, output) || {}, {
|
||||||
|
Appends: shy("添加列表", function(cmds, type, key, which, first, cb, cbs) {
|
||||||
|
pane.Runs(event, cmds, function(line, index, msg) {
|
||||||
|
var ui = pane.Append(type, line, key, which, cb)
|
||||||
|
if (typeof first == "string") {
|
||||||
|
(line.key == first || line.name == first || line[which] == first || line[key[0]] == first) && ui.item.click()
|
||||||
|
} else {
|
||||||
|
first && index == 0 && ui.item.click()
|
||||||
|
}
|
||||||
|
if (index == msg[msg.append[0]].length-1) {
|
||||||
|
kit.Selector(output, itemkeys).length == 0 && pane.Select(0)
|
||||||
|
kit._call(cbs, [msg])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
Append: shy("添加列表", function(type, line, key, which, cb) {type = type || line.type
|
||||||
var index = kit.Selector(output, itemkey).length
|
var index = kit.Selector(output, itemkey).length
|
||||||
var ui = pane.View(output, type, line, key)
|
var ui = pane.View(output, type, line, key)
|
||||||
|
|
||||||
@ -631,86 +649,10 @@ function Pane(page, field) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
return ui
|
return ui
|
||||||
},
|
}),
|
||||||
Update: function(cmds, type, key, which, first, cb, cbs) {
|
Select: shy("选择列表", function(index) {
|
||||||
pane.Runs(event, cmds, function(line, index, msg) {
|
|
||||||
var ui = pane.Append(type, line, key, which, cb)
|
|
||||||
if (typeof first == "string") {
|
|
||||||
(line.key == first || line.name == first || line[which] == first || line[key[0]] == first) && ui.item.click()
|
|
||||||
} else {
|
|
||||||
first && index == 0 && ui.item.click()
|
|
||||||
}
|
|
||||||
if (index == msg[msg.append[0]].length-1) {
|
|
||||||
kit.Selector(output, itemkeys).length == 0 && pane.Select(0)
|
|
||||||
kit._call(cbs, [msg])
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
Select: function(index) {
|
|
||||||
kit.Selector(output, itemkey, function(item, i) {i == index && item.click()})
|
kit.Selector(output, itemkey, function(item, i) {i == index && item.click()})
|
||||||
},
|
}),
|
||||||
clear: function() {output.innerHTML = ""},
|
|
||||||
|
|
||||||
Help: function(type, action) {
|
|
||||||
var text = []
|
|
||||||
switch (type) {
|
|
||||||
case "name":
|
|
||||||
case undefined:
|
|
||||||
text = [name]
|
|
||||||
break
|
|
||||||
case "list":
|
|
||||||
var list = []
|
|
||||||
for (var k in pane) {list.push(k)}
|
|
||||||
list.sort(), text = text.concat(list.map(function(item) {return "func: "+item+"\n"}))
|
|
||||||
|
|
||||||
var list = []
|
|
||||||
for (var k in pane.Action) {list.push(k)}
|
|
||||||
list.sort(), text = text.concat(list.map(function(item) {return "action: "+item+"\n"}))
|
|
||||||
break
|
|
||||||
}
|
|
||||||
return text
|
|
||||||
},
|
|
||||||
Jshy: function(event, args) {var msg = ctx.Event(event)
|
|
||||||
if (pane[args[0]] && pane[args[0]].type == "fieldset") {
|
|
||||||
msg.result = ["plugin", args[0]]
|
|
||||||
pane[args[0]].scrollIntoView(), pane[args[0]].Plugin.Select(true)
|
|
||||||
return pane[args[0]].Plugin.Jshy(event, args.slice(1))
|
|
||||||
}
|
|
||||||
if (typeof pane.Action[args[0]] == "function") {
|
|
||||||
msg.result = ["action", args[0]]
|
|
||||||
return kit._call(pane.Action[args[0]], [event, args[0]])
|
|
||||||
}
|
|
||||||
if (member[args[0]] != undefined) {
|
|
||||||
msg.result = ["item", args[0]]
|
|
||||||
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))
|
|
||||||
},
|
|
||||||
|
|
||||||
Tickers: function(time, cmds, cb) {
|
|
||||||
pane.Ticker(time, cmds, function(msg) {msg.Table(function(line, index) {
|
|
||||||
cb(line, index, msg)
|
|
||||||
})})
|
|
||||||
},
|
|
||||||
Ticker: function(time, cmds, cb) {timer && clearTimeout(timer)
|
|
||||||
function loop() {
|
|
||||||
event = document.createEvent("Event")
|
|
||||||
pane.Event(event, {}, {name: pane.Zone("ticker")})
|
|
||||||
!pane.Stop() && pane.Run(event, cmds, function(msg) {
|
|
||||||
cb(msg), timer = setTimeout(loop, time)
|
|
||||||
})}
|
|
||||||
time && (timer = setTimeout(loop, 10))
|
|
||||||
},
|
|
||||||
Runs: function(event, cmds, cb) {
|
|
||||||
pane.Run(event, cmds, function(msg) {msg.Table(function(line, index) {
|
|
||||||
(cb||pane.ondaemon)(line, index, msg)
|
|
||||||
})})
|
|
||||||
},
|
|
||||||
Run: function(event, cmds, cb) {
|
|
||||||
pane.Event(event, null, {name: pane.Zone(cmds[0])})
|
|
||||||
ctx.Run(event, option.dataset, cmds, cb||pane.ondaemon)
|
|
||||||
},
|
|
||||||
|
|
||||||
Show: function() {
|
Show: function() {
|
||||||
kit.ModifyView(field, {display: "block"})
|
kit.ModifyView(field, {display: "block"})
|
||||||
@ -751,19 +693,59 @@ function Pane(page, field) {
|
|||||||
delete(page.dialog)
|
delete(page.dialog)
|
||||||
return false
|
return false
|
||||||
},
|
},
|
||||||
which: page.Sync(name), Listen: {}, Action: {}, Button: [], Choice: [],
|
|
||||||
Plugin: Plugin,
|
|
||||||
|
|
||||||
onaction: shy("事件列表", {
|
Help: function(type, action) {
|
||||||
oncontextmenu: function(event) {
|
var text = []
|
||||||
pane.Choice && page.carte.Pane.Show(event, shy({}, pane.Choice, function(value, meta, event) {
|
switch (type) {
|
||||||
call(value, event)
|
case "name":
|
||||||
}))
|
case undefined:
|
||||||
|
text = [name]
|
||||||
|
break
|
||||||
|
case "list":
|
||||||
|
var list = []
|
||||||
|
for (var k in pane) {list.push(k)}
|
||||||
|
list.sort(), text = text.concat(list.map(function(item) {return "func: "+item+"\n"}))
|
||||||
|
|
||||||
|
var list = []
|
||||||
|
for (var k in pane.Action) {list.push(k)}
|
||||||
|
list.sort(), text = text.concat(list.map(function(item) {return "action: "+item+"\n"}))
|
||||||
|
break
|
||||||
|
}
|
||||||
|
return text
|
||||||
|
},
|
||||||
|
Jshy: function(event, args) {var msg = ctx.Event(event)
|
||||||
|
if (pane[args[0]] && pane[args[0]].type == "fieldset") {
|
||||||
|
msg.result = ["plugin", args[0]]
|
||||||
|
pane[args[0]].scrollIntoView(), pane[args[0]].Plugin.Select(true)
|
||||||
|
return pane[args[0]].Plugin.Jshy(event, args.slice(1))
|
||||||
|
}
|
||||||
|
if (typeof pane.Action[args[0]] == "function") {
|
||||||
|
msg.result = ["action", args[0]]
|
||||||
|
return kit._call(pane.Action[args[0]], [event, args[0]])
|
||||||
|
}
|
||||||
|
if (member[args[0]] != undefined) {
|
||||||
|
msg.result = ["item", args[0]]
|
||||||
|
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))
|
||||||
},
|
},
|
||||||
}, function(event, key, cb) {cb(event)}),
|
|
||||||
})
|
|
||||||
|
|
||||||
function call(value, event) {
|
Tickers: shy("定时刷新", function(time, cmds, cb) {
|
||||||
|
pane.Ticker(time, cmds, function(msg) {msg.Table(function(line, index) {
|
||||||
|
cb(line, index, msg)
|
||||||
|
})})
|
||||||
|
}),
|
||||||
|
Ticker: shy("定时刷新", function(time, cmds, cb) {timer && clearTimeout(timer)
|
||||||
|
function loop() {
|
||||||
|
event = document.createEvent("Event")
|
||||||
|
pane.Event(event, {}, {name: pane.Zone("ticker")})
|
||||||
|
!pane.Stop() && pane.Run(event, cmds, function(msg) {
|
||||||
|
cb(msg), timer = setTimeout(loop, time)
|
||||||
|
})}
|
||||||
|
time && (timer = setTimeout(loop, 10))
|
||||||
|
}),
|
||||||
|
Check: shy("执行操作", function (event, value) {
|
||||||
// Event入口 1.1
|
// Event入口 1.1
|
||||||
pane.Event(event, {}, {name: pane.Zone("click", value)})
|
pane.Event(event, {}, {name: pane.Zone("click", value)})
|
||||||
page.script("record", [name, value])
|
page.script("record", [name, value])
|
||||||
@ -777,13 +759,33 @@ function Pane(page, field) {
|
|||||||
} else if (typeof pane[value] == "function") {
|
} else if (typeof pane[value] == "function") {
|
||||||
kit._call(pane[value], [event, value])
|
kit._call(pane[value], [event, value])
|
||||||
}
|
}
|
||||||
}
|
}),
|
||||||
kit.AppendAction(action, pane.Button, call)
|
Runs: shy("执行命令", function(event, cmds, cb) {
|
||||||
|
pane.Run(event, cmds, function(msg) {msg.Table(function(line, index) {
|
||||||
|
(cb||pane.ondaemon)(line, index, msg)
|
||||||
|
})})
|
||||||
|
}),
|
||||||
|
Run: shy("执行命令", function(event, cmds, cb) {
|
||||||
|
pane.Event(event, null, {name: pane.Zone(cmds[0])})
|
||||||
|
ctx.Run(event, option.dataset, cmds, cb||pane.ondaemon)
|
||||||
|
}),
|
||||||
|
|
||||||
|
onaction: shy("事件列表", {
|
||||||
|
oncontextmenu: function(event) {
|
||||||
|
pane.Choice && page.carte.Pane.Show(event, shy({}, pane.Choice, function(value, meta, event) {
|
||||||
|
pane.Check(event, value)
|
||||||
|
}))
|
||||||
|
},
|
||||||
|
}, function(event, key, cb) {cb(event)}),
|
||||||
|
which: page.Sync(name), Listen: {}, Action: {}, Button: [], Choice: [],
|
||||||
|
Plugin: Plugin,
|
||||||
|
})
|
||||||
|
|
||||||
|
kit.AppendAction(action, pane.Button, pane.Check)
|
||||||
kit.Item(pane.Listen, function(key, cb) {page.Sync(key).change(cb)})
|
kit.Item(pane.Listen, function(key, cb) {page.Sync(key).change(cb)})
|
||||||
option.onsubmit = function(event) {event.preventDefault()};
|
|
||||||
kit.Log("init", "pane", name, pane)
|
kit.Log("init", "pane", name, pane)
|
||||||
return page[name] = field, pane.Field = field, field.Pane = pane
|
return page[name] = field, field.Pane = pane
|
||||||
}
|
}
|
||||||
function Plugin(page, pane, field, inits, runs) {
|
function Plugin(page, pane, field, inits, runs) {
|
||||||
var option = field.querySelector("form.option")
|
var option = field.querySelector("form.option")
|
||||||
@ -797,23 +799,12 @@ function Plugin(page, pane, field, inits, runs) {
|
|||||||
kit.classList.add(field, meta.group, name, feature.style)
|
kit.classList.add(field, meta.group, name, feature.style)
|
||||||
|
|
||||||
var plugin = Meta(pane.Zone(name), field, inits && inits(field, option, output) || {}, {Inputs: {},
|
var plugin = Meta(pane.Zone(name), field, inits && inits(field, option, output) || {}, {Inputs: {},
|
||||||
Appends: function() {
|
Appends: shy("添加控件", function(inputs) {
|
||||||
|
if (inputs) {return inputs.map(function(item) {plugin.Append(item)})}
|
||||||
|
|
||||||
var name = "args"+kit.Selector(option, "input.args.temp").length
|
var name = "args"+kit.Selector(option, "input.args.temp").length
|
||||||
plugin.Append({type: "text", name: name, className: "args temp"}).focus()
|
plugin.Append({type: "text", name: name, className: "args temp"}).focus()
|
||||||
},
|
}),
|
||||||
Change: function(target, cb) {
|
|
||||||
var value = target.value
|
|
||||||
function reset(event) {
|
|
||||||
value != event.target.value && kit._call(cb, [event.target.value, value])
|
|
||||||
target.innerHTML = event.target.value
|
|
||||||
}
|
|
||||||
kit.AppendChilds(target, [{type: "input", value: target.innerText, data: {
|
|
||||||
onblur: reset,
|
|
||||||
onkeydown: function(event) {
|
|
||||||
page.oninput(event), event.key == "Enter" && reset(event)
|
|
||||||
},
|
|
||||||
}}]).last.focus()
|
|
||||||
},
|
|
||||||
Append: shy("添加控件", function(item, name, value) {
|
Append: shy("添加控件", function(item, name, value) {
|
||||||
var count = kit.Selector(option, ".args").length
|
var count = kit.Selector(option, ".args").length
|
||||||
args && count < args.length && (value = value || args[count] || "")
|
args && count < args.length && (value = value || args[count] || "")
|
||||||
@ -837,17 +828,9 @@ function Plugin(page, pane, field, inits, runs) {
|
|||||||
item.autocomplete = "off"
|
item.autocomplete = "off"
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
return Inputs(plugin, input, item, kit.AppendChild(option, [{view: [item.view||""], list: [{type: "label", inner: item.label||""}, input]}])[input.name]).target
|
return Inputs(plugin, input, item, plugin.View(option, "input", input)[input.name]).target
|
||||||
}),
|
}),
|
||||||
Remove: function() {
|
Select: shy("选择控件", function(target) {
|
||||||
var list = option.querySelectorAll("input.temp")
|
|
||||||
list.length > 0 && (option.removeChild(list[list.length-1].parentNode))
|
|
||||||
},
|
|
||||||
Delete: function() {
|
|
||||||
field.previousSibling.Plugin.Select()
|
|
||||||
field.parentNode.removeChild(field)
|
|
||||||
},
|
|
||||||
Select: function(target) {
|
|
||||||
page.plugin && (kit.classList.del(page.plugin, "select"))
|
page.plugin && (kit.classList.del(page.plugin, "select"))
|
||||||
page.plugin = field, kit.classList.add(field, "select")
|
page.plugin = field, kit.classList.add(field, "select")
|
||||||
pane.which.set(name)
|
pane.which.set(name)
|
||||||
@ -855,20 +838,26 @@ function Plugin(page, pane, field, inits, runs) {
|
|||||||
page.input = target || option.querySelectorAll("input")[1]
|
page.input = target || option.querySelectorAll("input")[1]
|
||||||
plugin.which.set(page.input.name)
|
plugin.which.set(page.input.name)
|
||||||
page.input.focus()
|
page.input.focus()
|
||||||
},
|
}),
|
||||||
Reveal: function(msg) {
|
Remove: shy("删除控件", function() {
|
||||||
return msg.append && msg.append[0]? ["table", JSON.stringify(msg.Table())]: ["code", msg.result? msg.result.join(""): ""]
|
var list = option.querySelectorAll("input.temp")
|
||||||
},
|
list.length > 0 && (option.removeChild(list[list.length-1].parentNode))
|
||||||
Format: function() {
|
}),
|
||||||
|
|
||||||
|
Delete: shy("删除插件", function() {
|
||||||
|
plugin.Prev().Plugin.Select(), field.parentNode.removeChild(field)
|
||||||
|
}),
|
||||||
|
Reveal: shy("导出插件", function() {
|
||||||
field.Meta.args = arguments.length > 0? kit.List(arguments):
|
field.Meta.args = arguments.length > 0? kit.List(arguments):
|
||||||
kit.Selector(option, ".args", function(item) {return item.value})
|
kit.Selector(option, ".args", function(item) {return item.value})
|
||||||
return JSON.stringify(field.Meta)
|
return JSON.stringify(field.Meta)
|
||||||
},
|
}),
|
||||||
Clone: function() {
|
Clone: shy("复制插件", function() {
|
||||||
return pane.Append("field", {text: plugin.Format()}, [], "", function(line, index, event, cmds, cbs) {
|
return pane.Append("field", {text: plugin.Reveal()}, [], "", function(line, index, event, cmds, cbs) {
|
||||||
plugin.Run(event, cmds, cbs, true)
|
plugin.Run(event, cmds, cbs, true)
|
||||||
}).item.Plugin.Select()
|
}).item.Plugin.Select()
|
||||||
},
|
}),
|
||||||
|
|
||||||
Next: function() {
|
Next: function() {
|
||||||
return field.nextSibling || field.parentNode.firstChild
|
return field.nextSibling || field.parentNode.firstChild
|
||||||
},
|
},
|
||||||
@ -876,27 +865,6 @@ function Plugin(page, pane, field, inits, runs) {
|
|||||||
return field.previousSibling || field.parentNode.lastChild
|
return field.previousSibling || field.parentNode.lastChild
|
||||||
},
|
},
|
||||||
|
|
||||||
getLocation: function(event) {
|
|
||||||
var x = parseFloat(option.x.value)
|
|
||||||
var y = parseFloat(option.y.value)
|
|
||||||
page.getLocation && page.getLocation(function(res) {
|
|
||||||
plugin.ondaemon({
|
|
||||||
append: ["longitude", "latitude", "accuracy", "speed"],
|
|
||||||
longitude: [res.longitude+x+""],
|
|
||||||
latitude: [res.latitude+y+""],
|
|
||||||
accuracy: [res.accuracy+""],
|
|
||||||
speed: [res.speed+""],
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
openLocation: function(event) {
|
|
||||||
var x = parseFloat(option.x.value)
|
|
||||||
var y = parseFloat(option.y.value)
|
|
||||||
page.getLocation && page.getLocation(function(res) {
|
|
||||||
page.openLocation && page.openLocation(res.latitude+y, res.longitude+x, option.pos.value)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
Help: function(type, action) {
|
Help: function(type, action) {
|
||||||
var text = []
|
var text = []
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@ -936,60 +904,32 @@ function Plugin(page, pane, field, inits, runs) {
|
|||||||
return kit._call(plugin.Runs, [event])
|
return kit._call(plugin.Runs, [event])
|
||||||
},
|
},
|
||||||
|
|
||||||
|
ontoast: function() {kit._call(page.toast.Pane.Show, arguments)},
|
||||||
|
oncarte: function() {kit._call(page.carte.Pane.Show, arguments)},
|
||||||
|
|
||||||
Option: function(key, value) {
|
Option: function(key, value) {
|
||||||
kit.notNone(value) && option[key] && (option[key].value = value)
|
kit.notNone(value) && option[key] && (option[key].value = value)
|
||||||
return option[key]? option[key].value: ""
|
return kit.notNone(key)? (option[key]? option[key].value: ""):
|
||||||
|
kit.Selector(option, ".args", function(item, index) {return item.value})
|
||||||
},
|
},
|
||||||
Check: function(event, target, cb) {
|
Delay: shy("延时命令", function(time, event, text) {plugin.ontoast(text, "", -1)
|
||||||
|
return setTimeout(function() {plugin.Runs(event)}, time)
|
||||||
|
}),
|
||||||
|
Check: shy("检查命令", function(event, target, cb) {
|
||||||
kit.Selector(option, ".args", function(item, index, list) {
|
kit.Selector(option, ".args", function(item, index, list) {
|
||||||
kit.isNone(target)? index == list.length-1 && plugin.Runs(event, cb):
|
kit.isNone(target)? index == list.length-1 && plugin.Runs(event, cb):
|
||||||
item == target && (index == list.length-1? plugin.Runs(event, cb): page.plugin == field && list[index+1].focus())
|
item == target && (index == list.length-1? plugin.Runs(event, cb): page.plugin == field && list[index+1].focus())
|
||||||
return item
|
return item
|
||||||
}).length == 0 && plugin.Runs(event, cb)
|
}).length == 0 && plugin.Runs(event, cb)
|
||||||
},
|
}),
|
||||||
Delay: function(time, event, text) {
|
Last: shy("历史命令", function() {kit.notNone(plugin.History()) && plugin.Check(event)}),
|
||||||
plugin.ontoast(text, "", -1)
|
Runs: shy("执行命令", function(event, cb) {plugin.Run(event, plugin.Option(), cb)}),
|
||||||
return setTimeout(function() {
|
Run: shy("执行命令", function(event, args, cb, silent) {var show = true
|
||||||
plugin.Runs(event), plugin.ontoast("")
|
|
||||||
}, time)
|
|
||||||
},
|
|
||||||
Last: function() {kit.notNone(plugin.History()) && plugin.Check(event)},
|
|
||||||
Runs: function(event, cb) {plugin.Run(event, kit.Selector(option, ".args", function(item, index) {return item.value}), cb)},
|
|
||||||
Run: function(event, args, cb, silent) {var show = true
|
|
||||||
page.script("record", ["action", name].concat(args))
|
page.script("record", ["action", name].concat(args))
|
||||||
setTimeout(function() {show && plugin.ontoast(kit.Format(args||["running..."]), meta.name, -1)}, 1000)
|
setTimeout(function() {show && plugin.ontoast(kit.Format(args||["running..."]), meta.name, -1)}, 1000)
|
||||||
event.Plugin = plugin, runs(event, args, function(msg) {
|
event.Plugin = plugin, runs(event, args, function(msg) {
|
||||||
silent? kit._call(cb, [msg]): plugin.ondaemon(msg, cb), show = false, plugin.ontoast()
|
silent? kit._call(cb, [msg]): plugin.ondaemon(msg, cb), show = false, plugin.ontoast()
|
||||||
})
|
})
|
||||||
},
|
|
||||||
clear: function() {output.innerHTML = ""},
|
|
||||||
Download: function() {
|
|
||||||
var type = ".csv", text = kit.Selector(output, "tr", function(tr) {
|
|
||||||
return kit.Selector(tr, "td,th", function(td) {
|
|
||||||
return td.innerText
|
|
||||||
}).join(",")
|
|
||||||
}).join("\n")
|
|
||||||
!text && (type = ".txt", text = plugin.msg.result.join(""))
|
|
||||||
|
|
||||||
plugin.ontoast({text:'<a href="'+URL.createObjectURL(new Blob([text]))+'" target="_blank" download="'+name+type+'">'+name+type+'</a>', title: "下载中...", width: 200})
|
|
||||||
kit.Selector(page.toast, "a", function(item) {item.click()})
|
|
||||||
},
|
|
||||||
upload: function(event) {
|
|
||||||
ctx.Upload({river: meta.river, table: plugin.Option("table")}, option.upload.files[0], function(event, msg) {
|
|
||||||
Output(plugin, "table", msg, null, output, option)
|
|
||||||
plugin.ontoast("上传成功")
|
|
||||||
}, function(event) {
|
|
||||||
plugin.ontoast("上传进度 "+parseInt(event.loaded*100/event.total)+"%")
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
ontoast: function() {kit._call(page.toast.Pane.Show, arguments)},
|
|
||||||
oncarte: function() {kit._call(page.carte.Pane.Show, arguments)},
|
|
||||||
onformat: shy("数据转换", {
|
|
||||||
none: function(value) {return value||""},
|
|
||||||
date: function(value) {return kit.time()},
|
|
||||||
}, function(which, value) {var meta = arguments.callee.meta
|
|
||||||
return (meta[which||"none"]||meta["none"])(value)
|
|
||||||
}),
|
}),
|
||||||
|
|
||||||
ondaemon: shy("接收数据", function(msg, cb) {
|
ondaemon: shy("接收数据", function(msg, cb) {
|
||||||
@ -1024,15 +964,50 @@ function Plugin(page, pane, field, inits, runs) {
|
|||||||
}, function(event, key, cb) {cb(event)}),
|
}, function(event, key, cb) {cb(event)}),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
plugin.Appends(inputs)
|
||||||
plugin.which = plugin.Sync("input")
|
plugin.which = plugin.Sync("input")
|
||||||
page[field.id] = pane[field.id] = pane[name] = field, field.Plugin = plugin
|
|
||||||
inputs.map(function(item) {plugin.Append(item)})
|
|
||||||
kit.Log("init", "plugin", name, plugin)
|
kit.Log("init", "plugin", name, plugin)
|
||||||
return plugin
|
return page[field.id] = pane[field.id] = pane[name] = field, field.Plugin = plugin
|
||||||
}
|
}
|
||||||
function Inputs(plugin, meta, item, target) {
|
function Inputs(plugin, meta, item, target) {
|
||||||
var plug = meta.plug, name = meta.name, type = item.type
|
var plug = meta.plug, name = meta.name, type = item.type
|
||||||
var input = Meta(plugin.Zone(name), target, item, {
|
var input = Meta(plugin.Zone(name), target, item, {
|
||||||
|
getLocation: function(event) {
|
||||||
|
var x = parseFloat(option.x.value)
|
||||||
|
var y = parseFloat(option.y.value)
|
||||||
|
page.getLocation && page.getLocation(function(res) {
|
||||||
|
plugin.ondaemon({
|
||||||
|
append: ["longitude", "latitude", "accuracy", "speed"],
|
||||||
|
longitude: [res.longitude+x+""],
|
||||||
|
latitude: [res.latitude+y+""],
|
||||||
|
accuracy: [res.accuracy+""],
|
||||||
|
speed: [res.speed+""],
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
openLocation: function(event) {
|
||||||
|
var x = parseFloat(option.x.value)
|
||||||
|
var y = parseFloat(option.y.value)
|
||||||
|
page.getLocation && page.getLocation(function(res) {
|
||||||
|
page.openLocation && page.openLocation(res.latitude+y, res.longitude+x, option.pos.value)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
upload: function(event) {
|
||||||
|
ctx.Upload({river: meta.river, table: plugin.Option("table")}, option.upload.files[0], function(event, msg) {
|
||||||
|
Output(plugin, "table", msg, null, output, option)
|
||||||
|
plugin.ontoast("上传成功")
|
||||||
|
}, function(event) {
|
||||||
|
plugin.ontoast("上传进度 "+parseInt(event.loaded*100/event.total)+"%")
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onformat: shy("数据转换", {
|
||||||
|
none: function(value) {return value||""},
|
||||||
|
date: function(value) {return kit.time()},
|
||||||
|
}, function(which, value) {var meta = arguments.callee.meta
|
||||||
|
return (meta[which||"none"]||meta["none"])(value)
|
||||||
|
}),
|
||||||
onimport: shy("导入数据", {}, [item.imports], function() {
|
onimport: shy("导入数据", {}, [item.imports], function() {
|
||||||
kit.List(arguments.callee.list, function(imports) {
|
kit.List(arguments.callee.list, function(imports) {
|
||||||
page.Sync(imports).change(function(value) {
|
page.Sync(imports).change(function(value) {
|
||||||
@ -1136,7 +1111,7 @@ function Inputs(plugin, meta, item, target) {
|
|||||||
}, plugin)
|
}, plugin)
|
||||||
|
|
||||||
input.onimport()
|
input.onimport()
|
||||||
target.value = plugin.onformat(item.init, item.value)
|
target.value = input.onformat(item.init, item.value)
|
||||||
plugin.Inputs[item.name] = target, target.Input = input
|
plugin.Inputs[item.name] = target, target.Input = input
|
||||||
type == "text" && !target.placeholder && item.name && (target.placeholder = item.name)
|
type == "text" && !target.placeholder && item.name && (target.placeholder = item.name)
|
||||||
!target.title && item.placeholder && (target.title = item.placeholder)
|
!target.title && item.placeholder && (target.title = item.placeholder)
|
||||||
@ -1148,6 +1123,19 @@ function Output(plugin, type, msg, cb, target, option) {
|
|||||||
var output = Meta(plugin.Zone(type), target, {
|
var output = Meta(plugin.Zone(type), target, {
|
||||||
_table: function() {plugin.onfigure("table")},
|
_table: function() {plugin.onfigure("table")},
|
||||||
_canvas: function() {plugin.onfigure("canvas")},
|
_canvas: function() {plugin.onfigure("canvas")},
|
||||||
|
clear: function() {target.innerHTML = ""},
|
||||||
|
|
||||||
|
Download: function() {
|
||||||
|
var type = ".csv", text = kit.Selector(output, "tr", function(tr) {
|
||||||
|
return kit.Selector(tr, "td,th", function(td) {
|
||||||
|
return td.innerText
|
||||||
|
}).join(",")
|
||||||
|
}).join("\n")
|
||||||
|
!text && (type = ".txt", text = plugin.msg.result.join(""))
|
||||||
|
|
||||||
|
plugin.ontoast({text:'<a href="'+URL.createObjectURL(new Blob([text]))+'" target="_blank" download="'+name+type+'">'+name+type+'</a>', title: "下载中...", width: 200})
|
||||||
|
kit.Selector(page.toast, "a", function(item) {item.click()})
|
||||||
|
},
|
||||||
onexport: shy("导出数据", {
|
onexport: shy("导出数据", {
|
||||||
"": function(value, name, line) {
|
"": function(value, name, line) {
|
||||||
return value
|
return value
|
||||||
|
@ -158,13 +158,13 @@ kit = toolkit = (function() {var kit = {__proto__: document,
|
|||||||
if (kit.notNone(child.button)) {var list = kit.List(child.button)
|
if (kit.notNone(child.button)) {var list = kit.List(child.button)
|
||||||
type = "button", name = name || list[0]
|
type = "button", name = name || list[0]
|
||||||
data.innerText = list[0], data.onclick = function(event) {
|
data.innerText = list[0], data.onclick = function(event) {
|
||||||
kit._call(list[1], [list[0], event])
|
kit._call(list[1], [event, list[0]])
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (child.select) {var list = child.select
|
} else if (child.select) {var list = child.select
|
||||||
type = "select", name = name || list[0][0]
|
type = "select", name = name || list[0][0]
|
||||||
data.onchange = function(event) {
|
data.onchange = function(event) {
|
||||||
kit._call(list[1], [event.target.value, event])
|
kit._call(list[1], [event, event.target.value])
|
||||||
}
|
}
|
||||||
child.list = list[0].slice(1).map(function(value) {
|
child.list = list[0].slice(1).map(function(value) {
|
||||||
return {type: "option", value: value, inner: value}
|
return {type: "option", value: value, inner: value}
|
||||||
@ -280,9 +280,9 @@ kit = toolkit = (function() {var kit = {__proto__: document,
|
|||||||
return kit.AppendChild(parent, kit.List(list, function(item, index) {
|
return kit.AppendChild(parent, kit.List(list, function(item, index) {
|
||||||
return item === ""? {view: ["space"]}:
|
return item === ""? {view: ["space"]}:
|
||||||
typeof item == "string"? {view: ["item", "div", item], click: function(event) {
|
typeof item == "string"? {view: ["item", "div", item], click: function(event) {
|
||||||
kit._call(cb, [item, event])
|
kit._call(cb, [event, item])
|
||||||
}}: item.forEach? {view: item[0], list: kit.List(item.slice(1), function(value) {return {text: [value, "div", "item"], click: function(event) {
|
}}: item.forEach? {view: item[0], list: kit.List(item.slice(1), function(value) {return {text: [value, "div", "item"], click: function(event) {
|
||||||
kit._call(cb, [value, event])
|
kit._call(cb, [event, value])
|
||||||
}}})}: item
|
}}})}: item
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
@ -363,6 +363,19 @@ kit = toolkit = (function() {var kit = {__proto__: document,
|
|||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
|
Change: function(target, cb) {
|
||||||
|
var value = target.value
|
||||||
|
function reset(event) {
|
||||||
|
value != event.target.value && kit._call(cb, [event.target.value, value])
|
||||||
|
target.innerHTML = event.target.value
|
||||||
|
}
|
||||||
|
kit.AppendChilds(target, [{type: "input", value: target.innerText, data: {
|
||||||
|
onblur: reset,
|
||||||
|
onkeydown: function(event) {
|
||||||
|
page.oninput(event), event.key == "Enter" && reset(event)
|
||||||
|
},
|
||||||
|
}}]).last.focus()
|
||||||
|
},
|
||||||
|
|
||||||
// HTML显示文本
|
// HTML显示文本
|
||||||
OrderCode: function(code) {if (!code) {return}
|
OrderCode: function(code) {if (!code) {return}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user