diff --git a/src/plugin/love/index.js b/src/plugin/love/index.js
index 659ed1a7..b24bf41b 100644
--- a/src/plugin/love/index.js
+++ b/src/plugin/love/index.js
@@ -35,7 +35,7 @@ Plugin["love/index.js"] = function(field, option, output) {return {
})
break
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) {
kit.Log("ok")
})
diff --git a/src/plugin/mind/index.js b/src/plugin/mind/index.js
index 12e78022..4e901949 100644
--- a/src/plugin/mind/index.js
+++ b/src/plugin/mind/index.js
@@ -1,56 +1,54 @@
Plugin["mind/index.js"] = function(field, option, output) {return {
- ondaemon: {
- table: function(msg, cb) {if (msg.event && msg.event.type == "blur") {return}
- 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) {
- if (name == "id") {
- page.Sync("plugin_"+plugin.exports[0]).set(plugin.onexport[plugin.exports[2]||""](value, name, line))
+ onfigure: shy(function(type, msg, cb) {if (msg.event && msg.event.type == "blur") {return}
+ var plugin = field.Plugin
+ 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") {
+ page.Sync("plugin_"+plugin.exports[0]).set(plugin.onexport[plugin.exports[2]||""](value, name, line))
- } else {
- var td = event.target
- function submit(event) {
- (td.innerText = event.target.value) != value && plugin.Run(event, [option.title.value, name, index-1, event.target.value], plugin.Check)
- }
-
- kit.AppendChilds(td, [{type: "input", value: value, data: {onblur: submit, onkeyup: function(event) {
- switch (event.key) {
- case "Enter":
- case "Tab":
- break
- default:
- return
- }
- event.stopPropagation()
- event.preventDefault()
-
- }, onkeydown: function(event) {
- switch (event.key) {
- case "Enter":
- td.parentNode[event.shiftKey?"previousSibling":"nextSibling"].querySelector("td").click()
- break
- case "Tab":
- if (event.shiftKey) {
- if (td.previousSibling) {
- td.previousSibling.click()
- } else {
- td.parentNode.previousSibling.querySelector("td").click()
- }
- } else {
- if (td.nextSibling) {
- td.nextSibling.click()
- } else {
- td.parentNode.nextSibling.querySelector("td").click()
- }
- }
- break
- default:
- return
- }
- event.stopPropagation()
- event.preventDefault()
- }}}]).first.focus()
+ } else {
+ var td = event.target
+ function submit(event) {
+ (td.innerText = event.target.value) != value && plugin.Run(event, [option.title.value, name, index-1, event.target.value], plugin.Check)
}
- }), typeof cb == "function" && cb(msg)
- },
- },
+
+ kit.AppendChilds(td, [{type: "input", value: value, data: {onblur: submit, onkeyup: function(event) {
+ switch (event.key) {
+ case "Enter":
+ case "Tab":
+ break
+ default:
+ return
+ }
+ event.stopPropagation()
+ event.preventDefault()
+
+ }, onkeydown: function(event) {
+ switch (event.key) {
+ case "Enter":
+ td.parentNode[event.shiftKey?"previousSibling":"nextSibling"].querySelector("td").click()
+ break
+ case "Tab":
+ if (event.shiftKey) {
+ if (td.previousSibling) {
+ td.previousSibling.click()
+ } else {
+ td.parentNode.previousSibling.querySelector("td").click()
+ }
+ } else {
+ if (td.nextSibling) {
+ td.nextSibling.click()
+ } else {
+ td.parentNode.nextSibling.querySelector("td").click()
+ }
+ }
+ break
+ default:
+ return
+ }
+ event.stopPropagation()
+ event.preventDefault()
+ }}}]).first.focus()
+ }
+ }), typeof cb == "function" && cb(msg)
+ }),
}}
diff --git a/usr/librarys/chat.js b/usr/librarys/chat.js
index 6c964ac4..1372da79 100644
--- a/usr/librarys/chat.js
+++ b/usr/librarys/chat.js
@@ -183,7 +183,7 @@ var page = Page({check: true,
return {
Show: function(which) {var pane = field.Pane
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: {
"创建": function(event) {
@@ -419,10 +419,10 @@ var page = Page({check: true,
},
_msg: function(msg) {
if (msg) {
- var text = plugin? plugin.Reveal(msg): ""
+ var text = msg.Format()
text && event.ctrlKey && page.target.Pane.Send(text[0], text[1])
} else {
- page.target.Pane.Send("field", plugin.Format())
+ page.target.Pane.Send("field", plugin.Reveal())
}
},
_run: function() {
@@ -439,7 +439,7 @@ var page = Page({check: true,
if (river && storm && field.Pane.Load(river+"."+storm, output)) {return}
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)
})
},
@@ -576,7 +576,7 @@ var page = Page({check: true,
if (data) {return pane.which.set(data.which)}
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])
})
},
@@ -680,7 +680,7 @@ var page = Page({check: true,
click: function(event) {last.parentNode.removeChild(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.AppendTable(device, list, ["key", "index", "name", "help"], function(value, key, com, i, tr, event) {
pane.Select(com, pod)
@@ -701,7 +701,7 @@ var page = Page({check: true,
if (field.Pane.Load(river+"."+user+"."+node, device)) {return}
pane.Run(event, [river, pod.user, pod.node], function(msg) {
- pane.Update(msg.Table(), pod)
+ pane.Appends(msg.Table(), pod)
})
}), table.querySelector("td").click()
},
diff --git a/usr/librarys/context.js b/usr/librarys/context.js
index 40921376..3175f604 100644
--- a/usr/librarys/context.js
+++ b/usr/librarys/context.js
@@ -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)))
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(""): ""},
Results: function() {return kit.Color(msg.Result().replace(//g, ">"))},
Table: function(cb) {if (!msg.append || !msg.append.length || !msg[msg.append[0]]) {return}
diff --git a/usr/librarys/example.css b/usr/librarys/example.css
index 3ad35086..dd97869c 100644
--- a/usr/librarys/example.css
+++ b/usr/librarys/example.css
@@ -317,6 +317,16 @@ fieldset.item.select {
background-color:gold;
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 {
overflow:auto;
}
diff --git a/usr/librarys/example.js b/usr/librarys/example.js
index af945a9f..321b6d7d 100644
--- a/usr/librarys/example.js
+++ b/usr/librarys/example.js
@@ -87,6 +87,10 @@ function Meta(zone, target, obj) {
})})
break
+ case "input":
+ list.push(line)
+ break
+
case "field": text = JSON.parse(line.text)
case "plugin": if (!text.name) {return {}}
var id = "plugin"+meta.ID()
@@ -600,14 +604,28 @@ function Pane(page, field) {
var option = field.querySelector("form.option")
var action = field.querySelector("div.action")
var output = field.querySelector("div.output")
- var itemkeys = "fieldset.item.select, div.item.select"
- var itemkey = "fieldset.item, div.item"
var timer = ""
var name = option.dataset.names
- var pane = Meta(page.Zone(name), field, (page[field.dataset.init] || function() {
- })(page, field, option, output) || {}, {
- Append: function(type, line, key, which, cb) {type = type || line.type
+ var itemkey = "fieldset.item, div.item"
+ var itemkeys = "fieldset.item.select, div.item.select"
+
+ 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 ui = pane.View(output, type, line, key)
@@ -631,86 +649,10 @@ function Pane(page, field) {
})
}
return ui
- },
- Update: 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])
- }
- })
- },
- Select: function(index) {
+ }),
+ Select: shy("选择列表", function(index) {
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() {
kit.ModifyView(field, {display: "block"})
@@ -751,39 +693,99 @@ function Pane(page, field) {
delete(page.dialog)
return false
},
- which: page.Sync(name), Listen: {}, Action: {}, Button: [], Choice: [],
- Plugin: Plugin,
+
+ 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: 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
+ pane.Event(event, {}, {name: pane.Zone("click", value)})
+ page.script("record", [name, value])
+
+ if (pane.Action && pane.Action.meta && typeof pane.Action.meta[value] == "function") {
+ kit._call(pane.Action.meta[value], [event, value])
+ } else if (pane.Action && typeof pane.Action[value] == "function") {
+ kit._call(pane.Action[value], [event, value])
+ } else if (typeof pane.Action == "function") {
+ kit._call(pane.Action, [event, value])
+ } else if (typeof pane[value] == "function") {
+ kit._call(pane[value], [event, value])
+ }
+ }),
+ 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) {
- call(value, event)
+ pane.Check(event, value)
}))
},
}, function(event, key, cb) {cb(event)}),
+ which: page.Sync(name), Listen: {}, Action: {}, Button: [], Choice: [],
+ Plugin: Plugin,
})
- function call(value, event) {
- // Event入口 1.1
- pane.Event(event, {}, {name: pane.Zone("click", value)})
- page.script("record", [name, value])
-
- if (pane.Action && pane.Action.meta && typeof pane.Action.meta[value] == "function") {
- kit._call(pane.Action.meta[value], [event, value])
- } else if (pane.Action && typeof pane.Action[value] == "function") {
- kit._call(pane.Action[value], [event, value])
- } else if (typeof pane.Action == "function") {
- kit._call(pane.Action, [event, value])
- } else if (typeof pane[value] == "function") {
- kit._call(pane[value], [event, value])
- }
- }
- kit.AppendAction(action, pane.Button, call)
-
+ kit.AppendAction(action, pane.Button, pane.Check)
kit.Item(pane.Listen, function(key, cb) {page.Sync(key).change(cb)})
- option.onsubmit = function(event) {event.preventDefault()};
+
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) {
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)
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
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) {
var count = kit.Selector(option, ".args").length
args && count < args.length && (value = value || args[count] || "")
@@ -837,17 +828,9 @@ function Plugin(page, pane, field, inits, runs) {
item.autocomplete = "off"
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() {
- 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) {
+ Select: shy("选择控件", function(target) {
page.plugin && (kit.classList.del(page.plugin, "select"))
page.plugin = field, kit.classList.add(field, "select")
pane.which.set(name)
@@ -855,20 +838,26 @@ function Plugin(page, pane, field, inits, runs) {
page.input = target || option.querySelectorAll("input")[1]
plugin.which.set(page.input.name)
page.input.focus()
- },
- Reveal: function(msg) {
- return msg.append && msg.append[0]? ["table", JSON.stringify(msg.Table())]: ["code", msg.result? msg.result.join(""): ""]
- },
- Format: function() {
+ }),
+ Remove: shy("删除控件", function() {
+ var list = option.querySelectorAll("input.temp")
+ list.length > 0 && (option.removeChild(list[list.length-1].parentNode))
+ }),
+
+ Delete: shy("删除插件", function() {
+ plugin.Prev().Plugin.Select(), field.parentNode.removeChild(field)
+ }),
+ Reveal: shy("导出插件", function() {
field.Meta.args = arguments.length > 0? kit.List(arguments):
kit.Selector(option, ".args", function(item) {return item.value})
return JSON.stringify(field.Meta)
- },
- Clone: function() {
- return pane.Append("field", {text: plugin.Format()}, [], "", function(line, index, event, cmds, cbs) {
+ }),
+ Clone: shy("复制插件", function() {
+ return pane.Append("field", {text: plugin.Reveal()}, [], "", function(line, index, event, cmds, cbs) {
plugin.Run(event, cmds, cbs, true)
}).item.Plugin.Select()
- },
+ }),
+
Next: function() {
return field.nextSibling || field.parentNode.firstChild
},
@@ -876,27 +865,6 @@ function Plugin(page, pane, field, inits, runs) {
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) {
var text = []
switch (type) {
@@ -936,60 +904,32 @@ function Plugin(page, pane, field, inits, runs) {
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) {
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.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())
return item
}).length == 0 && plugin.Runs(event, cb)
- },
- Delay: function(time, event, text) {
- plugin.ontoast(text, "", -1)
- return setTimeout(function() {
- 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
+ }),
+ Last: shy("历史命令", function() {kit.notNone(plugin.History()) && plugin.Check(event)}),
+ Runs: shy("执行命令", function(event, cb) {plugin.Run(event, plugin.Option(), cb)}),
+ Run: shy("执行命令", function(event, args, cb, silent) {var show = true
page.script("record", ["action", name].concat(args))
setTimeout(function() {show && plugin.ontoast(kit.Format(args||["running..."]), meta.name, -1)}, 1000)
event.Plugin = plugin, runs(event, args, function(msg) {
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:''+name+type+'', 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) {
@@ -1024,15 +964,50 @@ function Plugin(page, pane, field, inits, runs) {
}, function(event, key, cb) {cb(event)}),
})
+ plugin.Appends(inputs)
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)
- return plugin
+ return page[field.id] = pane[field.id] = pane[name] = field, field.Plugin = plugin
}
function Inputs(plugin, meta, item, target) {
var plug = meta.plug, name = meta.name, type = item.type
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() {
kit.List(arguments.callee.list, function(imports) {
page.Sync(imports).change(function(value) {
@@ -1136,7 +1111,7 @@ function Inputs(plugin, meta, item, target) {
}, plugin)
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
type == "text" && !target.placeholder && item.name && (target.placeholder = item.name)
!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, {
_table: function() {plugin.onfigure("table")},
_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:''+name+type+'', title: "下载中...", width: 200})
+ kit.Selector(page.toast, "a", function(item) {item.click()})
+ },
onexport: shy("导出数据", {
"": function(value, name, line) {
return value
diff --git a/usr/librarys/toolkit.js b/usr/librarys/toolkit.js
index 75121c51..37738db2 100644
--- a/usr/librarys/toolkit.js
+++ b/usr/librarys/toolkit.js
@@ -158,13 +158,13 @@ kit = toolkit = (function() {var kit = {__proto__: document,
if (kit.notNone(child.button)) {var list = kit.List(child.button)
type = "button", name = name || list[0]
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
type = "select", name = name || list[0][0]
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) {
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 item === ""? {view: ["space"]}:
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) {
- kit._call(cb, [value, event])
+ kit._call(cb, [event, value])
}}})}: item
}))
}
@@ -363,6 +363,19 @@ kit = toolkit = (function() {var kit = {__proto__: document,
}
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显示文本
OrderCode: function(code) {if (!code) {return}