From 5d991551fc9775dac903d02cd16cefda4d9c0668 Mon Sep 17 00:00:00 2001 From: shaoying Date: Sat, 6 Feb 2021 17:55:29 +0800 Subject: [PATCH] opt mp --- publish/client/mp/app.js | 42 ++++- publish/client/mp/app.wxml | 36 +++- publish/client/mp/app.wxss | 42 ++--- publish/client/mp/pages/action/action.js | 199 +++++++++++---------- publish/client/mp/pages/action/action.wxml | 28 ++- publish/client/mp/pages/action/action.wxss | 8 + publish/client/mp/pages/insert/insert.js | 68 +++---- publish/client/mp/pages/insert/insert.wxml | 17 +- publish/client/mp/pages/river/river.js | 40 +++-- publish/client/mp/pages/river/river.wxml | 10 +- publish/client/mp/plugin/story/paste.js | 4 - publish/client/mp/plugin/story/paste.wxml | 1 - publish/client/mp/project.config.json | 185 ++++++++----------- publish/client/mp/utils/kit.js | 56 +++++- 14 files changed, 393 insertions(+), 343 deletions(-) delete mode 100644 publish/client/mp/plugin/story/paste.js delete mode 100644 publish/client/mp/plugin/story/paste.wxml diff --git a/publish/client/mp/app.js b/publish/client/mp/app.js index 0950874f..0e275732 100644 --- a/publish/client/mp/app.js +++ b/publish/client/mp/app.js @@ -2,12 +2,17 @@ const kit = require("utils/kit.js") App({ data: {}, conf: {serve: "https://shylinux.com/chat", space: ""}, + requests: function(cmd, data, cb) { wx.showLoading() + this.request(cmd, data, function(msg) { wx.hideLoading() + typeof cb == "function" && cb(msg) + }) + }, request: function(cmd, data, cb) { var app = this; data.sessid = app.conf.sessid, data.pod = app.conf.space wx.request({method: "POST", url: app.conf.serve+"/"+cmd, data: data, success: function(res) { var msg = res.data if (res.statusCode == 401) { return app.usercode(function() { app.request(cmd, data, cb) }) } console.log("POST", cmd, msg) - msg.__proto__ = { + var proto = { Result: function() { return msg.result && msg.result.length > 0 && msg.result.join("") || "" }, Length: function() { var max = 0; if (!msg.append) { return max } for (var i = 0; i < msg.append.length; i++) { @@ -21,9 +26,36 @@ App({ res.push(line) }; return res }, - } + Data: function(item, index) { + var text = msg[item]&&msg[item][index]||"" + var list = kit.Split(text, " ", "<=/>") - var index = []; for (var i = 0; i < msg.Length(); i++) { index.push(i) }; msg._index = index + var res = [], data = {_type: "text", _text: text} + for (var i = 0; i < list.length; i++) { + if (list[i] == "<") { data = {} + if (list[i] == "/") { i++ } else { res.push(data) } + data._type = list[i+1] + data._text = text + if (data._type == "div") { break } + } + + if (list[i] == ">") { + + } else if (list[i+1] == "=") { + data[list[i]] = list[i+2] + i += 2 + } else { + data[list[i]] = list[i] + } + } + return res.length == 0? [data]: res + }, + }; for (var k in proto) { msg[k] = proto[k] } + + msg._index = []; for (var i = 0; i < msg.Length(); i++) { msg._index.push(i) } + msg._view = {}, msg["append"] && kit.List(msg["append"], function(k) { msg._view[k] = {} + for (var i in msg[k]) { msg._view[k][i] = msg.Data(k, i) } + }) typeof cb == "function" && cb(msg) }}) }, @@ -56,7 +88,7 @@ App({ console.log("jump", next), wx.navigateTo({url: next, success: cb}) }, scans: function(cb) { var app = this - wx.scanCode({success: function(res) { var data = kit.parseJSON(res) + wx.scanCode({success: function(res) { var data = kit.parseJSON(res.result) if (typeof cb == "function" && cb(data)) { return } switch (data.type) { @@ -69,7 +101,7 @@ App({ }) }) break - default: app.request("mp/login/scan", res) + default: app.request("mp/login/scan", data) } }}) }, diff --git a/publish/client/mp/app.wxml b/publish/client/mp/app.wxml index 1ed623f0..d2ed953f 100644 --- a/publish/client/mp/app.wxml +++ b/publish/client/mp/app.wxml @@ -1,8 +1,42 @@ + + + + + + diff --git a/publish/client/mp/app.wxss b/publish/client/mp/app.wxss index 6772bd11..d5b8f287 100644 --- a/publish/client/mp/app.wxss +++ b/publish/client/mp/app.wxss @@ -1,14 +1,27 @@ page { - color:white; - font-size:14px; - font-family:monospace; - background-color:#272822; + color:white; background-color:#272822; + font-size:14px; font-family:monospace; white-space:pre; } view.action>view.item { float:left; } +view.output { + clear:both; +} +view.output view.item { + text-align:center; + font-size:18px; + padding:10px; + border:solid 1px green; +} +view.output view.list view.item { + background-color:darkgray; + margin-left:20px; +} + + view.option>view.item { padding:0; border: 0; @@ -31,23 +44,6 @@ view.option view.select { /* width:40px; */ padding:6px; } -view.option view.select picker { -} -view.option view.select picker view { -} -view.output { - clear:both; -} -view.output view.item { - text-align:center; - font-size:18px; - padding:10px; - border:solid 1px green; -} -view.output view.list view.item { - background-color:darkgray; - margin-left:20px; -} view.output view.code { margin-left:10px; padding:10px; @@ -60,11 +56,7 @@ view.title { font-weight:bold; font-size:18px; } -view.field { -} -table { -} tr { display:flex; justify-content:space-between; diff --git a/publish/client/mp/pages/action/action.js b/publish/client/mp/pages/action/action.js index 8bf16d1c..6ebcf804 100644 --- a/publish/client/mp/pages/action/action.js +++ b/publish/client/mp/pages/action/action.js @@ -2,20 +2,20 @@ const kit = require("../../utils/kit.js") const app = getApp() Page({ + name: "action", data: { river: "", storm: "", title: "", action: ["刷新", "扫码", "清屏", "串行", "并行"], - res: [], his: {}, inputs: {}, + list: [], back: [], }, action: { "刷新": function(event, page) { var list = [] - app.data[page.data.river+page.data.storm] = page.data.res = list - - wx.showLoading() - app.request("action", {cmds: [page.data.river, page.data.storm]}, function(msg) { wx.hideLoading() - msg.Table(function(line, index) { list.push(line) - line.feature = JSON.parse(line.meta) - line.inputs = JSON.parse(line.list) + app.data[page.data.river+page.data.storm] = page.data.list = list, page.data.back = [] + app.requests("action", {cmds: [page.data.river, page.data.storm]}, function(msg) { + msg.Table(function(line, index) { + list.push(line), page.data.back.push([]) + line.feature = kit.parseJSON(line.meta, {}) + line.inputs = kit.parseJSON(line.list,[]) line.name = line.name.split(" ")[0] if (!line.inputs || line.inputs.length === 0) { @@ -30,121 +30,134 @@ Page({ input.action = input.value.slice(1), input.value = "" } if (input._input == "select") { - input.values = input.values || input.value && kit.Split(input.value) + input.values = input.values || kit.Split(input.value) } - input._input == "button" && input.action == "auto" && page.run(event, index) + + input._input == "button" && input.action == "auto" && kit.Timer(100, function() { page.run(event, index) }) }) - }), page.data.his = [], page.setData({res: list}) + }), page.setData({list: list}) }) }, - "扫码": function(event, page) { app.scans(function(res) { - switch (res.type) { - case "button": res.name && page.onaction(event, res); break - default: return false - } return true - }) }, + "扫码": function(event, page) { + app.scans(function(res) { + switch (res.type) { + case "button": res.name && page.onaction(event, res); break + default: return false + } return true + }) + }, "清屏": function(event, page) { - kit.List(page.data.res, function(field, index) { delete(field.msg) }) - page.setData({res: page.data.res}) + kit.List(page.data.list, function(item) { delete(item.msg) }) + page.setData({list: page.data.list}) }, - "串行": function(event, page, data, name) { + "串行": function(event, page) { function cb(i) { - page.run(event, i, null, function() {i < page.data.res.length - 1&& cb(i+1)}) - } - cb(0) + page.run(event, i, null, function() { i < page.data.list.length - 1 && cb(i+1) }) + }; cb(0) }, - "并行": function(event, page, data, name) { - kit.List(page.data.res, function(field, index) { - page.run(event, index) - }) + "并行": function(event, page) { + kit.List(page.data.list, function(item, index) { page.run(event, index) }) }, }, onaction: function(event, data) { data = data || event.target.dataset - console.log("action", "river", data.name) + console.log("action", this.name, data.name) this.action[data.name](event, this) }, - run: function(event, order, cmd, cb) {var page = this, field = page.data.res[order] - var cmds = [page.data.river, page.data.storm, field.id || field.key] - cmds = cmds.concat(cmd||kit.List(field.inputs, function(input) { - if (["text", "textarea", "select"].indexOf(input._input) > -1) { - return input.value || "" - } - })) + run: function(event, order, cmd, cb) { var page = this, field = page.data.list[order] + var cmds = [page.data.river, page.data.storm, field.id||field.key]; if (!cmd) { + var cmd = kit.List(field.inputs, function(input) { if (input._input != "button") { return input.value } }) + page.data.back[order].push(cmd) + }; cmds = cmds.concat(cmd) - for (var i = cmds.length-1; i > 0; i--) { - if (cmds[i] === "") {cmds.pop()} else {break} - } + for (var i = cmds.length-1; i > 0; i--) { if (cmds[i] === "") { cmds.pop() } else { break } } - wx.showLoading() - app.request("action?="+field.name, {cmds: cmds}, function(msg) { - wx.hideLoading() - page.data.res[order].msg = msg - page.setData({res: page.data.res}) + var option = event._option||{}; option.cmds = cmds + app.requests("action?="+field.name, option, function(msg) { + field.msg = msg, page.setData({list: page.data.list}) typeof cb == "function" && cb(msg) }) }, - - onBlur: function(event) {var page = this, data = event.target.dataset - }, - onFocus: function(event) {}, - onInput: function(event) {var page = this, data = event.target.dataset - page.data.res[data.order].inputs[data.index].value = event.detail.value - page.setData({res: page.data.res}) - }, - onChange: function(event) {var page = this, data = event.target.dataset - page.data.res[data.order].inputs[data.index].index = parseInt(event.detail.value) - page.data.res[data.order].inputs[data.index].value = data.input.values[parseInt(event.detail.value)] - page.setData({res: page.data.res}) - }, - onEnter: function(event) {var page = this, data = event.target.dataset - page.data.res[data.order].inputs[data.index].value = event.detail.value + plugin: { + scanQRCode: function(event, order, page, cmd) { app.scans(function(res) { + page.run(event, order, kit.Simple("action", cmd, res), function(msg) { + app.toast("添加成功"), page.run(event, order) + }) + return true + }) }, + getClipboardData: function(event, order, page, cmd) { wx.getClipboardData({success: function(res) { + page.run(event, order, kit.Simple("action", cmd, kit.parseJSON(res.data)), function() { + app.toast("添加成功"), page.run(event, order) + }) + }}) }, + getLocation: function(event, order, page, cmd) { app.location({success: function(res) { + res.latitude = parseInt(res.latitude * 100000) + res.longitude = parseInt(res.longitude * 100000) + page.run(event, order, kit.Simple("action", cmd, res), function() { + app.toast("添加成功"), page.run(event, order) + }) + }}) }, }, - onClick: function(event) {var page = this, data = event.target.dataset - var field = page.data.res[data.order] + onInput: function(event) { var page = this, data = event.target.dataset + page.data.list[data.order].inputs[data.index].value = event.detail.value + }, + onChange: function(event) { var page = this, data = event.target.dataset + var input = page.data.list[data.order].inputs[data.index] + input.value = input.values[parseInt(event.detail.value)] + }, - if (field.feature[data.input.name]) { - app.data.insert = { - field: field, input: data.input, - data: {}, list: field.feature[data.input.name], cb: function(res) { - var list = ["action", data.input.name] - kit.Item(res, function(key, value) { - key && value && list.push(key, value) - }) - page.run(event, data.order, list) - } - } + onClick: function(event) { var page = this, data = event.target.dataset + var field = page.data.list[data.order] + var input = field.inputs[data.index] + + if (field.feature[input.name]) { + app.data.insert = {field: field, input: input, cb: function(res) { + page.run(event, data.order, kit.Simple("action", input.name, res)) + }} app.jumps("insert/insert", {river: page.data.river, storm: page.data.storm, title: field.name}) return } - switch (data.input.name) { - case "返回": - // 恢复命令 - page.data.his[data.order].pop() - var line = page.data.his[data.order].pop() + switch (input.name) { + case "返回": // 恢复命令 + page.data.back[data.order].pop(); var line = page.data.back[data.order].pop() kit.List(field.inputs, function(input, index) { - input.value = line && line[index] || "" + if (input._input != "button") { input.value = line&&line[index] || "" } }) + case "查看": // 执行命令 + page.run(event, data.order) + break default: - // 执行命令 - page.data.his[data.order].push(kit.List(field.inputs, function(input) { - return input.value - })) && page.run(event, data.order) + var cb = page.plugin[input.name]; if (typeof cb == "function") { + cb(event, data.order, page, input.name) + } else { + var arg = kit.List(field.inputs, function(input) { if (input._input != "button") { return input.value } }) + page.run(event, data.order, ["action", input.name].concat(arg)) + } } }, - onWhich: function(event) {var page = this, data = event.target.dataset - var field = page.data.res[data.order] - field.inputs.forEach(function(input, index) { - if (input.name == data.field) { - // 导入参数 - page.data.res[data.order].inputs[index].value = data.value - page.setData({res: page.data.res}) - // 执行命令 - input.action == "auto" && page.data.his[data.order].push(kit.List(field.inputs, function(input) { - return input.value - })) && page.run(event, data.order) + onWhich: function(event) { var page = this, data = event.currentTarget.dataset + var field = page.data.list[data.order]; if (!field) { return } + + var input = data.input && data.input[0]; if (input && input.type == "button") { var option = {} + kit.List(field.inputs, function(input) { input._input != "button" && (option[input.name] = input.value) }) + if (field.msg.append[0] == "key" && field.msg.append[1] == "value") { + kit.List(field.msg.key, function(key, index) { option[key] = field.msg.value[index] }) + } else { + kit.List(field.msg.append, function(key) { option[key] = field.msg[key][data.index] }) + } + event._option = option + + var cb = page.plugin[input.name] + return typeof cb == "function"? cb(event, page, data, input): + page.run(event, data.order, ["action", input.name]) + } + + field.inputs.forEach(function(inputs, index) { + if (inputs.name == data.key) { inputs.value = data.value + page.setData({list: page.data.list}) + inputs.action == "auto" && page.run(event, data.order) } }) }, @@ -157,7 +170,7 @@ Page({ app.title(options.title) var data = app.data[options.river+options.storm] - if (data) { return this.setData({res: this.data.res = data}) } + if (data) { return this.setData({list: this.data.list = data}) } this.onaction({}, {name: "刷新"}) }, onReady: function () {}, diff --git a/publish/client/mp/pages/action/action.wxml b/publish/client/mp/pages/action/action.wxml index 3e226aa3..718b9f78 100644 --- a/publish/client/mp/pages/action/action.wxml +++ b/publish/client/mp/pages/action/action.wxml @@ -1,45 +1,39 @@ - - + {{field.name}}({{field.help}}) - + - + - + {{item.values[item.index||0]}} - + - - - - - -
{{item}}
{{field.msg[item][line]}}
+ - - +
diff --git a/publish/client/mp/pages/action/action.wxss b/publish/client/mp/pages/action/action.wxss index 8cef7a7f..91918627 100644 --- a/publish/client/mp/pages/action/action.wxss +++ b/publish/client/mp/pages/action/action.wxss @@ -4,3 +4,11 @@ view.option view.item { view.option view.item.select { padding:3px; } + + +div.story[data-type=spark] { + background-color:#2169a9a6; color:white; + box-shadow: 4px 4px 10px 1px #626bd0; + padding:4px 10px; margin:10px 0px; + border-left:solid 4px blue; +} diff --git a/publish/client/mp/pages/insert/insert.js b/publish/client/mp/pages/insert/insert.js index 4646743b..4c876802 100644 --- a/publish/client/mp/pages/insert/insert.js +++ b/publish/client/mp/pages/insert/insert.js @@ -3,30 +3,29 @@ const app = getApp() Page({ data: { - action: ["扫码"], - field: {}, insert: [], + action: ["扫码"], }, 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) - }) - }, + "扫码": function(event, page) { app.scans(function(res) { + switch (res.type) { + case "button": res.name && page.onaction(event, res); break + default: return false + } return true + }) }, }, - 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) + onaction: function(event, data) { data = data || event.target.dataset + console.log("action", "river", data.name) + this.action[data.name](event, this) }, onInput: function(event) {var page = this, data = event.target.dataset - app.data.insert[data.index].value = event.detail.value + app.data.insert.list[data.index].value = event.detail.value + }, + onChange: function(event) { var page = this, data = event.target.dataset + var input = app.data.insert[data.index] + input.value = input.values[parseInt(event.detail.value)] }, - onFocus: function(event) {}, onConfirm: function (event) { var page = this kit.List(page.data.insert, function(item) { app.data.insert.data[item.name] = item.value @@ -34,47 +33,22 @@ Page({ app.data.insert.cb(app.data.insert.data) wx.navigateBack() }, - onLoad: function (options) { - this.data.insert = app.data.insert.list + onLoad: function (options) { app.title(options.title) + console.log("page", "insert", options) - var p = app.data.insert.input.action - if (p.indexOf("@") == 0) { - var cb = this.plugin[p.slice(1,-1)]; cb && cb(this) - } - var cb = this.plugin[p]; cb && cb(this) kit.List(app.data.insert.list, function(item) { - item.action = item.action || item.value item.value && item.value.indexOf("@") == 0 && (item.value = "") app.data.insert.data[item.name] = item.value + item.action = item.action || item.value }) - console.log("page", "insert", options) - app.title(options.title) + + this.data.insert = app.data.insert.list this.setData(this.data) }, onReady: function () {}, onShow: function () {}, onHide: function () {}, onUnload: function () {}, - onPullDownRefresh: function () {}, onReachBottom: function () {}, - - plugin: { - getLocation: function(page, data) { app.location({success: function(res) { - res.latitude = parseInt(res.latitude * 100000) - res.longitude = parseInt(res.longitude * 100000) - kit.List(page.data.insert, function(item) { - res[item.name] && (item.value = res[item.name]) - }), page.setData(page.data) - }}) }, - scanQRCode: function(page) { app.scans(function(res) { - kit.List(page.data.insert, function(item) { - res[item.name] && (item.value = res[item.name]) - }), page.setData(page.data) - }) }, - paste: function(page, data) { wx.getClipboardData({success: function(res) { - kit.List(page.data.insert, function(item) { - res[item.name] && (item.value = res[item.name]) - }), page.setData(page.data) - }}) }, - }, + onPullDownRefresh: function () {}, }) diff --git a/publish/client/mp/pages/insert/insert.wxml b/publish/client/mp/pages/insert/insert.wxml index d412598b..ad070746 100644 --- a/publish/client/mp/pages/insert/insert.wxml +++ b/publish/client/mp/pages/insert/insert.wxml @@ -2,23 +2,24 @@ - + - + - + - + {{item.values[item.index||0]}} - + diff --git a/publish/client/mp/pages/river/river.js b/publish/client/mp/pages/river/river.js index 15d54137..038bcc44 100644 --- a/publish/client/mp/pages/river/river.js +++ b/publish/client/mp/pages/river/river.js @@ -2,44 +2,46 @@ const kit = require("../../utils/kit.js") const app = getApp() Page({ + name: "river", data: { - river: {}, action: ["刷新", "扫码", "登录"], + list: [], }, action: { - "刷新": function(event, page) { wx.showLoading() - app.request("river", {}, function(msg) { wx.hideLoading() - page.setData({river: msg.Table()}) + "刷新": function(event, page) { + app.requests(page.name, {}, function(msg) { + page.setData({list: msg.Table()}) + }) + }, + "扫码": function(event, page) { + app.scans(function(res) { + switch (res.type) { + case "button": res.name && page.onaction(event, res); break + default: return false + } return true }) }, - "扫码": function(event, page) { app.scans(function(res) { - switch (res.type) { - case "button": res.name && page.onaction(event, res); break - default: return false - } return true - }) }, "登录": function(event, page) { app.conf.sessid = "" app.userinfo(function(res) { page.onaction(event, {name: "刷新"}) }) }, }, onaction: function(event, data) { data = data || event.target.dataset - console.log("action", "river", data.name) + console.log("action", this.name, data.name) this.action[data.name](event, this) }, ondetail: function(event, data) { data = data || event.target.dataset - var page = this, river = page.data.river[data.index] - river._show = !river._show; if (river.list) { - return page.setData({river: page.data.river}) + var page = this, item = page.data.list[data.index] + item._show = !item._show; if (item.list) { + return page.setData({list: page.data.list}) } - wx.showLoading() - app.request("river", {cmds: [river.hash, "tool"]}, function(msg) { wx.hideLoading() - river.list = msg.Table(), page.setData({river: page.data.river}) + app.requests(page.name, {cmds: [item.hash, "tool"]}, function(msg) { + item.list = msg.Table(), page.setData({list: page.data.list}) }) }, onchange: function(event, data) { data = data || event.target.dataset - var river = this.data.river[data.index]; var storm = river.list[data.i] - app.jumps("action/action", {river: river.hash, storm: storm.hash, title: river.name+"."+storm.name}) + var item = this.data.list[data.index]; var tool = item.list[data.i] + app.jumps("action/action", {river: item.hash, storm: tool.hash, title: item.name+"."+tool.name}) }, onLoad: function (options) { this.onaction({}, {name: "刷新"}) }, diff --git a/publish/client/mp/pages/river/river.wxml b/publish/client/mp/pages/river/river.wxml index 97372222..1c4803cf 100644 --- a/publish/client/mp/pages/river/river.wxml +++ b/publish/client/mp/pages/river/river.wxml @@ -1,12 +1,4 @@ + - - - {{item.name}} - - {{item.name}} - - - diff --git a/publish/client/mp/plugin/story/paste.js b/publish/client/mp/plugin/story/paste.js deleted file mode 100644 index eb11f367..00000000 --- a/publish/client/mp/plugin/story/paste.js +++ /dev/null @@ -1,4 +0,0 @@ - -module.exports = { - onimport: function() {}, -} diff --git a/publish/client/mp/plugin/story/paste.wxml b/publish/client/mp/plugin/story/paste.wxml deleted file mode 100644 index 43c226f3..00000000 --- a/publish/client/mp/plugin/story/paste.wxml +++ /dev/null @@ -1 +0,0 @@ -hello wrold diff --git a/publish/client/mp/project.config.json b/publish/client/mp/project.config.json index f725c39a..d38c1baa 100644 --- a/publish/client/mp/project.config.json +++ b/publish/client/mp/project.config.json @@ -1,108 +1,81 @@ { - "description": "项目配置文件", - "packOptions": { - "ignore": [] - }, - "setting": { - "urlCheck": true, - "es6": true, - "enhance": false, - "postcss": true, - "preloadBackgroundData": false, - "minified": true, - "newFeature": true, - "coverView": true, - "nodeModules": false, - "autoAudits": false, - "showShadowRootInWxmlPanel": true, - "scopeDataCheck": false, - "uglifyFileName": false, - "checkInvalidKey": true, - "checkSiteMap": true, - "uploadWithSourceMap": true, - "compileHotReLoad": false, - "useMultiFrameRuntime": false, - "useApiHook": true, - "babelSetting": { - "ignore": [], - "disablePlugins": [], - "outputPath": "" - }, - "enableEngineNative": false, - "bundle": false, - "useIsolateContext": true, - "useCompilerModule": true, - "userConfirmedUseCompilerModuleSwitch": false, - "userConfirmedBundleSwitch": false, - "packNpmManually": false, - "packNpmRelationList": [], - "minifyWXSS": true - }, - "compileType": "miniprogram", - "libVersion": "2.0.4", - "appid": "wxf4e5104d83476ed6", - "projectname": "%E7%BB%88%E7%AB%AF%E5%B7%A5%E5%85%B7%E9%93%BE", - "debugOptions": { - "hidedInDevtools": [] - }, - "isGameTourist": false, - "simulatorType": "wechat", - "simulatorPluginLibVersion": {}, - "condition": { - "search": { - "list": [] - }, - "conversation": { - "list": [] - }, - "plugin": { - "list": [] - }, - "game": { - "currentL": -1, - "list": [] - }, - "gamePlugin": { - "list": [] - }, - "miniprogram": { - "list": [ - { - "id": 0, - "name": "pages/action/action", - "pathName": "pages/action/action", - "query": "river=c796cd&storm=9092d5", - "scene": 1008 - }, - { - "id": 1, - "name": "action", - "pathName": "pages/action/action", - "query": "river=d022b3&storm= c22d21", - "scene": null - }, - { - "id": 2, - "name": "pages/river/river", - "pathName": "pages/river/river", - "query": "river=c796cd&storm=9092d5", - "scene": null - }, - { - "id": -1, - "name": "pages/scans/scans", - "pathName": "pages/scans/scans", - "query": "river=c796cd&storm=9092d5", - "scene": null - }, - { - "id": 4, - "name": "pages/action/action", - "pathName": "pages/action/action", - "query": "river=d82c1d&storm=12d1d7&title=mac.paste", - "scene": null - } - ] - } - } + "description": "项目配置文件", + "packOptions": { + "ignore": [] + }, + "setting": { + "urlCheck": true, + "es6": true, + "enhance": false, + "postcss": true, + "preloadBackgroundData": false, + "minified": true, + "newFeature": true, + "coverView": true, + "nodeModules": false, + "autoAudits": false, + "showShadowRootInWxmlPanel": true, + "scopeDataCheck": false, + "uglifyFileName": false, + "checkInvalidKey": true, + "checkSiteMap": true, + "uploadWithSourceMap": true, + "compileHotReLoad": false, + "useMultiFrameRuntime": false, + "useApiHook": true, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "enableEngineNative": false, + "bundle": false, + "useIsolateContext": true, + "useCompilerModule": true, + "userConfirmedUseCompilerModuleSwitch": false, + "userConfirmedBundleSwitch": false, + "packNpmManually": false, + "packNpmRelationList": [], + "minifyWXSS": true + }, + "compileType": "miniprogram", + "libVersion": "2.0.4", + "appid": "wxf4e5104d83476ed6", + "projectname": "%E7%BB%88%E7%AB%AF%E5%B7%A5%E5%85%B7%E9%93%BE", + "debugOptions": { + "hidedInDevtools": [] + }, + "isGameTourist": false, + "simulatorType": "wechat", + "simulatorPluginLibVersion": {}, + "condition": { + "search": { + "list": [] + }, + "conversation": { + "list": [] + }, + "plugin": { + "list": [] + }, + "game": { + "currentL": -1, + "list": [] + }, + "gamePlugin": { + "list": [] + }, + "miniprogram": { + "current": -1, + "list": [ + { + "id": -1, + "name": "pages/action/action", + "pathName": "pages/action/action", + "query": "river=2d506d&storm=8271a3&title=hi.scan", + "scene": 1001 + } + ] + } + } } \ No newline at end of file diff --git a/publish/client/mp/utils/kit.js b/publish/client/mp/utils/kit.js index 2ae005ab..76ad55f4 100644 --- a/publish/client/mp/utils/kit.js +++ b/publish/client/mp/utils/kit.js @@ -1,3 +1,17 @@ +function shy(help, meta, list, cb) { + var index = 0, args = arguments; function next(check) { + if (index < args.length && (!check || check == typeof args[index])) { + return args[index++] + } + } + + cb = args[args.length-1] || function() {} + cb.help = next("string") || "" + cb.meta = next("object") || {} + cb.list = next("object") || [] + return cb +}; var _can_name = "" + module.exports = { Number: function(d, n) {var res = []; while (d > 0) {res.push(d % 10); d = parseInt(d / 10); n--} @@ -27,9 +41,7 @@ module.exports = { return typeof cbs == "function" && cbs(res), res }, Item: function(list, cb, cbs) { - for (var k in list) { - cb(k, list[k]) - } + for (var k in list) { cb(k, list[k]) } }, Value: function(data, key, value) { if (data == undefined) { return } @@ -46,8 +58,35 @@ module.exports = { p = p[ls[0]], ls = ls.slice(1) }; return p }, + Simple: function() { var res = [] + for (var i = 0; i < arguments.length; i++) { + var arg = arguments[i]; switch (typeof arguments[i]) { + case "number": res.push(arg); break + case "string": res.push(arg); break + case "object": + if (arg.length > 0) { + res = res.concat(arg) + } else { + for (var k in arg) { res.push(k, arg[k]) } + } + } + } + return res + }, - Split: function(str) { if (!str || !str.length) { return [] } + Timer: shy("定时器, value, [1,2,3,4], {value, length}", function(interval, cb, cbs) { + interval = typeof interval == "object"? interval || []: [interval] + var timer = {stop: false}; function loop(timer, i) { + if (timer.stop || i >= interval.length && interval.length >= 0) { + return typeof cbs == "function" && cbs(timer, interval) + } + return typeof cb == "function" && cb(timer, interval.interval||interval[i], i, interval)? + typeof cbs == "function" && cbs(timer, interval): setTimeout(function() { loop(timer, i+1) }, interval.interval||interval[i+1]) + } + setTimeout(function() { loop(timer, 0) }, interval.interval||interval[0]) + return timer + }), + Split: shy("分词器", function(str) { if (!str || !str.length) { return [] } var opt = {detail: false}, arg = []; for (var i = 1; i < arguments.length; i++) { typeof arguments[i] == "object"? opt = arguments[i]: arg.push(arguments[i]) } @@ -78,7 +117,7 @@ module.exports = { if (left == "") { left = list[i], space = false, begin = i+1 } else if (left == list[i]) { - res.push({text: list.slice(begin, i), type: "string", left: left, right: left}) + opt.detail? res.push({text: list.slice(begin, i), type: "string", left: left, right: left}): res.push(list.slice(begin, i)) left = "", space = true, begin = i+1 } } else if (sups[list[i]]) { @@ -109,8 +148,9 @@ module.exports = { res.push(list.slice(begin)) } return res - }, - parseJSON: function(str) { var res + }), + parseJSON: shy("解析器", function(str, def) { var res + if (!str) { return def||{} } if (typeof str == "object") { return str } if (str.indexOf("http") == 0) { var ls = str.split("?") res = {type: "link", name: "", text: str} @@ -127,6 +167,6 @@ module.exports = { res = {type: "text", text: str} } return res - }, + }), }