diff --git a/client/mp/app.js b/client/mp/app.js index aa291278..4cb0bb2f 100644 --- a/client/mp/app.js +++ b/client/mp/app.js @@ -1,24 +1,49 @@ +const utils = require("utils/util.js") + App({ - conf: {serve: "https://shylinux.com/chat/mp"}, - request(cmd, data, cb) {var app = this; data.sessid = app.conf.sessid + data: {}, + conf: {serve: "https://shylinux.com/chat"}, + request: function(cmd, data, cb) {var app = this; data.sessid = app.conf.sessid wx.request({method: "POST", url: app.conf.serve+"/"+cmd, data: data, success(res) {var msg = res.data + console.log(msg) + if (res.statusCode == 401) {delete(app.conf.userInfo) + app.userinfo(function() {app.request(cmd, data, cb)}) + return + } msg.__proto__ = { Result() {return msg.result && msg.result.length > 0 && msg.result.join("") || ""}, + Table(cb) {var row = 0 + for (var i = 0; i < msg.append.length; i++) { + row = msg[msg.append[i]].length > row? msg[msg.append[i]].length: row + } + for (var i = 0; i < row; i++) { + var line = {} + for (var k in msg.append) { + line[msg.append[k]] = msg[msg.append[k]][i] + } + typeof cb == "function" && cb(line, i, row) + } + }, } typeof cb == "function" && cb(msg) }}) }, - download(cmd, data, cb) {var app = this; data.sessid = app.conf.sessid + download: function(cmd, data, cb) {var app = this; data.sessid = app.conf.sessid wx.downloadFile({url: app.conf.serve+"/"+cmd, data: data, success(res) { typeof cb == "function" && cb(res) }}) }, - toast(title) {wx.showToast({title: title})}, - onLaunch() {var app = this - wx.login({success(res) {app.request("login", {code: res.code}, function(msg) {app.conf.sessid = msg.Result() + userinfo: function(cb) {var app = this + if (app.conf.userInfo) {return typeof cb == "function" && cb(app.conf.userInfo)} + wx.login({success(res) {app.request("mp/login/code", {code: res.code}, function(msg) {app.conf.sessid = msg.Result() wx.getSetting({success(res) {res.authSetting['scope.userInfo'] && wx.getUserInfo({success(res) { - app.request("login", res.userInfo, function(msg) {app.conf.userInfo = res.userInfo}) + app.request("mp/login/info", res.userInfo, function(msg) {app.conf.userInfo = res.userInfo, typeof cb == "function" && cb(res.userInfo)}) }})}}) })}}) }, + jumps: function(url, args, cb) { + wx.navigateTo({url: utils.Args(url, args), success: cb}) + }, + toast: function(title) {wx.showToast({title: title})}, + onLaunch: function() {}, }) diff --git a/client/mp/app.json b/client/mp/app.json index 38c82445..8a45b5c0 100644 --- a/client/mp/app.json +++ b/client/mp/app.json @@ -1,13 +1,18 @@ { "pages": [ - "pages/index/index", - "pages/logs/logs" + "pages/river/river", + "pages/storm/storm", + "pages/action/action", + "pages/active/active", + "pages/favor/favor", + "pages/index/index" ], "window": { - "backgroundTextStyle": "light", - "navigationBarBackgroundColor": "#fff", + "backgroundColor": "#000", + "backgroundTextStyle": "dark", + "navigationBarBackgroundColor": "#000", "navigationBarTitleText": "终端工具链", - "navigationBarTextStyle": "black" + "navigationBarTextStyle": "white" }, "style": "v2", "sitemapLocation": "sitemap.json" diff --git a/client/mp/app.wxss b/client/mp/app.wxss index e69de29b..93e3a156 100644 --- a/client/mp/app.wxss +++ b/client/mp/app.wxss @@ -0,0 +1,33 @@ +.display { + color:white; + font-size:14px; + font-family:monospace; + background-color:#272822; + position:absolute; + white-space:pre; + height:100%; + width:100%; +} + +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; +} diff --git a/client/mp/pages/action/action.js b/client/mp/pages/action/action.js new file mode 100644 index 00000000..5a6b6c2a --- /dev/null +++ b/client/mp/pages/action/action.js @@ -0,0 +1,73 @@ +const utils = require("../../utils/util.js") +const app = getApp() + +Page({ + data: { + button: [ + {name: "串行", bind: "action"}, + {name: "并行", bind: "action"}, + {name: "清屏", bind: "refresh"}, + {name: "清空", bind: "refresh"}, + {name: "共享", bind: "refresh"}, + ], + msg: {append: ["hi", "he"], hi: [1, 2], he: [3, 4]}, + res: [], + }, + run: function(order, cb) {var page = this + app.request("action", {cmds: [page.data.river, page.data.storm, order]}, function(msg) { + page.data.res[order].msg = msg + typeof cb == "function" && cb(msg) + page.setData({res: page.data.res}) + }) + }, + action: function(event) {var page = this, name = event.target.dataset.name + switch (name) { + case "串行": + function cb(i) { + page.run(i, function() {i < page.data.res.length && cb(i+1)}) + } + cb(0) + break + case "并行": + for (var i = 0; i < page.data.res.length; i++) {page.run(i)} + break + } + }, + refresh: function() {var page = this, data = [] + app.userinfo(function(userinfo) { + app.request("action", {cmds: [page.data.river, page.data.storm]}, function(msg) { + msg.Table(function(line) { + line.feature = JSON.parse(line.feature) + line.inputs = JSON.parse(line.inputs) + if (!line.inputs || line.inputs.length === 0) { + line.inputs = [{_input: "text"}, {_input: "button", value: "执行"}] + } + data.push(line) + }) + page.setData({res: app.data[page.data.river+page.data.storm] = page.data.res = data}) + }) + }) + }, + + onFocus: function(event) {}, + onInput: function(event) {}, + onEnter: function(event) {var page = this, data = event.target.dataset + console.log(event) + }, + onClick: function(event) {this.run(event.target.dataset.order)}, + + onLoad: function (options) {var page = this + page.data.river = options.river + page.data.storm = options.storm + var data = app.data[options.river+options.storm] + if (data) {return page.setData({res: page.data.res = data})} + this.refresh() + }, + onReady: function () {}, + onShow: function () {}, + onHide: function () {}, + onUnload: function () {}, + onPullDownRefresh: function () {this.refresh()}, + onReachBottom: function () {}, + onShareAppMessage: function () {} +}) diff --git a/client/mp/pages/action/action.json b/client/mp/pages/action/action.json new file mode 100644 index 00000000..5ed4543e --- /dev/null +++ b/client/mp/pages/action/action.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} diff --git a/client/mp/pages/action/action.wxml b/client/mp/pages/action/action.wxml new file mode 100644 index 00000000..871fcd2f --- /dev/null +++ b/client/mp/pages/action/action.wxml @@ -0,0 +1,26 @@ + + + + + + + + + {{field.name}}({{field.help}}) + + + + + + + + + + + + + +
{{item}}
{{field.msg[item][line]}}
+ {{item}} +
+
diff --git a/client/mp/pages/action/action.wxss b/client/mp/pages/action/action.wxss new file mode 100644 index 00000000..3c18c3d0 --- /dev/null +++ b/client/mp/pages/action/action.wxss @@ -0,0 +1,23 @@ +view.action view { + float:left; +} +view.detail { + margin-top:10px; + clear:both; +} +input { + width:80px; +} +text.title { + font-weight:bold; + font-size:18px; +} +view.detail>view.inputs>view { + float:left; +} +.input { + border:solid 1px green; +} +.output { + background-color:#272822; +} diff --git a/client/mp/pages/active/active.js b/client/mp/pages/active/active.js new file mode 100644 index 00000000..be30cecb --- /dev/null +++ b/client/mp/pages/active/active.js @@ -0,0 +1,27 @@ +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 () {} +}) diff --git a/client/mp/pages/active/active.json b/client/mp/pages/active/active.json new file mode 100644 index 00000000..5ed4543e --- /dev/null +++ b/client/mp/pages/active/active.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} diff --git a/client/mp/pages/active/active.wxml b/client/mp/pages/active/active.wxml new file mode 100644 index 00000000..34bfe989 --- /dev/null +++ b/client/mp/pages/active/active.wxml @@ -0,0 +1,8 @@ + + + + + +
{{item}}
{{msg[item][line]}}
+ {{item}} +
diff --git a/client/mp/pages/active/active.wxss b/client/mp/pages/active/active.wxss new file mode 100644 index 00000000..249cb658 --- /dev/null +++ b/client/mp/pages/active/active.wxss @@ -0,0 +1,38 @@ +.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; +} diff --git a/client/mp/pages/favor/favor.js b/client/mp/pages/favor/favor.js new file mode 100644 index 00000000..be30cecb --- /dev/null +++ b/client/mp/pages/favor/favor.js @@ -0,0 +1,27 @@ +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 () {} +}) diff --git a/client/mp/pages/favor/favor.json b/client/mp/pages/favor/favor.json new file mode 100644 index 00000000..5ed4543e --- /dev/null +++ b/client/mp/pages/favor/favor.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} diff --git a/client/mp/pages/favor/favor.wxml b/client/mp/pages/favor/favor.wxml new file mode 100644 index 00000000..34bfe989 --- /dev/null +++ b/client/mp/pages/favor/favor.wxml @@ -0,0 +1,8 @@ + + + + + +
{{item}}
{{msg[item][line]}}
+ {{item}} +
diff --git a/client/mp/pages/favor/favor.wxss b/client/mp/pages/favor/favor.wxss new file mode 100644 index 00000000..249cb658 --- /dev/null +++ b/client/mp/pages/favor/favor.wxss @@ -0,0 +1,38 @@ +.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; +} diff --git a/client/mp/pages/index/index.js b/client/mp/pages/index/index.js index 9c6687ee..f7169e44 100644 --- a/client/mp/pages/index/index.js +++ b/client/mp/pages/index/index.js @@ -1,6 +1,6 @@ +const utils = require("../../utils/util.js") const app = getApp() -var utils = require("../../utils/util.js") Page({ data: { picture: "", @@ -13,8 +13,17 @@ Page({ }, 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?type="+encodeURIComponent(res.scanType)+"&scan="+encodeURIComponent(res.result), {}, function(res) { + app.download("login/scan?type="+encodeURIComponent(res.scanType)+"&scan="+encodeURIComponent(res.result), {}, function(res) { page.setData({picture: res.tempFilePath}) }) }}) @@ -60,17 +69,5 @@ Page({ } }}) }, - onscan(event) {var page = this - wx.scanCode({success(res) { - app.download("login?type="+encodeURIComponent(res.scanType)+"&scan="+encodeURIComponent(res.result), {}, function(res) { - wx.saveFile({tempFilePath: res.tempFilePath, success(res) { - var list = wx.getStorageSync("qrcode") || [] - list.push({path: res.savedFilePath, index: list.length, time: utils.Time()}) - wx.setStorageSync("qrcode", list) - page.show() - }}) - }) - }}) - }, onLoad() {this.show()}, }) diff --git a/client/mp/pages/logs/logs.js b/client/mp/pages/logs/logs.js deleted file mode 100644 index b2b967d8..00000000 --- a/client/mp/pages/logs/logs.js +++ /dev/null @@ -1,15 +0,0 @@ -//logs.js -const util = require('../../utils/util.js') - -Page({ - data: { - logs: [] - }, - onLoad: function () { - this.setData({ - logs: (wx.getStorageSync('logs') || []).map(log => { - return util.formatTime(new Date(log)) - }) - }) - } -}) diff --git a/client/mp/pages/logs/logs.json b/client/mp/pages/logs/logs.json deleted file mode 100644 index 3ee76c18..00000000 --- a/client/mp/pages/logs/logs.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "navigationBarTitleText": "查看启动日志", - "usingComponents": {} -} \ No newline at end of file diff --git a/client/mp/pages/logs/logs.wxml b/client/mp/pages/logs/logs.wxml deleted file mode 100644 index b5a85ac6..00000000 --- a/client/mp/pages/logs/logs.wxml +++ /dev/null @@ -1,6 +0,0 @@ - - - - {{index + 1}}. {{log}} - - diff --git a/client/mp/pages/logs/logs.wxss b/client/mp/pages/logs/logs.wxss deleted file mode 100644 index 94d4b88a..00000000 --- a/client/mp/pages/logs/logs.wxss +++ /dev/null @@ -1,8 +0,0 @@ -.log-list { - display: flex; - flex-direction: column; - padding: 40rpx; -} -.log-item { - margin: 10rpx; -} diff --git a/client/mp/pages/river/river.js b/client/mp/pages/river/river.js new file mode 100644 index 00000000..2b3a8550 --- /dev/null +++ b/client/mp/pages/river/river.js @@ -0,0 +1,40 @@ +const utils = require("../../utils/util.js") +const app = getApp() + +Page({ + data: { + cmd: "", + msg: {append: ["hi", "he"], hi: [1, 2], he: [3, 4]}, + }, + + onClick: function(event) {var page = this, index = event.currentTarget.dataset.index + app.jumps("/pages/storm/storm", {river: page.data.msg.key[index]}) + }, + 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) {var page = this + app.userinfo(function(userinfo) { + app.request("river", {}, function(msg) { + page.setData({msg: msg}) + if (msg[msg.append[0]].length == 1) { + app.jumps("/pages/storm/storm", {river: page.data.msg.key[0]}) + } + }) + }) + }, + onReady: function () {}, + onShow: function () { + }, + onHide: function () {}, + onUnload: function () {}, + onPullDownRefresh: function () {}, + onReachBottom: function () {}, + onShareAppMessage: function () {} +}) diff --git a/client/mp/pages/river/river.json b/client/mp/pages/river/river.json new file mode 100644 index 00000000..5ed4543e --- /dev/null +++ b/client/mp/pages/river/river.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} diff --git a/client/mp/pages/river/river.wxml b/client/mp/pages/river/river.wxml new file mode 100644 index 00000000..0037a8b9 --- /dev/null +++ b/client/mp/pages/river/river.wxml @@ -0,0 +1,5 @@ + + + +
{{msg.name[line]}}
+
diff --git a/client/mp/pages/river/river.wxss b/client/mp/pages/river/river.wxss new file mode 100644 index 00000000..2e260f5d --- /dev/null +++ b/client/mp/pages/river/river.wxss @@ -0,0 +1,5 @@ +td { + font-size:18px; + padding:10px; +} + diff --git a/client/mp/pages/storm/storm.js b/client/mp/pages/storm/storm.js new file mode 100644 index 00000000..8c524581 --- /dev/null +++ b/client/mp/pages/storm/storm.js @@ -0,0 +1,42 @@ +const utils = require("../../utils/util.js") +const app = getApp() + +Page({ + data: { + cmd: "", + river: "", + msg: {append: ["hi", "he"], hi: [1, 2], he: [3, 4]}, + }, + + onClick: function(event) {var page = this, index = event.currentTarget.dataset.index + app.jumps("/pages/action/action", {river: page.data.river, storm: page.data.msg.key[index]}) + }, + 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) {var page = this + page.data.river = options.river + app.userinfo(function(userinfo) { + app.request("storm", {cmds: [options.river]}, function(msg) { + page.setData({msg: msg}) + if (msg[msg.append[0]].length == 1) { + app.jumps("/pages/action/action", {river: options.river, storm: page.data.msg.key[0]}) + } + }) + }) + }, + onReady: function () {}, + onShow: function (args) { + }, + onHide: function () {}, + onUnload: function () {}, + onPullDownRefresh: function () {}, + onReachBottom: function () {}, + onShareAppMessage: function () {} +}) diff --git a/client/mp/pages/storm/storm.json b/client/mp/pages/storm/storm.json new file mode 100644 index 00000000..5ed4543e --- /dev/null +++ b/client/mp/pages/storm/storm.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} diff --git a/client/mp/pages/storm/storm.wxml b/client/mp/pages/storm/storm.wxml new file mode 100644 index 00000000..0037a8b9 --- /dev/null +++ b/client/mp/pages/storm/storm.wxml @@ -0,0 +1,5 @@ + + + +
{{msg.name[line]}}
+
diff --git a/client/mp/pages/storm/storm.wxss b/client/mp/pages/storm/storm.wxss new file mode 100644 index 00000000..8e2c8e7e --- /dev/null +++ b/client/mp/pages/storm/storm.wxss @@ -0,0 +1,4 @@ +td { + font-size:18px; + padding:10px; +} diff --git a/client/mp/utils/util.js b/client/mp/utils/util.js index c7ceea02..9d7ed757 100644 --- a/client/mp/utils/util.js +++ b/client/mp/utils/util.js @@ -29,8 +29,15 @@ function Time(t, fmt) {var now = t? new Date(t): new Date(); fmt = fmt.replace("%S", Number(now.getSeconds(), 2)) return fmt } +function Args(url, args) {var list = [] + for (var k in args) { + list.push(encodeURIComponent(k)+"="+encodeURIComponent(args[k])) + } + return url+"?"+list.join("&") +} module.exports = { - formatTime: formatTime, + formatTime: formatTime, Time: Time, + Args: Args, }