diff --git a/src/contexts/cli/cli.go b/src/contexts/cli/cli.go
index 47b215d7..08d24997 100644
--- a/src/contexts/cli/cli.go
+++ b/src/contexts/cli/cli.go
@@ -719,10 +719,6 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
return
}},
"date": &ctx.Command{Name: "date", Help: "日历", Form: map[string]int{"space": 1, "format": 2, "count": 1, "nature": 1, "cmd": -1}, Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
- if m.Has("cmd") { // TODO 这是个漏洞
- m.Cmdy(m.Meta["cmd"])
- return
- }
show := map[int]string{0: "周日", 1: "周一", 2: "周二", 3: "周三", 4: "周四", 5: "周五", 6: "周六"}
space := m.Options("space")
diff --git a/src/contexts/cli/version.go b/src/contexts/cli/version.go
index 2ff85fb9..8b344788 100644
--- a/src/contexts/cli/version.go
+++ b/src/contexts/cli/version.go
@@ -1,8 +1,11 @@
package cli
+
var version = struct {
+ init []string
time string
host string
self int
}{
- "2019-09-29 22:27:58", "mac", 612,
+ []string{"2017-11-01 01:02:03", "2019-07-13 18:02:21"},
+ `2019-09-30 15:01:56`, `centos`, 622,
}
diff --git a/src/contexts/ssh/ssh.go b/src/contexts/ssh/ssh.go
index 82b3dab6..7641dad4 100644
--- a/src/contexts/ssh/ssh.go
+++ b/src/contexts/ssh/ssh.go
@@ -399,7 +399,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
}
return
}},
- "data": {Name: "data show|save|create|insert", Help: "数据", Form: map[string]int{"format": 1}, Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
+ "data": {Name: "data show|save|create|insert", Help: "数据", Form: map[string]int{"format": 1, "fields": -1}, Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
if len(arg) == 0 {
arg = append(arg, "show")
}
@@ -433,7 +433,9 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
}
sort.Strings(keys)
- m.Meta["append"] = []string{"id", "when"}
+ if m.Meta["append"] = []string{"id", "when"}; m.Has("fields") {
+ keys = kit.Trans(m.Optionv("fields"))
+ }
m.Confm("flow", []string{m.Option("river"), "data", arg[1], "list"}, func(index int, value map[string]interface{}) {
for _, k := range keys {
m.Push(k, kit.Format(value[k]))
@@ -445,13 +447,25 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
switch m.Option("format") {
case "object":
m.Confm("flow", []string{m.Option("river"), "data", arg[1], "list", kit.Format(index)}, func(key string, value string) {
- m.Push(key, value)
+ if key != "extra" {
+ m.Push(key, value)
+ }
+ })
+ m.Confm("flow", []string{m.Option("river"), "data", arg[1], "list", kit.Format(index), "extra"}, func(key string, value string) {
+ m.Push("extra."+key, value)
})
default:
m.Confm("flow", []string{m.Option("river"), "data", arg[1], "list", kit.Format(index)}, func(key string, value string) {
- m.Push("key", key)
+ if key != "extra" {
+ m.Push("key", key)
+ m.Push("value", value)
+ }
+ })
+ m.Confm("flow", []string{m.Option("river"), "data", arg[1], "list", kit.Format(index), "extra"}, func(key string, value string) {
+ m.Push("key", "extra."+key)
m.Push("value", value)
})
+ m.Sort("key")
}
}
m.Table()
@@ -529,10 +543,14 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
m.Cmdy("ssh.data", "save", arg[1])
case "update":
- index := kit.Int(arg[2]) - 1
- for i := 3; i < len(arg)-1; i += 2 {
- m.Confv("flow", []string{m.Option("river"), "data", arg[1], "list", kit.Format(index), arg[i]}, arg[i+1])
+ table, index, prefix, arg := arg[1], kit.Int(arg[2])-1, "", arg[3:]
+ if arg[0] == "extra" {
+ prefix, arg = "extra.", arg[1:]
}
+ for i := 0; i < len(arg)-1; i += 2 {
+ m.Confv("flow", []string{m.Option("river"), "data", table, "list", kit.Format(index), prefix + arg[i]}, arg[i+1])
+ }
+ m.Cmdy("ssh.data", "show", table, index+1)
case "import":
if len(arg) < 3 {
m.Cmdy("ssh.data", "show", arg)
diff --git a/src/plugin/love/index.css b/src/plugin/love/index.css
index eb199f94..5552f4b6 100644
--- a/src/plugin/love/index.css
+++ b/src/plugin/love/index.css
@@ -3,24 +3,17 @@ fieldset.item.love.date table td.today {
border:solid 2px red;
}
fieldset.item.love.date table td {
- word-break:break-all;
text-align:center;
min-width:40px;
}
fieldset.item.love.days div.day {
- opacity:0;
- padding:8px;
- border:solid 2px cyan;
margin:8px;
+ border:solid 2px cyan;
+ padding:8px;
+ opacity:0;
float:left;
}
-fieldset.item.love.days div.day span.day {
- font-size:18px;
- font-weight:bold;
- font-style:italic;
- margin-right:5px;
-}
fieldset.item.love.days span.what {
font-size:24px;
}
@@ -32,3 +25,8 @@ fieldset.item.love.days span.day1 {
font-size:32px;
color:green;
}
+
+fieldset.item.love.media table td {
+ text-align:center;
+ min-width:60px;
+}
diff --git a/src/plugin/love/index.js b/src/plugin/love/index.js
index ecaadea6..0be21a46 100644
--- a/src/plugin/love/index.js
+++ b/src/plugin/love/index.js
@@ -1,13 +1,20 @@
{init: function(run, field, option, output) {
return {
- show: function(event) {
- run(event, ["", "", "cmd", "ssh.data", "show", option.table.value], function(msg) {
- kit.List(ctx.Table(msg), function(value) {
- kit.Selector(output, ".s"+value[option.when.value].split(" ")[0].split("-").join(""), function(item) {
- kit.classList.add(item.parentNode, "select")
- item.parentNode.title = value[option.where.value]
- })
- }, 200)
+ data: function(event) {var plugin = field.Plugin
+ run(event, [option.table.value], function(msg) {
+ plugin.msg = msg, plugin.display("table")
+ })
+ },
+ show: function(event) {var plugin = field.Plugin
+ plugin.Check(undefined, function(msg) {
+ run(event, [option.table.value], function(msg) {
+ kit.List(ctx.Table(msg), function(line) {
+ kit.Selector(output, ".s"+line.when.split(" ")[0].split("-").join(""), function(item) {
+ kit.classList.add(item.parentNode, "select")
+ item.parentNode.title = line.what
+ })
+ }, 200)
+ })
})
},
show_after: function(msg) {
@@ -15,29 +22,55 @@ return {
kit.classList.add(item.parentNode, "today")
})
},
+ onexport: {"": function(value, name, line) {var plugin = field.Plugin
+ switch (field.Meta.name) {
+ case "days": plugin.flash(line, function(list) {
+ return kit.AppendChilds(output, list)
+ }); break
+ case "date":
+ plugin.Check(undefined, function(msg) {
+ kit.Selector(output, ".s"+line.when.split(" ")[0].split("-").join(""), function(item) {
+ kit.classList.add(item.parentNode, "select")
+ item.parentNode.title = line.what
+ })
+ })
+ break
+ case "detail":
+ plugin.Change(event.target, function(value) {
+ run(event, ["update", option.table.value, option.index.value, line.key, value], function(msg) {
+ kit.Log("ok")
+ })
+ })
+ break
+ }
+ return line.id
+ }},
+ flash: function(line, cb, index, array) {var plugin = field.Plugin
+ var now = new Date()
+ var day = new Date(line.when)
+ var mis = parseInt((day.getTime() - now.getTime()) / 1000 / 3600 / 24)
+ if (array && index == array.length-1) {
+ mis = 999999
+ }
+
+ var list = kit.Span()
+ list.span(["距", "day"], line.when.split(" ")[0])
+ list.span(["在", "day"], line.where)
+ list.span([line.what, "what"])
+ list.span(mis>0? "还有": "过去", [mis, mis>0? "day1": "day0"], "天")
+
+ kit.Opacity(cb([{text: [list.join(""), "div", "day"]}]).last)
+ },
Order: function(t, cb, cbs) {var plugin = field.Plugin
- var msg = plugin.msg, now = new Date()
- kit.List(ctx.Table(msg).concat([{when: "9999-01-08", what: "最后一次爱你", where: "北京市"}]), function(line, index, array) {
- var day = new Date(line.when)
- var mis = parseInt((day.getTime() - now.getTime()) / 1000 / 3600 / 24)
- if (index == array.length-1) {
- mis = 999999
- }
-
- var list = kit.Span()
- list.span(["距", "day"], line.when.split(" ")[0])
- list.span(["在", "day"], line.where)
- list.span([line.what, "what"])
- list.span(mis>0? "还有": "过去", [mis, mis>0? "day1": "day0"], "天")
-
- kit.Opacity(cb(output, [{text: [list.join(""), "div", "day"]}]).last)
+ kit.List(ctx.Table(plugin.msg).concat([{when: "9999-01-08", what: "最后一次爱你", where: "北京市"}]), function(line, index, array) {
+ plugin.flash(line, cb, index, array)
}, t, cbs)
},
Flash: function(event) {var plugin = field.Plugin
- plugin.Order(1000, function(output, list) {
+ plugin.Order(1000, function(list) {
return kit.AppendChilds(output, list)
}, function() {
- output.innerHTML = "", plugin.Order(400, function(output, list) {
+ output.innerHTML = "", plugin.Order(400, function(list) {
return kit.AppendChild(output, list)
})
})
diff --git a/src/plugin/love/index.shy b/src/plugin/love/index.shy
index fa22dec7..7a3a40f4 100644
--- a/src/plugin/love/index.shy
+++ b/src/plugin/love/index.shy
@@ -1,29 +1,36 @@
-kit date "每一天" "index.js" "index.css" protected "cli.date" _ nature _ \
- \ space true format '%s' "s20060102" \
+fun date "每一天" "index.js" "index.css" protected \
+ text "love" name "table" imports plugin_table view tiny \
text "2019-07-08" name "起始时间" \
text "" name "截止时间" init date \
- text "love" name "table" imports plugin_table view tiny \
- text "when" name "when" view tiny \
- text "where" name "where" view tiny \
- button "查看" action auto \
- button "显示" cb show
+ button "日历" action auto \
+ button "记录" cb data \
+ button "展示" cb show \
+ exports index ""
+
+ if $2 == "" || $3 == ""
+ copy skip ssh.data show _ fields id when where what
+ else
+ copy skip cli.date $2 nature $3 space true format '%s' "s20060102"
+ end
+end
fun maps "每一面" "maps.js" "index.css" protected \
text "love" name table imports plugin_table \
text "" name when init date \
text "" name what view long \
+ button "本地" cb Current \
text "北京市" name city view tiny \
text "弘源首著" name where \
- button "本地" cb Current \
button "搜索" cb Search action auto \
button "记录" cb Record \
- button "展示" cb Flashs
+ button "展示" cb Flashs \
+ exports index ""
if $2 == "" || $3 == ""
copy skip ssh.data show _
else
- copy ssh.data insert _ when _ what _ city _ where _ longitude _ latitude _ scale _
+ copy ssh.data insert _ when _ what _ city _ where _
end
end
@@ -32,15 +39,34 @@ fun days "每一次" "index.js" "index.css" protected \
text "" name when init date \
text "" name what view long \
button "记录" \
- button "展示" cb Flash
+ button "展示" cb Flash \
+ exports index ""
if $2 == "" || $3 == ""
- copy skip ssh.data show _
+ copy skip ssh.data show _ fields id when where what
else
copy ssh.data insert _ when _ what __
end
end
+fun detail "详情" "index.js" protected \
+ text "love" name table imports plugin_table \
+ text "1" name index imports plugin_index action auto view tiny \
+ button "查看"
+ if $1 == "update"
+ copy ssh.data
+ else
+ copy ssh.data show
+ end
+end
+
+kit note "回忆" "index.js" protected "ssh.data" update _ _ extra \
+ text "love" name table imports plugin_table \
+ text "1" name index imports plugin_index action auto view tiny \
+ text "" name field \
+ text "" name value \
+ button "添加"
+
fun delay "以后告诉你" protected \
text "delay" name table imports plugin_table \
text "" name when init date\
@@ -56,14 +82,15 @@ end
fun media "娱乐" private \
text "media" name table imports plugin_table \
- text "电影" name title \
- text "" name link \
+ select "电影" values "电影" values "音乐" values "电视剧" \
+ text "" name title \
+ text "" name link view long \
button "记下了"
- if $2 == "" || $3 == ""
- copy ssh.data show _
+ if $2 == "" || $3 == "" || $4 == ""
+ copy skip ssh.data show $1 fields id type name link
else
- copy ssh.data insert _ title _ link __
+ copy ssh.data insert _ type _ name _ link __
end
end
diff --git a/src/plugin/love/maps.js b/src/plugin/love/maps.js
index fe074dc1..330b0c41 100644
--- a/src/plugin/love/maps.js
+++ b/src/plugin/love/maps.js
@@ -2,14 +2,17 @@
var id
return {
initMap: function() {var plugin = field.Plugin
- var width = field.parentNode.clientWidth-40
!id && (id = plugin.id+"map"+plugin.ID())
+
+ var width = field.parentNode.clientWidth-40
kit.AppendChilds(output, [{type: "div", data: {id: id}, style: {width: width+"px", height: width*(kit.device.isMobile? 7: 3)/5}}])
+
map = new BMap.Map(id)
map.addControl(new BMap.NavigationControl())
map.addControl(new BMap.ScaleControl())
map.addControl(new BMap.OverviewMapControl())
map.addControl(new BMap.MapTypeControl())
+ return map
},
Current: function() {
var geo = new BMap.Geolocation()
@@ -34,27 +37,29 @@ return {
return parseInt(value*len)/parseFloat(len)
}
var l = map.getCenter()
- run(event, [option.table.value, option.when.value, option.what.value, option.city.value, option.where.value, trunc(l.lng), trunc(l.lat), map.getZoom()], function(msg) {
+ run(event, [option.table.value, option.when.value, option.what.value, option.city.value, option.where.value,
+ "longitude", trunc(l.lng), "latitude", trunc(l.lat), "scale", map.getZoom()], function(msg) {
plugin.msg = msg, plugin.display("table")
})
},
Flashs: function() {var plugin = field.Plugin
plugin.initMap(), run(event, [option.table.value], function(msg) {
- kit.List(ctx.Table(msg), function(line, index) {
- var p = new BMap.Point(line.longitude, line.latitude)
- map.centerAndZoom(p, line.scale)
-
- var info = new BMap.InfoWindow(line.when+"
"+line.where, {width: 200, height: 100, title: line.what})
- map.openInfoWindow(info, map.getCenter())
-
- output.style.opacity = 0
- kit.Opacity(output)
- }, 1000)
+ kit.List(ctx.Table(msg), plugin.place, 1000)
})
},
- Demo: function() {
- var info = new BMap.InfoWindow("hello"+"
"+"world", {width: 200, height: 100, title: "haha"})
- map.openInfoWindow(info, map.getCenter())
- },
+ place: function(line) {
+ var p = new BMap.Point(line.longitude, line.latitude)
+ map.centerAndZoom(p, line.scale)
+
+ var info = new BMap.InfoWindow(line.when+"
"+line.where, {width: 200, height: 100, title: line.what})
+ map.openInfoWindow(info, map.getCenter())
+
+ output.style.opacity = 0
+ kit.Opacity(output)
+ },
+ onexport: {"": function(value, name, line) {var plugin = field.Plugin
+ plugin.initMap(), plugin.place(line)
+ return line.id
+ }},
}}}
diff --git a/usr/librarys/chat.js b/usr/librarys/chat.js
index 6ebbd980..a34bf13c 100644
--- a/usr/librarys/chat.js
+++ b/usr/librarys/chat.js
@@ -20,8 +20,10 @@ var page = Page({check: true,
width -= page.river.offsetWidth+page.storm.offsetWidth
sizes.action == -1 && (sizes.action = kit.device.isMobile? "": height, sizes.target = 0, sizes.source = 0)
- sizes.action == undefined && (sizes.action = page.action.clientHeight)
+ sizes.action == undefined && (sizes.action = page.action.offsetHeight-page.conf.border)
sizes.source == undefined && (sizes.source = page.source.clientHeight)
+ sizes.target == undefined && (sizes.target = page.target.clientHeight)
+ sizes.source == 0 && sizes.target == 0 && (sizes.action = height)
page.action.Pane.Size(width, sizes.action)
page.source.Pane.Size(width, sizes.source)
height -= sizes.target==0? height: page.source.offsetHeight+page.action.offsetHeight
@@ -704,6 +706,6 @@ var page = Page({check: true,
page.onaction[item] && page.onaction[item](event, item, value, page)
})
page.river.Pane.Show()
- // page.WSS()
+ page.WSS()
},
})
diff --git a/usr/librarys/example.js b/usr/librarys/example.js
index 9fc748a9..30b4c998 100644
--- a/usr/librarys/example.js
+++ b/usr/librarys/example.js
@@ -731,6 +731,19 @@ function Plugin(page, pane, field, runs) {
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: function(item, name, value) {
kit.Item(plugin.onaction, function(k, cb) {
item[k] == undefined && (item[k] = typeof cb == "function"? function(event) {
@@ -949,14 +962,14 @@ function Plugin(page, pane, field, runs) {
inner: function(msg, cb) {
output.style.maxWidth = pane.target.clientWidth-20+"px"
output.style.maxHeight = pane.target.clientHeight-60+"px"
- output.innerHTML = "", msg.append? kit.OrderTable(kit.AppendTable(kit.AppendChild(output, "table"), ctx.Table(msg), msg.append), exports[1], function(event, value, name, line) {
+ output.innerHTML = "", msg.append? kit.OrderTable(kit.AppendTable(kit.AppendChild(output, "table"), ctx.Table(msg), msg.append), exports[1]||"", function(event, value, name, line) {
page.Sync("plugin_"+exports[0]).set(plugin.onexport[exports[2]||""](value, name, line))
}): (output.innerHTML = msg.result.join(""))
typeof cb == "function" && cb(msg)
},
table: function(msg, cb) {
output.innerHTML = ""
- !display.hide_append && msg.append && kit.OrderTable(kit.AppendTable(kit.AppendChild(output, "table"), ctx.Table(msg), msg.append), exports[1], function(event, value, name, line) {
+ !display.hide_append && msg.append && kit.OrderTable(kit.AppendTable(kit.AppendChild(output, "table"), ctx.Table(msg), msg.append), exports[1]||"", function(event, value, name, line) {
page.Sync("plugin_"+exports[0]).set(plugin.onexport[exports[2]||""](value, name, line))
});
(display.show_result || !msg.append) && msg.result && kit.OrderCode(kit.AppendChild(output, [{view: ["code", "div", msg.Results()]}]).first)
@@ -970,7 +983,7 @@ function Plugin(page, pane, field, runs) {
},
},
onexport: {
- "": function(value, name) {
+ "": function(value, name, line) {
return value
},
see: function(value, name, line) {
diff --git a/usr/librarys/toolkit.js b/usr/librarys/toolkit.js
index aa6c78cd..804e624f 100644
--- a/usr/librarys/toolkit.js
+++ b/usr/librarys/toolkit.js
@@ -597,6 +597,7 @@ kit = toolkit = {__proto__: document,
}
return true
},
+ // HTML修改文本
// 数据容器迭代
Selector: function(obj, item, cb, interval, cbs) {
@@ -774,6 +775,8 @@ kit = toolkit = {__proto__: document,
},
_call: function(cb, arg) {
var res
+ if (typeof cb != "function") {return}
+
switch (arg.length) {
case 0: res = cb(); break
case 1: res = cb(arg[0]); break