forked from x/volcanos
opt team
This commit is contained in:
parent
358dce636d
commit
6afb75b38a
@ -1,11 +1,8 @@
|
|||||||
{
|
{
|
||||||
"pages": [
|
"pages": [
|
||||||
"pages/river/river",
|
"pages/river/river",
|
||||||
"pages/storm/storm",
|
|
||||||
"pages/action/action",
|
"pages/action/action",
|
||||||
"pages/active/active",
|
"pages/insert/insert"
|
||||||
"pages/favor/favor",
|
|
||||||
"pages/scans/scans"
|
|
||||||
],
|
],
|
||||||
"window": {
|
"window": {
|
||||||
"backgroundColor": "#000",
|
"backgroundColor": "#000",
|
||||||
|
@ -3,7 +3,7 @@ const app = getApp()
|
|||||||
|
|
||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
action: ["扫码", "清屏", "刷新", "串行", "并行", "共享"],
|
action: ["扫码", "刷新", "清屏", "串行", "并行"],
|
||||||
river: "", storm: "", title: "",
|
river: "", storm: "", title: "",
|
||||||
res: [], his: {}, inputs: {},
|
res: [], his: {}, inputs: {},
|
||||||
},
|
},
|
||||||
@ -30,6 +30,14 @@ Page({
|
|||||||
line.inputs = [{_input: "text"}, {_input: "button", value: "执行"}]
|
line.inputs = [{_input: "text"}, {_input: "button", value: "执行"}]
|
||||||
}
|
}
|
||||||
list.push(line), line.inputs.forEach(function(input) {
|
list.push(line), line.inputs.forEach(function(input) {
|
||||||
|
input.action = input.action || input.value
|
||||||
|
input.value == "auto" && (input.value = "")
|
||||||
|
if (input.value && input.value.startsWith("@")) {
|
||||||
|
input.value = ""
|
||||||
|
}
|
||||||
|
if (input._input == "select") {
|
||||||
|
input.values = input.values || input.value && input.value.split("|")
|
||||||
|
}
|
||||||
input._input == "button" && input.action == "auto" && page.run(event, index)
|
input._input == "button" && input.action == "auto" && page.run(event, index)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -53,146 +61,12 @@ Page({
|
|||||||
})
|
})
|
||||||
page.setData({res: page.data.res})
|
page.setData({res: page.data.res})
|
||||||
},
|
},
|
||||||
"共享": function(event, page, data, name) {
|
|
||||||
},
|
|
||||||
},
|
|
||||||
plugin: {
|
|
||||||
paste: function(page, data) {
|
|
||||||
wx.getClipboardData({success: function(res) {
|
|
||||||
var cmds = [page.data.river, page.data.storm, data.order]
|
|
||||||
cmds = cmds.concat(["insert", "paste", "", res.data])
|
|
||||||
app.request("action", {cmds: cmds}, function(msg) {
|
|
||||||
|
|
||||||
})
|
|
||||||
}})
|
|
||||||
},
|
|
||||||
qrcode: function(page) {
|
|
||||||
app.scans(function(res) {
|
|
||||||
res["sess.river"] = page.data.river
|
|
||||||
res["sess.storm"] = page.data.storm
|
|
||||||
app.request("mp/login/scan", res)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
location: function(page, data) {
|
|
||||||
app.location({success: function(res) {
|
|
||||||
var cmds = [page.data.river, page.data.storm, data.order]
|
|
||||||
cmds = cmds.concat(["insert", "location", res.name, res.address, res.longitude*100000, res.latitude*100000])
|
|
||||||
app.request("action", {cmds: cmds}, function(msg) {
|
|
||||||
|
|
||||||
})
|
|
||||||
}})
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
onaction: function(event, data, name) {
|
onaction: function(event, data, name) {
|
||||||
console.log("action", "river", name)
|
|
||||||
data = data || event.target.dataset, name = name || data.name
|
data = data || event.target.dataset, name = name || data.name
|
||||||
|
console.log("action", "action", name)
|
||||||
this.action[name](event, this, data)
|
this.action[name](event, this, data)
|
||||||
},
|
},
|
||||||
onfigure: {
|
|
||||||
location: {click: function(event, page, data, cmd, field) {
|
|
||||||
wx.chooseLocation({success: function(res) {
|
|
||||||
if (data.input._input != "button") {
|
|
||||||
field.inputs[data.index].value = res.name
|
|
||||||
page.setData({res: page.data.res})
|
|
||||||
}
|
|
||||||
page.run(event, data.order, ["action", "device", "location", res.name, res.address, "latitude", res.latitude*100000, "longitude", res.longitude*100000])
|
|
||||||
}})
|
|
||||||
}},
|
|
||||||
battery: {click: function(event, page, data, cmd, field) {
|
|
||||||
wx.getBatteryInfo({success: function(res) {
|
|
||||||
if (data.input._input != "button") {
|
|
||||||
field.inputs[data.index].value = res.level
|
|
||||||
page.setData({res: page.data.res})
|
|
||||||
}
|
|
||||||
page.run(event, data.order, ["action", "device", "battery", res.level, res.isCharging])
|
|
||||||
}})
|
|
||||||
}},
|
|
||||||
paste: {click: function(event, page, data, cmd, field) {
|
|
||||||
wx.getClipboardData({success: function(res) {
|
|
||||||
if (data.input._input != "button") {
|
|
||||||
field.inputs[data.index].value = res.data
|
|
||||||
page.setData({res: page.data.res})
|
|
||||||
}
|
|
||||||
page.run(event, data.order, ["action", "device", "paste", res.data, res.data])
|
|
||||||
}})
|
|
||||||
}},
|
|
||||||
scan: {click: function(event, page, data, cmd, field) {
|
|
||||||
app.scans(function(res) {
|
|
||||||
if (data.input._input != "button") {
|
|
||||||
field.inputs[data.index].value = res.text || res.name
|
|
||||||
page.setData({res: page.data.res})
|
|
||||||
}
|
|
||||||
page.run(event, data.order, ["action", "device", res.type||"spide", res.name||"", res.text||"", JSON.stringify(res.extra||"")])
|
|
||||||
})
|
|
||||||
}},
|
|
||||||
album: {click: function(event, page, data, cmd, field) {
|
|
||||||
wx.chooseImage({success: function(res) {
|
|
||||||
console.log(res)
|
|
||||||
const tempFilePaths = res.tempFilePaths
|
|
||||||
wx.uploadFile({
|
|
||||||
url: app.conf.serve+"/mp/login/upload",
|
|
||||||
filePath: tempFilePaths[0],
|
|
||||||
name: 'upload', formData: {'user': 'test'},
|
|
||||||
success: function(msg) {
|
|
||||||
console.log(msg)
|
|
||||||
if (data.input._input != "button") {
|
|
||||||
field.inputs[data.index].value = msg.data
|
|
||||||
page.setData({res: page.data.res})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
fail: function(res) {
|
|
||||||
console.log(res)
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}})
|
|
||||||
}},
|
|
||||||
finger: {click: function(event, page, data, cmd, field) {
|
|
||||||
wx.startSoterAuthentication({
|
|
||||||
requestAuthModes: ['fingerPrint'], authContent: '请用指纹解锁',
|
|
||||||
challenge: '123456', success(res) {
|
|
||||||
console.log(res)
|
|
||||||
res = JSON.parse(res.resultJSON)
|
|
||||||
if (data.input._input != "button") {
|
|
||||||
field.inputs[data.index].value = res.cpu_id
|
|
||||||
page.setData({res: page.data.res})
|
|
||||||
}
|
|
||||||
page.run(event, data.order, ["action", "device", "finger", res.uid, res.cpu_id, "counter", res.counter, "raw", res.raw])
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}},
|
|
||||||
wifi: {click: function(event, page, data, cmd, field) {
|
|
||||||
wx.getConnectedWifi({success: function(res) {
|
|
||||||
console.log(res)
|
|
||||||
if (data.input._input != "button") {
|
|
||||||
field.inputs[data.index].value = res.wifi.SSID
|
|
||||||
page.setData({res: page.data.res})
|
|
||||||
}
|
|
||||||
page.run(event, data.order, ["action", "device", "wifi", res.wifi.SSID, res.wifi.signalStrength])
|
|
||||||
}})
|
|
||||||
}},
|
|
||||||
wifiConn: {click: function(event, page, data, cmd, field) {
|
|
||||||
wx.connectWifi({
|
|
||||||
SSID: data.SSID, password: data.password,
|
|
||||||
success: function(res) {
|
|
||||||
console.log(res)
|
|
||||||
},
|
|
||||||
fail: function(res) {
|
|
||||||
console.log(res)
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}},
|
|
||||||
vibrate: {click: function(event, page, data, cmd, field) {
|
|
||||||
wx.vibrateShort()
|
|
||||||
}},
|
|
||||||
key: {click: function(event, page, data, cmd, field) {
|
|
||||||
page.run(event, data.order, ["action", "input", data.input.name, data.input.value])
|
|
||||||
}},
|
|
||||||
share: {click: function(event, page, data, cmd, field) {
|
|
||||||
wx.showShareMenu({
|
|
||||||
withShareTicket: true
|
|
||||||
})
|
|
||||||
}},
|
|
||||||
},
|
|
||||||
|
|
||||||
run: function(event, order, cmd, cb) {var page = this, field = page.data.res[order]
|
run: function(event, order, cmd, cb) {var page = this, field = page.data.res[order]
|
||||||
var cmds = [page.data.river, page.data.storm, order]
|
var cmds = [page.data.river, page.data.storm, order]
|
||||||
@ -207,7 +81,7 @@ Page({
|
|||||||
}
|
}
|
||||||
|
|
||||||
wx.showLoading()
|
wx.showLoading()
|
||||||
app.request("action", {cmds: cmds}, function(msg) {
|
app.request("action?="+field.name, {cmds: cmds}, function(msg) {
|
||||||
wx.hideLoading()
|
wx.hideLoading()
|
||||||
page.data.res[order].msg = msg
|
page.data.res[order].msg = msg
|
||||||
page.setData({res: page.data.res})
|
page.setData({res: page.data.res})
|
||||||
@ -233,16 +107,19 @@ Page({
|
|||||||
|
|
||||||
onClick: function(event) {var page = this, data = event.target.dataset
|
onClick: function(event) {var page = this, data = event.target.dataset
|
||||||
var field = page.data.res[data.order]
|
var field = page.data.res[data.order]
|
||||||
// 输入补全
|
|
||||||
var figure = data && data.input && page.onfigure[data.input.cb||data.input.figure||data.input.name]
|
|
||||||
if (figure) {
|
|
||||||
return figure.click(event, page, data, data.input.name, field)
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (data.input.name) {
|
switch (data.input.name) {
|
||||||
case "添加":
|
case "添加":
|
||||||
var p = page.plugin[data.field.index]
|
app.data.field = field
|
||||||
if (typeof p == "function") { return p(page, data) }
|
app.data.insertCB = function(res) {
|
||||||
|
var list = ["action", "insert"];
|
||||||
|
kit.Item(res, function(key, value) {
|
||||||
|
key && value && list.push(key, value)
|
||||||
|
})
|
||||||
|
page.run(event, data.order, list)
|
||||||
|
}
|
||||||
|
app.jumps("insert/insert", {river: page.data.river, storm: page.data.storm, title: field.name, field: field})
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (data.input.value) {
|
switch (data.input.value) {
|
||||||
@ -284,7 +161,7 @@ Page({
|
|||||||
app.title(options.title)
|
app.title(options.title)
|
||||||
|
|
||||||
var data = app.data[options.river+options.storm]
|
var data = app.data[options.river+options.storm]
|
||||||
if (data) {return this.setData({res: this.data.res = data})}
|
if (data) { return this.setData({res: this.data.res = data}) }
|
||||||
this.onaction({}, {}, "刷新")
|
this.onaction({}, {}, "刷新")
|
||||||
},
|
},
|
||||||
onReady: function () {},
|
onReady: function () {},
|
||||||
@ -296,11 +173,38 @@ Page({
|
|||||||
},
|
},
|
||||||
onReachBottom: function () {},
|
onReachBottom: function () {},
|
||||||
onShareAppMessage: function (res) {
|
onShareAppMessage: function (res) {
|
||||||
console.log(res)
|
console.log("action", "share", res)
|
||||||
return {
|
return {
|
||||||
title: this.data.title,
|
title: this.data.title,
|
||||||
path: "pages/action/action?river="+this.data.river+"&storm="+this.data.storm+"&title="+this.data.title,
|
path: "pages/action/action?river="+this.data.river+"&storm="+this.data.storm+"&title="+this.data.title,
|
||||||
success: function(res) { console.log(res) },
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
|
||||||
|
plugin: {
|
||||||
|
paste: function(page, data) {
|
||||||
|
wx.getClipboardData({success: function(res) {
|
||||||
|
var cmds = [page.data.river, page.data.storm, data.order]
|
||||||
|
cmds = cmds.concat(["insert", "paste", "", res.data])
|
||||||
|
app.request("action", {cmds: cmds}, function(msg) {
|
||||||
|
|
||||||
|
})
|
||||||
|
}})
|
||||||
|
},
|
||||||
|
qrcode: function(page) {
|
||||||
|
app.scans(function(res) {
|
||||||
|
res["sess.river"] = page.data.river
|
||||||
|
res["sess.storm"] = page.data.storm
|
||||||
|
app.request("mp/login/scan", res)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
location: function(page, data) {
|
||||||
|
app.location({success: function(res) {
|
||||||
|
var cmds = [page.data.river, page.data.storm, data.order]
|
||||||
|
cmds = cmds.concat(["insert", "location", res.name, res.address, res.longitude*100000, res.latitude*100000])
|
||||||
|
app.request("action", {cmds: cmds}, function(msg) {
|
||||||
|
|
||||||
|
})
|
||||||
|
}})
|
||||||
|
},
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
<view class="output">
|
<view class="output">
|
||||||
<view class="field" wx:for="{{res}}" wx:key="name" wx:for-index="order" wx:for-item="field">
|
<view class="field" wx:for="{{res}}" wx:key="name" wx:for-index="order" wx:for-item="field">
|
||||||
<view class="title"><text>{{field.name}}({{field.help}})</text></view>
|
<view class="title"><text>{{field.name}}({{field.help}})</text></view>
|
||||||
<!-- 参数 -->
|
|
||||||
<view class="option">
|
<view class="option">
|
||||||
|
<!-- 参数 -->
|
||||||
<view class="item {{item._input}}" wx:for="{{field.inputs}}" wx:key="name">
|
<view class="item {{item._input}}" wx:for="{{field.inputs}}" wx:key="name">
|
||||||
<!-- 文本 -->
|
<!-- 文本 -->
|
||||||
<input wx:if="{{item._input == 'text'}}" type="text" value="{{item.value}}" placeholder="{{item.name}}"
|
<input wx:if="{{item._input == 'text'}}" type="text" value="{{item.value}}" placeholder="{{item.name}}"
|
||||||
@ -16,6 +16,7 @@
|
|||||||
<textarea wx:elif="{{item._input == 'textarea'}}" value="{{item.value}}" placeholder="{{item.name}}"
|
<textarea wx:elif="{{item._input == 'textarea'}}" value="{{item.value}}" placeholder="{{item.name}}"
|
||||||
bindtap="onClick" bindinput="onInput" data-field="{{field}}" data-order="{{order}}" data-index="{{index}}" data-input="{{item}}"></textarea>
|
bindtap="onClick" bindinput="onInput" data-field="{{field}}" data-order="{{order}}" data-index="{{index}}" data-input="{{item}}"></textarea>
|
||||||
|
|
||||||
|
<!-- 列表 -->
|
||||||
<picker wx:elif="{{item._input == 'select'}}" bindchange="onChange" value="{{item.index||0}}" range="{{item.values}}"
|
<picker wx:elif="{{item._input == 'select'}}" bindchange="onChange" value="{{item.index||0}}" range="{{item.values}}"
|
||||||
data-field="{{field}}" data-order="{{order}}" data-index="{{index}}" data-input="{{item}}">
|
data-field="{{field}}" data-order="{{order}}" data-index="{{index}}" data-input="{{item}}">
|
||||||
<view>{{item.values[item.index||0]}}</view>
|
<view>{{item.values[item.index||0]}}</view>
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
view.option view.item {
|
||||||
|
padding:0;
|
||||||
|
}
|
||||||
|
view.option view.item.select {
|
||||||
|
padding:3px;
|
||||||
|
}
|
@ -1,27 +0,0 @@
|
|||||||
const utils = require("../../utils/util.js")
|
|
||||||
const app = getApp()
|
|
||||||
|
|
||||||
Page({
|
|
||||||
data: {
|
|
||||||
cmd: "",
|
|
||||||
msg: {append: ["hi", "he"], hi: [1, 2], he: [3, 4]},
|
|
||||||
},
|
|
||||||
|
|
||||||
onFocus: function(event) {},
|
|
||||||
onInput: function(event) {},
|
|
||||||
onEnter: function(event) {var page = this
|
|
||||||
app.userinfo(function(user) {
|
|
||||||
app.request("mp/login/", {cmds: ["cmds", event.detail.value]}, function(msg) {
|
|
||||||
page.setData({cmd: "", msg: msg})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
onLoad: function (options) {},
|
|
||||||
onReady: function () {},
|
|
||||||
onShow: function () {},
|
|
||||||
onHide: function () {},
|
|
||||||
onUnload: function () {},
|
|
||||||
onPullDownRefresh: function () {},
|
|
||||||
onReachBottom: function () {},
|
|
||||||
onShareAppMessage: function () {}
|
|
||||||
})
|
|
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"usingComponents": {}
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
<view class="display">
|
|
||||||
<input class="detail" type="text" value="{{cmd}}" focus bindfocus="onFocus" bindinput="onInput" bindconfirm="onEnter" confirm-hold/>
|
|
||||||
<table wx:if="{{msg.append && msg.append[0]}}">
|
|
||||||
<tr><th wx:for="{{msg.append}}">{{item}}</th></tr>
|
|
||||||
<tr wx:for="{{msg[msg.append[0]]}}" wx:for-index="line"><td wx:for="{{msg.append}}">{{msg[item][line]}}</td></tr>
|
|
||||||
</table>
|
|
||||||
<view class="output"><text wx:for="{{msg.result}}">{{item}}</text></view>
|
|
||||||
</view>
|
|
@ -1,38 +0,0 @@
|
|||||||
.display {
|
|
||||||
color:white;
|
|
||||||
font-size:14px;
|
|
||||||
font-family:monospace;
|
|
||||||
background-color:#272822;
|
|
||||||
position:absolute;
|
|
||||||
white-space:pre;
|
|
||||||
height:100%;
|
|
||||||
width:100%;
|
|
||||||
}
|
|
||||||
.output {
|
|
||||||
background-color:#272822;
|
|
||||||
}
|
|
||||||
table {
|
|
||||||
width:100%;
|
|
||||||
background-color:#272822;
|
|
||||||
}
|
|
||||||
tr {
|
|
||||||
background-color:#272822;
|
|
||||||
width:100%;
|
|
||||||
display:flex;
|
|
||||||
justify-content:space-between;
|
|
||||||
}
|
|
||||||
th {
|
|
||||||
background-color:#272822;
|
|
||||||
width:100%;
|
|
||||||
text-align:center;
|
|
||||||
border:solid 1px red;
|
|
||||||
}
|
|
||||||
td {
|
|
||||||
background-color:#272822;
|
|
||||||
width:100%;
|
|
||||||
text-align:center;
|
|
||||||
border:solid 1px green;
|
|
||||||
}
|
|
||||||
.detail {
|
|
||||||
border:solid 2px green;
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
const utils = require("../../utils/util.js")
|
|
||||||
const app = getApp()
|
|
||||||
|
|
||||||
Page({
|
|
||||||
data: {
|
|
||||||
cmd: "",
|
|
||||||
msg: {append: ["hi", "he"], hi: [1, 2], he: [3, 4]},
|
|
||||||
},
|
|
||||||
|
|
||||||
onFocus: function(event) {},
|
|
||||||
onInput: function(event) {},
|
|
||||||
onEnter: function(event) {var page = this
|
|
||||||
app.userinfo(function(user) {
|
|
||||||
app.request("mp/login/", {cmds: ["cmds", event.detail.value]}, function(msg) {
|
|
||||||
page.setData({cmd: "", msg: msg})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
onLoad: function (options) {},
|
|
||||||
onReady: function () {},
|
|
||||||
onShow: function () {},
|
|
||||||
onHide: function () {},
|
|
||||||
onUnload: function () {},
|
|
||||||
onPullDownRefresh: function () {},
|
|
||||||
onReachBottom: function () {},
|
|
||||||
onShareAppMessage: function () {}
|
|
||||||
})
|
|
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"usingComponents": {}
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
<view class="display">
|
|
||||||
<input class="detail" type="text" value="{{cmd}}" focus bindfocus="onFocus" bindinput="onInput" bindconfirm="onEnter" confirm-hold/>
|
|
||||||
<table wx:if="{{msg.append && msg.append[0]}}">
|
|
||||||
<tr><th wx:for="{{msg.append}}">{{item}}</th></tr>
|
|
||||||
<tr wx:for="{{msg[msg.append[0]]}}" wx:for-index="line"><td wx:for="{{msg.append}}">{{msg[item][line]}}</td></tr>
|
|
||||||
</table>
|
|
||||||
<view class="output"><text wx:for="{{msg.result}}">{{item}}</text></view>
|
|
||||||
</view>
|
|
@ -1,38 +0,0 @@
|
|||||||
.display {
|
|
||||||
color:white;
|
|
||||||
font-size:14px;
|
|
||||||
font-family:monospace;
|
|
||||||
background-color:#272822;
|
|
||||||
position:absolute;
|
|
||||||
white-space:pre;
|
|
||||||
height:100%;
|
|
||||||
width:100%;
|
|
||||||
}
|
|
||||||
.output {
|
|
||||||
background-color:#272822;
|
|
||||||
}
|
|
||||||
table {
|
|
||||||
width:100%;
|
|
||||||
background-color:#272822;
|
|
||||||
}
|
|
||||||
tr {
|
|
||||||
background-color:#272822;
|
|
||||||
width:100%;
|
|
||||||
display:flex;
|
|
||||||
justify-content:space-between;
|
|
||||||
}
|
|
||||||
th {
|
|
||||||
background-color:#272822;
|
|
||||||
width:100%;
|
|
||||||
text-align:center;
|
|
||||||
border:solid 1px red;
|
|
||||||
}
|
|
||||||
td {
|
|
||||||
background-color:#272822;
|
|
||||||
width:100%;
|
|
||||||
text-align:center;
|
|
||||||
border:solid 1px green;
|
|
||||||
}
|
|
||||||
.detail {
|
|
||||||
border:solid 2px green;
|
|
||||||
}
|
|
55
client/mp/pages/insert/insert.js
Normal file
55
client/mp/pages/insert/insert.js
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
const kit = require("../../utils/kit.js")
|
||||||
|
const app = getApp()
|
||||||
|
|
||||||
|
Page({
|
||||||
|
data: {
|
||||||
|
action: ["扫码"],
|
||||||
|
field: {},
|
||||||
|
insert: [],
|
||||||
|
},
|
||||||
|
action: {
|
||||||
|
"扫码": function(event, page, data, name) {
|
||||||
|
app.scans(function(res) {
|
||||||
|
res["sess.river"] = page.data.river
|
||||||
|
res["sess.storm"] = page.data.storm
|
||||||
|
app.request("mp/login/scan", res)
|
||||||
|
page.onaction(event, res, res.name)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onaction: function(event, data, name) {
|
||||||
|
data = data || event.target.dataset, name = name || data.name
|
||||||
|
console.log("action", "action", name)
|
||||||
|
this.action[name](event, this, data)
|
||||||
|
},
|
||||||
|
|
||||||
|
onInput: function(event) {var page = this, data = event.target.dataset
|
||||||
|
app.data.insert[data.input.name] = event.detail.value
|
||||||
|
},
|
||||||
|
onFocus: function(event) {},
|
||||||
|
onConfirm: function (event) {
|
||||||
|
console.log(app.data.insert)
|
||||||
|
app.data.insertCB(app.data.insert)
|
||||||
|
wx.navigateBack()
|
||||||
|
},
|
||||||
|
onLoad: function (options) {
|
||||||
|
app.data.insert = {}
|
||||||
|
this.data.field = app.data.field
|
||||||
|
this.data.field = app.data.field
|
||||||
|
this.data.insert = app.data.field.feature.insert
|
||||||
|
console.log("page", "insert", options)
|
||||||
|
kit.List(this.data.insert, function(item) {
|
||||||
|
item.action = item.action || item.value
|
||||||
|
item.value && item.value.startsWith("@") && (item.value = "")
|
||||||
|
app.data.insert[item.name] = item.value
|
||||||
|
})
|
||||||
|
app.title(options.title)
|
||||||
|
this.setData(this.data)
|
||||||
|
},
|
||||||
|
onReady: function () {},
|
||||||
|
onShow: function () {},
|
||||||
|
onHide: function () {},
|
||||||
|
onUnload: function () {},
|
||||||
|
onPullDownRefresh: function () {},
|
||||||
|
onReachBottom: function () {},
|
||||||
|
})
|
26
client/mp/pages/insert/insert.wxml
Normal file
26
client/mp/pages/insert/insert.wxml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<import src="../../app.wxml"/>
|
||||||
|
<template is="action" data="{{action}}"></template>
|
||||||
|
|
||||||
|
<view class="output">
|
||||||
|
<view class="item" wx:for="{{insert}}" wx:key="name">
|
||||||
|
<!-- 文本 -->
|
||||||
|
<input wx:if="{{item._input == 'text'}}" type="text" value="{{item.value}}" placeholder="{{item.name}}"
|
||||||
|
bindtap="onClick" bindinput="onInput" bindconfirm="onEnter" data-index="{{index}}" data-input="{{item}}"/>
|
||||||
|
|
||||||
|
<!-- 文本 -->
|
||||||
|
<textarea wx:elif="{{item._input == 'textarea'}}" value="{{item.value}}" placeholder="{{item.name}}"
|
||||||
|
bindtap="onClick" bindinput="onInput" data-index="{{index}}" data-input="{{item}}"></textarea>
|
||||||
|
|
||||||
|
<!-- 列表 -->
|
||||||
|
<picker wx:elif="{{item._input == 'select'}}" bindchange="onChange" value="{{item.index||0}}" range="{{item.values}}"
|
||||||
|
data-index="{{index}}" data-input="{{item}}">
|
||||||
|
<view>{{item.values[item.index||0]}}</view>
|
||||||
|
</picker>
|
||||||
|
|
||||||
|
<!-- 按钮 -->
|
||||||
|
<button wx:elif="{{item._input == 'button'}}" size="mini" bindtap="onClick" data-index="{{index}}" data-input="{{item}}">{{item.name||item.value}}</button>
|
||||||
|
</view>
|
||||||
|
<button bindtap="onConfirm">提交</button>
|
||||||
|
<button bindtap="onCancel">取消</button>
|
||||||
|
</view>
|
||||||
|
|
1
client/mp/pages/insert/insert.wxss
Normal file
1
client/mp/pages/insert/insert.wxss
Normal file
@ -0,0 +1 @@
|
|||||||
|
/* pages/insert/insert.wxss */
|
@ -7,12 +7,12 @@ Page({
|
|||||||
river: {},
|
river: {},
|
||||||
},
|
},
|
||||||
action: {
|
action: {
|
||||||
"扫码": function(event, page, data, name) {
|
"扫码": function(event, page, data) {
|
||||||
app.scans(function(res) {
|
app.scans(function(res) {
|
||||||
page.onaction(event, res, res.name)
|
page.onaction(event, res, res.name)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"刷新": function(event, page, data, name) {
|
"刷新": function(event, page, data) {
|
||||||
wx.showLoading()
|
wx.showLoading()
|
||||||
app.request("river", {}, function(msg) {
|
app.request("river", {}, function(msg) {
|
||||||
wx.hideLoading()
|
wx.hideLoading()
|
||||||
@ -22,14 +22,14 @@ Page({
|
|||||||
page.setData({river: river})
|
page.setData({river: river})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"登录": function(event, page, data, name) {
|
"登录": function(event, page, data) { app.conf.sessid = "",
|
||||||
app.conf.sessid = "", app.usercode(function() {
|
app.usercode(function() {
|
||||||
page.onaction(event, data, "刷新")
|
page.onaction(event, data, "刷新")
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"授权": function(event, page, data, name) {
|
"授权": function(event, page, data) {
|
||||||
app.userinfo(function(res) {
|
app.userinfo(function(res) {
|
||||||
page.onaction(event, res, res.name)
|
page.onaction(event, data, "刷新")
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -40,8 +40,8 @@ Page({
|
|||||||
},
|
},
|
||||||
ondetail: function(event, data) { var page = this
|
ondetail: function(event, data) { var page = this
|
||||||
data = data || event.target.dataset.item
|
data = data || event.target.dataset.item
|
||||||
|
|
||||||
console.log("detail", "river", data)
|
console.log("detail", "river", data)
|
||||||
|
|
||||||
var river = page.data.river[data.key]
|
var river = page.data.river[data.key]
|
||||||
if (river.tool) {
|
if (river.tool) {
|
||||||
river.hidetool = !river.hidetool
|
river.hidetool = !river.hidetool
|
||||||
|
@ -1,74 +0,0 @@
|
|||||||
const utils = require("../../utils/util.js")
|
|
||||||
const app = getApp()
|
|
||||||
|
|
||||||
Page({
|
|
||||||
data: {
|
|
||||||
picture: "",
|
|
||||||
content: "",
|
|
||||||
comment: "",
|
|
||||||
list: [],
|
|
||||||
},
|
|
||||||
show() {var page = this
|
|
||||||
page.setData({list: (wx.getStorageSync("qrcode")||[]).reverse()})
|
|
||||||
},
|
|
||||||
onScan(event) {var page = this
|
|
||||||
wx.scanCode({success(res) {
|
|
||||||
try {
|
|
||||||
var value = JSON.parse(res.result)
|
|
||||||
switch (value.type) {
|
|
||||||
case "active":
|
|
||||||
app.userinfo(function(userInfo) {
|
|
||||||
app.request("mp/login/auth", {auth: value.name})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} catch(e) {}
|
|
||||||
page.setData({content: res.result})
|
|
||||||
app.download("login/scan?type="+encodeURIComponent(res.scanType)+"&scan="+encodeURIComponent(res.result), {}, function(res) {
|
|
||||||
page.setData({picture: res.tempFilePath})
|
|
||||||
})
|
|
||||||
}})
|
|
||||||
},
|
|
||||||
onCopy(event) {var page = this
|
|
||||||
wx.setClipboardData({data: page.data.content, success(res) {
|
|
||||||
app.toast("复制成功")
|
|
||||||
}})
|
|
||||||
},
|
|
||||||
onSave(event) {var page = this
|
|
||||||
wx.saveImageToPhotosAlbum({filePath: page.data.picture, success(res) {
|
|
||||||
app.toast("保存成功")
|
|
||||||
}})
|
|
||||||
},
|
|
||||||
onList(event) {var page = this
|
|
||||||
wx.saveFile({tempFilePath: page.data.picture, success(res) {
|
|
||||||
var list = wx.getStorageSync("qrcode") || []
|
|
||||||
list.push({time: utils.Time(), index: list.length,
|
|
||||||
path: res.savedFilePath, content: page.data.content, comment: page.data.comment,
|
|
||||||
})
|
|
||||||
wx.setStorageSync("qrcode", list)
|
|
||||||
app.toast("保存成功")
|
|
||||||
page.show()
|
|
||||||
}})
|
|
||||||
},
|
|
||||||
onClear(event) {var page = this
|
|
||||||
var list = wx.getStorageSync("qrcode") || []
|
|
||||||
for (var i = 0; i < list.length; i++) {
|
|
||||||
wx.removeSavedFile({filePath: list[i].path, success(res) {}})
|
|
||||||
}
|
|
||||||
wx.setStorageSync("qrcode", [])
|
|
||||||
app.toast("删除成功")
|
|
||||||
page.show()
|
|
||||||
},
|
|
||||||
onClick(event) {var page = this, data = event.target.dataset
|
|
||||||
wx.showActionSheet({itemList:["显示", "删除", "复制文本", "保存图片"], success(res) {
|
|
||||||
switch (res.tapIndex) {
|
|
||||||
case 0: page.setData({picture: data.picture, content: data.content, comment: data.comment}); break
|
|
||||||
case 1: wx.removeSavedFile({filePath: data.picture, success(res) {app.toast("删除成功")}}); break
|
|
||||||
case 1: wx.setClipboardData({data: data.content, success(res) {app.toast("复制成功")}}); break
|
|
||||||
case 2: wx.saveImageToPhotosAlbum({filePath: data.picture, success(res) {app.toast("保存成功")}}); break
|
|
||||||
case 3:
|
|
||||||
}
|
|
||||||
}})
|
|
||||||
},
|
|
||||||
|
|
||||||
onLoad() {this.show()},
|
|
||||||
})
|
|
@ -1,19 +0,0 @@
|
|||||||
<view class="display">
|
|
||||||
<view><image class="picture" src="{{picture}}"></image></view>
|
|
||||||
<view class="content"><text>扫描内容: </text><textarea class="content" value="{{content}}"/></view>
|
|
||||||
<button bindtap="onScan" type="primary" size="default">扫描二维码</button>
|
|
||||||
<button bindtap="onCopy">复制文本到粘贴板</button>
|
|
||||||
<button bindtap="onSave">保存图片到相册</button>
|
|
||||||
<view class="comment"><text>收藏备注: </text><textarea class="comment" value="{{comment}}"/></view>
|
|
||||||
<button bindtap="onList">添加到本地收藏</button>
|
|
||||||
<button bindtap="onClear" type="warn">清空本地收藏</button>
|
|
||||||
<view>
|
|
||||||
<view wx:for="{{list}}" class="output">
|
|
||||||
<image src="{{item.path}}" bindtap="onClick"
|
|
||||||
data-index="{{index}}" data-picture="{{item.path}}" data-content="{{item.content}}" data-comment="{{item.comment}}"
|
|
||||||
></image>
|
|
||||||
<view><text>{{item.time}}</text></view>
|
|
||||||
<view><text>{{item.comment}}</text></view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
@ -1,31 +0,0 @@
|
|||||||
.display {
|
|
||||||
text-align:center;
|
|
||||||
width:calc(100% - 40px);
|
|
||||||
padding:20px;
|
|
||||||
}
|
|
||||||
.display button {
|
|
||||||
width:100%;
|
|
||||||
}
|
|
||||||
.picture {
|
|
||||||
border:solid 2px green;
|
|
||||||
}
|
|
||||||
.content {
|
|
||||||
text-align:left;
|
|
||||||
font-size:14px;
|
|
||||||
color:gray;
|
|
||||||
}
|
|
||||||
.comment {
|
|
||||||
text-align:left;
|
|
||||||
font-size:14px;
|
|
||||||
color:gray;
|
|
||||||
}
|
|
||||||
.output {
|
|
||||||
text-align:center;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
height:45px;
|
|
||||||
overflow:auto;
|
|
||||||
border:solid 2px gray;
|
|
||||||
width:calc(100% - 4px);
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
const kit = require("../../utils/kit.js")
|
|
||||||
const app = getApp()
|
|
||||||
|
|
||||||
Page({
|
|
||||||
data: {
|
|
||||||
action: ["扫码", "刷新", "登录"],
|
|
||||||
msg: {append: ["key", "name"]},
|
|
||||||
river: "",
|
|
||||||
},
|
|
||||||
action: {
|
|
||||||
"扫码": function(event, page, data, name) {
|
|
||||||
app.scans(function(res) {
|
|
||||||
app.request("mp/login/scan", res, function(msg) {
|
|
||||||
app.modal(res.name, res.text)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
"刷新": function(event, page, data, name) {
|
|
||||||
app.request("storm", {cmds: [data.river||page.data.river]}, function(msg) {
|
|
||||||
page.setData({msg: msg}), msg.nRow() == 1 && page.ondetail(event, data, 0)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
"登录": function(event, page, data, name) {
|
|
||||||
app.conf.sessid = "", app.usercode(function() {
|
|
||||||
page.onaction(event, data, "刷新")
|
|
||||||
})
|
|
||||||
},
|
|
||||||
},
|
|
||||||
onaction: function(event, data, name) {
|
|
||||||
data = data || event.target.dataset, name = name || data.name
|
|
||||||
console.log("action", "storm", name)
|
|
||||||
this.action[name](event, this, data)
|
|
||||||
},
|
|
||||||
ondetail: function(event, data, index) {
|
|
||||||
data = data || event.target.dataset, index = index||data.index||0
|
|
||||||
console.log("detail", "storm", index)
|
|
||||||
app.jumps("action/action", {river: data.river||this.data.river, storm: this.data.msg.key[index], title: this.data.options.title+"."+this.data.msg.name[index]})
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
onLoad: function (options) { this.data.options = options
|
|
||||||
console.log("page", "storm", options)
|
|
||||||
app.conf.sessid = options.sessid || app.conf.sessid
|
|
||||||
app.title(options.title)
|
|
||||||
this.data.river = options.river
|
|
||||||
this.onaction({}, options, "刷新")
|
|
||||||
},
|
|
||||||
onReady: function () {},
|
|
||||||
onHide: function () {},
|
|
||||||
onUnload: function () {},
|
|
||||||
onPullDownRefresh: function () {
|
|
||||||
this.onaction({}, {}, "刷新")
|
|
||||||
},
|
|
||||||
onReachBottom: function () {},
|
|
||||||
onShareAppMessage: function () {}
|
|
||||||
})
|
|
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"usingComponents": {}
|
|
||||||
}
|
|
@ -1,4 +0,0 @@
|
|||||||
<import src="../../app.wxml"/>
|
|
||||||
|
|
||||||
<template is="action" data="{{action}}"></template>
|
|
||||||
<template is="list-name" data="{{msg}}"></template>
|
|
@ -26,5 +26,10 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
return typeof cbs == "function" && cbs(res), res
|
return typeof cbs == "function" && cbs(res), res
|
||||||
},
|
},
|
||||||
|
Item: function(list, cb, cbs) {
|
||||||
|
for (var k in list) {
|
||||||
|
cb(k, list[k])
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
10
frame.js
10
frame.js
@ -365,7 +365,7 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
|
|||||||
for (var k in sub._inputs) { sub._inputs[k]._target.focus(); break }
|
for (var k in sub._inputs) { sub._inputs[k]._target.focus(); break }
|
||||||
})
|
})
|
||||||
}, target) },
|
}, target) },
|
||||||
}, Volcanos.meta.libs.concat([item.display||"/plugin/input.js"]), function(input) { input.sup = sub
|
}, Volcanos.meta.libs.concat([item.display||"/plugin/input.js", "frame.js"]), function(input) { input.sup = sub
|
||||||
input.onimport._init(input, input.Conf(item), item.list||[], function() {}, input._target)
|
input.onimport._init(input, input.Conf(item), item.list||[], function() {}, input._target)
|
||||||
|
|
||||||
if (location.protocol == "chrome-extension:") {
|
if (location.protocol == "chrome-extension:") {
|
||||||
@ -599,9 +599,11 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
|
|||||||
msg.Option(can.Option()), msg.Option(line)
|
msg.Option(can.Option()), msg.Option(line)
|
||||||
var cb = can.onaction[item] || can.onaction["运行"]
|
var cb = can.onaction[item] || can.onaction["运行"]
|
||||||
cb? cb(event, can, item): can.run(event, ["action", item, key=="value"? line.key: key, value.trim()], function(res) {
|
cb? cb(event, can, item): can.run(event, ["action", item, key=="value"? line.key: key, value.trim()], function(res) {
|
||||||
can.ui.display.innerHTML = ""
|
can.run({}, null, function() {
|
||||||
can.onappend.table(can, can.ui.display, "table", res)
|
can.ui.display.innerHTML = ""
|
||||||
can.onappend.board(can, can.ui.display, "board", res)
|
can.onappend.table(can, can.ui.display, "table", res)
|
||||||
|
can.onappend.board(can, can.ui.display, "board", res)
|
||||||
|
})
|
||||||
}, true)
|
}, true)
|
||||||
}
|
}
|
||||||
return {type: "td", inner: value, click: function(event) {
|
return {type: "td", inner: value, click: function(event) {
|
||||||
|
@ -78,7 +78,7 @@ fieldset>form.option>div.item.textarea {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fieldset>div.action {
|
fieldset>div.action {
|
||||||
clear:none;
|
/* clear:none; */
|
||||||
}
|
}
|
||||||
fieldset>div.action>div.item {
|
fieldset>div.action>div.item {
|
||||||
float:left;
|
float:left;
|
||||||
@ -170,12 +170,12 @@ table th {
|
|||||||
font-family:monospace;
|
font-family:monospace;
|
||||||
background-color:#0fbd45;
|
background-color:#0fbd45;
|
||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
padding: 0 6px;
|
padding: 0 10px;
|
||||||
}
|
}
|
||||||
table td {
|
table td {
|
||||||
max-width:1200px;
|
max-width:1200px;
|
||||||
font-family:monospace;
|
font-family:monospace;
|
||||||
padding: 0 6px;
|
padding: 0 10px;
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
}
|
}
|
||||||
table td:hover {
|
table td:hover {
|
||||||
@ -278,7 +278,7 @@ body.white input[type=button]:hover {
|
|||||||
background-color:#FFCC33;
|
background-color:#FFCC33;
|
||||||
}
|
}
|
||||||
body.white select {
|
body.white select {
|
||||||
padding:0 20px;
|
padding:0 10px;
|
||||||
margin-top:2px;
|
margin-top:2px;
|
||||||
border-radius:10px 10px 10px 10px;
|
border-radius:10px 10px 10px 10px;
|
||||||
border:2px solid #99CC66;
|
border:2px solid #99CC66;
|
||||||
|
@ -10,7 +10,13 @@ var base = Volcanos("base", {help: "基础模块",
|
|||||||
return res
|
return res
|
||||||
},
|
},
|
||||||
Int: function(value) {return parseInt(value)||0},
|
Int: function(value) {return parseInt(value)||0},
|
||||||
Obj: function(value, def) {return typeof value == "string" && value != ""? JSON.parse(value): value || def || {}},
|
Obj: function(value, def) {
|
||||||
|
try {
|
||||||
|
return typeof value == "string" && value != ""? JSON.parse(value): value || def || {}
|
||||||
|
} catch {
|
||||||
|
return [value]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
Args: function(obj) {var res = [];
|
Args: function(obj) {var res = [];
|
||||||
for (var k in obj) {
|
for (var k in obj) {
|
||||||
|
@ -174,6 +174,7 @@ var page = Volcanos("page", {help: "网页模块",
|
|||||||
value.last = node, value.first = value.first || node, value[name||""] = value[data.className||""] = value[type] = node
|
value.last = node, value.first = value.first || node, value[name||""] = value[data.className||""] = value[type] = node
|
||||||
item.list && can.page.Append(can, node, item.list, value)
|
item.list && can.page.Append(can, node, item.list, value)
|
||||||
target && target.append && target.append(node)
|
target && target.append && target.append(node)
|
||||||
|
typeof item._init == "function" && item._init(node)
|
||||||
})
|
})
|
||||||
return value
|
return value
|
||||||
}),
|
}),
|
||||||
|
13
lib/user.js
13
lib/user.js
@ -97,8 +97,17 @@ var user = Volcanos("user", {help: "用户模块",
|
|||||||
{type: "td", list: [typeof item == "string"? /* input */ {input: item, data: {autofocus: true}}:
|
{type: "td", list: [typeof item == "string"? /* input */ {input: item, data: {autofocus: true}}:
|
||||||
item.length > 0? /* select */ {select: [item]}:
|
item.length > 0? /* select */ {select: [item]}:
|
||||||
item._input == "select"? /* select */ {select: [[item.name].concat(item.values)], data: item}:
|
item._input == "select"? /* select */ {select: [[item.name].concat(item.values)], data: item}:
|
||||||
item._input? /* input */ {type: "input", data: (item.type = item._input, item)}:
|
item._input? /* input */ {type: "input", data: (item.type = item._input, item), _init: function(target) {
|
||||||
/* other */ item,
|
if (item._input == "text" && item.value && item.value.startsWith("@")) {
|
||||||
|
can.require(["/plugin/input/"+item.value.slice(1)], function(can) {
|
||||||
|
can.core.Item(can.onfigure[item.value.slice(1)], function(key, value) { if (key.startsWith("on")) {
|
||||||
|
target[key] = function(event) { value(event, can, item, target) }
|
||||||
|
} })
|
||||||
|
target.type != "button" && (target.value = "")
|
||||||
|
})
|
||||||
|
can.page.Modify(can, target, {autocomplete: "off"})
|
||||||
|
}
|
||||||
|
}}: /* other */ item,
|
||||||
]},
|
]},
|
||||||
]}
|
]}
|
||||||
})},
|
})},
|
||||||
|
@ -39,7 +39,7 @@ Volcanos("onaction", {help: "控件交互", list: ["创建", "刷新"], _init: f
|
|||||||
create: function(can) {
|
create: function(can) {
|
||||||
can.user.input(event, can, [
|
can.user.input(event, can, [
|
||||||
["类型", "public", "protected", "private"],
|
["类型", "public", "protected", "private"],
|
||||||
{_input: "text", name: "名称", value: "hi"},
|
{_input: "text", name: "群名", value: "hi"},
|
||||||
{_input: "text", name: "简介", value: "hello"},
|
{_input: "text", name: "简介", value: "hello"},
|
||||||
], function(event, button, meta, list) {
|
], function(event, button, meta, list) {
|
||||||
can.run(event, ["action", "create"].concat(list), function(msg) {
|
can.run(event, ["action", "create"].concat(list), function(msg) {
|
||||||
|
@ -20,12 +20,6 @@ Volcanos("onaction", {help: "控件交互", list: [],
|
|||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
|
|
||||||
navigator.clipboard.readText().then(function(text) {
|
|
||||||
console.log(text)
|
|
||||||
can.run(event, ["action", "insert", "paste", "", text], function() {})
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (can.Conf("type")) {
|
switch (can.Conf("type")) {
|
||||||
|
@ -6,8 +6,8 @@ Volcanos("onfigure", {help: "控件详情", list: [], _merge: function(can, sub)
|
|||||||
|
|
||||||
// 设置输入
|
// 设置输入
|
||||||
function set(now) {
|
function set(now) {
|
||||||
target.value = can.base.Time(now);
|
target.value = can.base.Time(now)
|
||||||
item.action == "auto" && can.run({});
|
item.action == "auto" && can.run({})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加插件
|
// 添加插件
|
||||||
@ -58,7 +58,10 @@ Volcanos("onfigure", {help: "控件详情", list: [], _merge: function(can, sub)
|
|||||||
can.page.Appends(can, figure.table, [{type: "tr", list: can.core.List(["日", "一", "二", "三", "四", "五", "六"], function(day) {return {text: [day, "th"]}})}])
|
can.page.Appends(can, figure.table, [{type: "tr", list: can.core.List(["日", "一", "二", "三", "四", "五", "六"], function(day) {return {text: [day, "th"]}})}])
|
||||||
var tr; function add(day, type) {if (day.getDay() == 0) {tr = can.page.Append(can, figure.table, [{type: "tr"}]).tr}
|
var tr; function add(day, type) {if (day.getDay() == 0) {tr = can.page.Append(can, figure.table, [{type: "tr"}]).tr}
|
||||||
can.page.Append(can, tr, [{text: [day.getDate(), "td", can.base.Time(day).split(" ")[0] == can.base.Time(now).split(" ")[0]? "select": type],
|
can.page.Append(can, tr, [{text: [day.getDate(), "td", can.base.Time(day).split(" ")[0] == can.base.Time(now).split(" ")[0]? "select": type],
|
||||||
dataset: {date: day.getTime()}, click: function(event) {set(now = new Date(parseInt(event.target.dataset.date)))},
|
dataset: {date: day.getTime()}, click: function(event) {
|
||||||
|
set(now = new Date(parseInt(event.target.dataset.date)))
|
||||||
|
can.page.Remove(can, figure.fieldset)
|
||||||
|
},
|
||||||
}])
|
}])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,21 +3,22 @@ Volcanos("onfigure", {help: "控件详情", list: [], _merge: function(can, sub)
|
|||||||
}); return true },
|
}); return true },
|
||||||
|
|
||||||
key: {onclick: function(event, can, item, target) {
|
key: {onclick: function(event, can, item, target) {
|
||||||
can._figure && can.page.Remove(can, can._figure.fieldset)
|
|
||||||
can._figure = can.onappend.field(can, can._target, "input key", {})
|
|
||||||
|
|
||||||
var figure = can._figure, offset = can.page.offset(can._target)
|
|
||||||
can.page.Modify(can, figure.fieldset, {style: {top: event.clientY-offset.Top+60, left: event.clientX-offset.Left+60}})
|
|
||||||
can.page.Remove(can, figure.legend), can.page.Append(can, figure.action, [
|
|
||||||
{button: ["关闭", function(event) {
|
|
||||||
can._figure && can.page.Remove(can, can._figure.fieldset)
|
|
||||||
}]},
|
|
||||||
])
|
|
||||||
|
|
||||||
function run() { var msg = can.request(event); msg.Option(item)
|
function run() { var msg = can.request(event); msg.Option(item)
|
||||||
can.run(event, ["action", "input", item.name, target.value], function(msg) {
|
can.run(event, ["action", "input", item.name, target.value], function(msg) {
|
||||||
|
if (!msg.append) { return }
|
||||||
|
|
||||||
|
var figure = can.onappend.field(can, document.body, "input key", {})
|
||||||
|
can.page.Modify(can, figure.fieldset, {style: {top: event.clientY+10, left: event.clientX}})
|
||||||
|
can.page.Remove(can, figure.legend)
|
||||||
|
|
||||||
|
can.page.Append(can, figure.action, [
|
||||||
|
{button: ["清空", function(event) { target.value = "" }]},
|
||||||
|
{button: ["关闭", function(event) { can.page.Remove(can, figure.fieldset) }]},
|
||||||
|
])
|
||||||
|
|
||||||
can.page.AppendTable(can, figure.output, msg, msg.append, function(event, value, key, index, tr, td) {
|
can.page.AppendTable(can, figure.output, msg, msg.append, function(event, value, key, index, tr, td) {
|
||||||
target.value = value; msg.Option("_refresh") && run()
|
target.value = value; msg.Option("_refresh") && run()
|
||||||
|
can.page.Remove(can, figure.fieldset)
|
||||||
})
|
})
|
||||||
}, true)
|
}, true)
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
item.click()
|
item.click()
|
||||||
})
|
})
|
||||||
can.onaction.view({}, can, "view", can.user.Searchs(can, "view")||"text")
|
can.onaction.view({}, can, "view", can.user.Searchs(can, "view")||"text")
|
||||||
|
can.page.Modify(can, can._action, {style: {display: "none"}})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_stat: function(can, msg) {
|
_stat: function(can, msg) {
|
||||||
@ -48,7 +49,8 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
])
|
])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_task: function(can, msg, time, list, view) { return {text: ["", "td"],
|
_task: function(can, msg, time, list, view) {
|
||||||
|
return {text: ["", "td"],
|
||||||
ondragover: function(event) { event.preventDefault()
|
ondragover: function(event) { event.preventDefault()
|
||||||
can.page.Select(can, can.ui.content, "td", function(item) {
|
can.page.Select(can, can.ui.content, "td", function(item) {
|
||||||
can.page.ClassList.del(can, item, "over")
|
can.page.ClassList.del(can, item, "over")
|
||||||
@ -58,7 +60,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.drop(event, event.target, time)
|
can.drop(event, event.target, time)
|
||||||
},
|
},
|
||||||
ondblclick: function(event) {
|
ondblclick: function(event) {
|
||||||
can.onaction.insertTask(event, can, new Date(time))
|
can.onaction.insertTask(event, can, can.base.Time(new Date(time)))
|
||||||
},
|
},
|
||||||
list: can.core.List(list, function(task) { return typeof task == "string"? {view: ["date", "div", task]}:
|
list: can.core.List(list, function(task) { return typeof task == "string"? {view: ["date", "div", task]}:
|
||||||
{view: [can.onexport.style(can, task), "div", can.onexport[can.Action("view")||view||"name"](can, task)],
|
{view: [can.onexport.style(can, task), "div", can.onexport[can.Action("view")||view||"name"](can, task)],
|
||||||
@ -77,14 +79,35 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.onaction.modifyTask(event, can, task, "status", item)
|
can.onaction.modifyTask(event, can, task, "status", item)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
_init: function(target) {
|
||||||
|
can._option._task && can._option._task.id == task.id && target.click()
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
} },
|
} },
|
||||||
_profile: function(can, msg, task) { can.ui.profile.innerHTML = ""
|
_profile: function(can, msg, task) { can.ui.profile.innerHTML = ""
|
||||||
can.task = task, can.Status(task)
|
can._option._task = can.task = task, can.Status(task)
|
||||||
|
|
||||||
can.page.Append(can, can.ui.profile, [{th: ["key", "value"]}])
|
can.page.Append(can, can.ui.profile, [{th: ["key", "value"]}])
|
||||||
|
|
||||||
|
task.extra && can.core.Item(can.base.Obj(task.extra), function(key, value) {
|
||||||
|
task["extra."+key] = value
|
||||||
|
}) && delete(task.extra)
|
||||||
|
|
||||||
can.core.Item(task, function(key, value) { can.page.Append(can, can.ui.profile, [{td: [key, value],
|
can.core.Item(task, function(key, value) { can.page.Append(can, can.ui.profile, [{td: [key, value],
|
||||||
|
onclick: function(event) {
|
||||||
|
if (event.target.type == "button") { var name = event.target.value||event.target.name
|
||||||
|
var cb = can.onaction[name];
|
||||||
|
if (typeof cb == "function") {
|
||||||
|
cb(event, can, name)
|
||||||
|
} else {
|
||||||
|
var msg = can.request(event); can.core.Item(can.task, msg.Option)
|
||||||
|
can.run(event, ["action", name], function(msg) {
|
||||||
|
can.run({})
|
||||||
|
}, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
ondblclick: function(event) {
|
ondblclick: function(event) {
|
||||||
can.onappend.modify(can, event.target, function(ev, value, old) {
|
can.onappend.modify(can, event.target, function(ev, value, old) {
|
||||||
can.onaction.modifyTask(event, can, task, key, value)
|
can.onaction.modifyTask(event, can, task, key, value)
|
||||||
@ -113,7 +136,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
})
|
})
|
||||||
|
|
||||||
var head = ["hour", "task"]
|
var head = ["hour", "task"]
|
||||||
var list = [0]; for (var i = 6; i < 24; i++) { list.push(i) }
|
var list = [0]; for (var i = 7; i < 23; i++) { list.push(can.base.Number(i, 2)) }
|
||||||
|
|
||||||
function set(hour) { return can.base.Time(can.base.TimeAdd(begin_time, hour/24)) }
|
function set(hour) { return can.base.Time(can.base.TimeAdd(begin_time, hour/24)) }
|
||||||
var table = can.page.Append(can, can.ui.content, [{type: "table", list:
|
var table = can.page.Append(can, can.ui.content, [{type: "table", list:
|
||||||
@ -124,13 +147,13 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
}]).table
|
}]).table
|
||||||
},
|
},
|
||||||
week: function(can, msg) { var begin_time = new Date(can.base.Time(can.Option("begin_time")))
|
week: function(can, msg) { var begin_time = new Date(can.base.Time(can.Option("begin_time")))
|
||||||
function key(time) { return time.getDay()+" "+time.getHours() }
|
function key(time) { return time.getDay()+" "+can.base.Number(time.getHours(), 2) }
|
||||||
var hash = {}; msg.Table(function(value) {
|
var hash = {}; msg.Table(function(value) {
|
||||||
var k = key(new Date(value.begin_time)); hash[k] = (hash[k]||[]).concat([value])
|
var k = key(new Date(value.begin_time)); hash[k] = (hash[k]||[]).concat([value])
|
||||||
})
|
})
|
||||||
|
|
||||||
var head = ["hour"].concat(["周日", "周一", "周二", "周三", "周四", "周五", "周六"]);
|
var head = ["hour"].concat(["周日", "周一", "周二", "周三", "周四", "周五", "周六"]);
|
||||||
var list = [0]; for (var i = 6; i < 24; i++) { list.push(can.base.Number(i, 2)) }
|
var list = [0]; for (var i = 7; i < 23; i++) { list.push(can.base.Number(i, 2)) }
|
||||||
|
|
||||||
function set(week, hour) { return can.base.Time(can.base.TimeAdd(begin_time, week-begin_time.getDay()+hour/24)) }
|
function set(week, hour) { return can.base.Time(can.base.TimeAdd(begin_time, week-begin_time.getDay()+hour/24)) }
|
||||||
var table = can.page.Append(can, can.ui.content, [{type: "table", list:
|
var table = can.page.Append(can, can.ui.content, [{type: "table", list:
|
||||||
@ -167,21 +190,21 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
}]).table
|
}]).table
|
||||||
},
|
},
|
||||||
year: function(can, msg) { var begin_time = new Date(can.base.Time(can.Option("begin_time")))
|
year: function(can, msg) { var begin_time = new Date(can.base.Time(can.Option("begin_time")))
|
||||||
function key(time) { return can.base.Time(time, "%y-%m") }
|
function key(time) { return can.base.Time(time, "%y-%m ")+time.getDay() }
|
||||||
var hash = {}; msg.Table(function(value) {
|
var hash = {}; msg.Table(function(value) {
|
||||||
var k = key(new Date(value.begin_time)); hash[k] = (hash[k]||[]).concat([value])
|
var k = key(new Date(value.begin_time)); hash[k] = (hash[k]||[]).concat([value])
|
||||||
})
|
})
|
||||||
|
|
||||||
var head = ["month", "task"]
|
var head = ["month"].concat(["周日", "周一", "周二", "周三", "周四", "周五", "周六"]);
|
||||||
var list = [0]; for (var i = 1; i < 13; i++) { list.push(i) }
|
var list = [0]; for (var i = 1; i < 13; i++) { list.push(i) }
|
||||||
|
|
||||||
function set(month) { return begin_time.getFullYear()+"-"+can.base.Number(month, 2) }
|
function set(month, weekday) { return begin_time.getFullYear()+"-"+can.base.Number(month, 2)+" "+weekday }
|
||||||
var table = can.page.Append(can, can.ui.content, [{type: "table", list:
|
var table = can.page.Append(can, can.ui.content, [{type: "table", list:
|
||||||
can.core.List(list, function(date, row) {
|
can.core.List(list, function(date, row) {
|
||||||
if (row == 0) { return {type: "tr", list: can.core.List(head, function(head) { return {text: [head, "th"]} })} }
|
if (row == 0) { return {type: "tr", list: can.core.List(head, function(head) { return {text: [head, "th"]} })} }
|
||||||
return {type: "tr", list: can.core.List(head, function(head, col) {
|
return {type: "tr", list: can.core.List(head, function(head, col) {
|
||||||
if (col == 0) { return {text: [row+"", "td"]} }
|
if (col == 0) { return {text: [row+"", "td"]} }
|
||||||
return can.onimport._task(can, msg, set(row)+can.base.Time(begin_time, "-%d %H:%M:%S"), hash[set(row)], "text")
|
return can.onimport._task(can, msg, set(row, col-1)+can.base.Time(begin_time, "-%d %H:%M:%S"), hash[set(row, col-1)], "text")
|
||||||
})}
|
})}
|
||||||
})
|
})
|
||||||
}]).table
|
}]).table
|
||||||
@ -208,53 +231,36 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
}]).table
|
}]).table
|
||||||
},
|
},
|
||||||
}, ["/plugin/local/team/plan.css"])
|
}, ["/plugin/local/team/plan.css"])
|
||||||
Volcanos("onaction", {help: "组件交互", list: ["导出", "导入", "统计", "详情", "",
|
Volcanos("onaction", {help: "组件交互", list: [
|
||||||
["level", "all", "l1", "l2", "l3", "l4", "l5"],
|
// ["level", "all", "l1", "l2", "l3", "l4", "l5"],
|
||||||
["status", "all", "prepare", "process", "cancel", "finish"],
|
// ["status", "all", "prepare", "process", "cancel", "finish"],
|
||||||
["score", "all", "s1", "s2", "s3", "s4", "s5"],
|
// ["score", "all", "s1", "s2", "s3", "s4", "s5"],
|
||||||
["view", "", "name", "text", "level", "score"],
|
["view", "", "name", "text", "level", "score"],
|
||||||
"", "添加", "启动", "运行", "完成",
|
|
||||||
],
|
],
|
||||||
insertTask: function(event, can, now) { now = now || new Date()
|
insertTask: function(event, can, time) {
|
||||||
can.require([
|
can.user.input(event, can, can.Conf("feature").insert, function(event, button, data, list) {
|
||||||
"/plugin/input/key",
|
var args = ["action", "insert"]; can.core.Item(data, function(key, value) {
|
||||||
"/plugin/input/date",
|
if (key == "begin_time") {
|
||||||
]); function date(event) {
|
value = value || time
|
||||||
can.onfigure.date.onclick(event, can, {}, event.target)
|
}
|
||||||
}
|
if (key == "close_time") {
|
||||||
|
value = value || time
|
||||||
can.run(event, ["action", "plugin"], function(msg) {
|
}
|
||||||
var ui = can.user.input(event, can, [
|
key && value && args.push(key, value)
|
||||||
{name: "zone", select: [["zone"].concat(msg.append), function(event, value) {
|
|
||||||
can.page.Appends(can, ui.type, can.core.List(msg[value], function(item) {
|
|
||||||
return {type: "option", value: item, inner: item}
|
|
||||||
}))
|
|
||||||
}]},
|
|
||||||
{name: "type", select: [["type"].concat(msg[msg.append[0]]), function(event, value) {
|
|
||||||
|
|
||||||
}]},
|
|
||||||
{name: "name", type: "input", onclick: function(event) {
|
|
||||||
can.onfigure.key.onclick(event, can, {name: "name", zone: ui.zone.value, type: ui.type.value}, event.target)
|
|
||||||
}, autocomplete: "off"},
|
|
||||||
{name: "text", type: "input", onclick: function(event) {
|
|
||||||
can.onfigure.key.onclick(event, can, {name: "text", zone: ui.zone.value, type: ui.type.value}, event.target)
|
|
||||||
}, autocomplete: "off"},
|
|
||||||
{name: "begin_time", type: "input", value: can.base.Time(can.base.TimeAdd(now, now.getHours()/24)), onclick: date},
|
|
||||||
{name: "end_time", type: "input", value: can.base.Time(can.base.TimeAdd(now, (now.getHours()+1)/24)), onclick: date},
|
|
||||||
], function(event, button, data, list) {
|
|
||||||
can.run(event, ["action", "insert"].concat(list), function(msg) {
|
|
||||||
can.user.toast(can, "添加成功")
|
|
||||||
can.run({})
|
|
||||||
}, true)
|
|
||||||
return true
|
|
||||||
})
|
})
|
||||||
}, true)
|
can.run(event, args, function(msg) {
|
||||||
|
can.user.toast(can, "添加成功")
|
||||||
|
can.run({})
|
||||||
|
}, true)
|
||||||
|
return true
|
||||||
|
})
|
||||||
},
|
},
|
||||||
modifyTask: function(event, can, task, key, value) {
|
modifyTask: function(event, can, task, key, value) {
|
||||||
var msg = can.request(event); msg.Option(task)
|
var msg = can.request(event); msg.Option(task)
|
||||||
can.run(event, ["action", "modify", key, value, task[key]], function(msg) {
|
can.run(event, ["action", "modify", key, value, task[key]], function(msg) {
|
||||||
task[key] = value, can.onimport._profile(can, can._msg, task)
|
task[key] = value, can.onimport._profile(can, can._msg, task)
|
||||||
can.user.toast(can, "修改成功")
|
can.user.toast(can, "修改成功")
|
||||||
|
can.run({})
|
||||||
}, true)
|
}, true)
|
||||||
},
|
},
|
||||||
pluginTask: function(event, can, task, key) {
|
pluginTask: function(event, can, task, key) {
|
||||||
@ -295,18 +301,58 @@ Volcanos("onaction", {help: "组件交互", list: ["导出", "导入", "统计",
|
|||||||
"统计": function(event, can, key) {
|
"统计": function(event, can, key) {
|
||||||
can.page.Modify(can, can.ui.project, {style: {display: can.ui.project.style.display=="none"? "table": "none"}})
|
can.page.Modify(can, can.ui.project, {style: {display: can.ui.project.style.display=="none"? "table": "none"}})
|
||||||
},
|
},
|
||||||
"添加": function(event, can, key) {
|
|
||||||
can.onaction.insertTask(event, can)
|
|
||||||
},
|
|
||||||
"详情": function(event, can, key) {
|
"详情": function(event, can, key) {
|
||||||
can.page.Modify(can, can.ui.profile, {style: {display: can.ui.profile.style.display=="none"? "table": "none"}})
|
can.page.Modify(can, can.ui.profile, {style: {display: can.ui.profile.style.display=="none"? "table": "none"}})
|
||||||
},
|
},
|
||||||
"启动": function(event, can, key) {
|
"启动": function(event, can, key) {
|
||||||
can.onaction.modifyTask(event, can, task, "status", "process", can.task.status)
|
can.onaction.modifyTask(event, can, can.task, "status", "process", can.task.status)
|
||||||
},
|
},
|
||||||
"运行": function(event, can, key) {
|
"运行": function(event, can, key) {
|
||||||
can.onaction.pluginTask(event, can, can.task)
|
can.onaction.pluginTask(event, can, can.task)
|
||||||
},
|
},
|
||||||
|
"插件": function(event, can, key) {
|
||||||
|
can.task["extra.cmds"] || can.user.input(event, can, ["extra.cmds", "extra.args"], function(event, button, data, list) {
|
||||||
|
var msg = can.request(event)
|
||||||
|
can.core.Item(can.task, msg.Option)
|
||||||
|
can.run(event, ["action", "modify", "extra.cmds", list[0]], function(msg) {
|
||||||
|
var msg = can.request({})
|
||||||
|
can.core.Item(can.task, msg.Option)
|
||||||
|
can.run(msg._event, ["action", "modify", "extra.args", list[1]], function(msg) {
|
||||||
|
can.run({})
|
||||||
|
}, true)
|
||||||
|
}, true)
|
||||||
|
})
|
||||||
|
can.task["extra.cmds"] && can.run(event, ["action", "command", can.task["extra.cmds"]], function(msg) {
|
||||||
|
msg.Table(function(item) {
|
||||||
|
var feature = can.base.Obj(item.meta)
|
||||||
|
feature.width = 400
|
||||||
|
feature.height = 400
|
||||||
|
var plugin = can.onappend._init(can, {name: item.name, help: item.help, inputs: can.base.Obj(item.list, [
|
||||||
|
{type: "text", name: "path", value: "hi.svg"},
|
||||||
|
{type: "button", name: "查看", value: "auto"},
|
||||||
|
]), index: can.task["extra.cmds"], args: can.base.Obj(can.task["extra.args"]), feature: feature}, Volcanos.meta.libs.concat(["/plugin/state.js"]), function(sub) {
|
||||||
|
sub.run = function(event, cmds, cb, silent) {
|
||||||
|
can.run(event, ["action", "command", can.task["extra.cmds"]].concat(cmds), function(msg) {
|
||||||
|
typeof cb == "function" && cb(msg)
|
||||||
|
}, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
can.page.Modify(can, sub._target, {style: {position: "fixed",
|
||||||
|
left: event.x-(event.x>400? 400: 100),
|
||||||
|
top: event.y-(event.y>400? 400: 0),
|
||||||
|
}})
|
||||||
|
can.Timer(100, function() {
|
||||||
|
can.page.Append(can, sub._option, [{view: "item button", list: [{button: ["关闭", function(event) {
|
||||||
|
can.page.Remove(can, sub._target)
|
||||||
|
}] }] }])
|
||||||
|
})
|
||||||
|
}, document.body)
|
||||||
|
})
|
||||||
|
}, true)
|
||||||
|
},
|
||||||
|
"开始": function(event, can, key) {
|
||||||
|
can.onaction.modifyTask(event, can, can.task, "status", "process", can.task.status)
|
||||||
|
},
|
||||||
"完成": function(event, can, key) {
|
"完成": function(event, can, key) {
|
||||||
can.onaction.modifyTask(event, can, can.task, "status", "finish", can.task.status)
|
can.onaction.modifyTask(event, can, can.task, "status", "finish", can.task.status)
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user