"ui";
/* bmob文档中心:http://doc.bmob.cn/data/restful/index.html */
const color = "#188296",
Bmob = new NBmob({
Application_ID: "****",
REST_API_Key: "****",
Master_Key: "****",
Secret_Key: "****",
safeToken: "****",/* API 安全码 */
TableName: "**** ",/* 数据库名称 */
})
var objectIdS = []
ui.statusBarColor(color)
activity.getWindow().setSoftInputMode(android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); //不显示输入法
activity.getWindow().getDecorView().setSystemUiVisibility(android.view.View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
ui.layout(
<drawer id="drawer">
<vertical>
<appbar id="appbar" bg="{{color}}" >
<toolbar id="toolbar" title="记账Bmob" />
</appbar>
<viewpager id="viewpager">
<frame>
<frame id="main">
<vertical h="*" gravity="center">
<vertical h="auto">
{/* *********************存钱信息**************** */}
<vertical gravity="center" margin="16 0 16 0">
<text text="备注" textSize="16sp" gravity="center" textColor="{{color}}" />
<card cardBackgroundColor="{{color}}" alpha="0.8" w="*" h="auto" margin="10 0 10 10" cardElevation="0" >
<card alpha="1" margin="1 1 1 1" cardBackgroundColor="{{this.done?color:'#FFFFFF'}}" w="*" h="auto" cardElevation="2" >
<vertical gravity="center" h="120dp" margin="16 0 16 0">
<EditText
id="mark" enabled="true" layout_width="fill_parent"
layout_height="fill_parent" gravity="left|top" inputType="textMultiLine"
h="45dp" textSize="16sp" scrollbars="vertical" background="#FFFFFF" />
</vertical>
</card>
</card>
<text text="金额" textSize="16sp" gravity="center" textColor="{{color}}" />
<card cardBackgroundColor="{{color}}" alpha="0.8" w="*" h="auto" margin="10 0 10 10" cardElevation="0" >
<card alpha="1" margin="1 1 1 1" cardBackgroundColor="{{this.done?color:'#FFFFFF'}}" w="*" h="auto" cardElevation="2" >
<vertical gravity="center" h="48dp" margin="16 0 16 0">
<input id="money" paddingLeft="12dp" bg="#FFFFFF" gravity="center" layout_weight="1" paddingRight="12dp" textSize="14sp" />
</vertical>
</card>
</card>
</vertical>
</vertical>
{/* *********************日志配置**************** */}
<card cardBackgroundColor="{{color}}" layout_weight="1" alpha="0.8" w="*" margin="10 10 10 10" cardElevation="0" >
<card alpha="1" margin="1 1 1 1" w="*" h="*" cardElevation="2" >
<com.stardust.autojs.core.console.ConsoleView w="*" h="*"
id="console" textSize="18dp" />
</card>
</card>
<card id='get' w='120' h='38' cardCornerRadius="4dp" cardBackgroundColor="{{color}}" foreground="?attr/selectableItemBackground" clickable="true">
<text text="查看数据" textSize="12dp" gravity="center" clickable="false" />
</card>
<View margin="5dp" bg="{{color}}" w="*" h="2dp" />
{/* *********************开始执行**************** */}
<card id='put' w='*' h="62dp" layout_gravity="bottom" cardBackgroundColor="{{color}}" foreground="?attr/selectableItemBackground" clickable="true">
<text text="提交" layout_weight="1" w="*" h="*" gravity="center" textColor="#ffffff" textSize="16sp" />
</card>
</vertical>
<input id="Fdata" w="1" alpha="0" />
</frame>
</frame>
</viewpager>
</vertical >
</drawer >
);
ui.console.setColor("D", "#795548");
ui.console.setConsole(runtime.console);
ui.run(function () {
let recycleview = ui.logList
, adapter = recycleview.getAdapter();
recycleview.setAdapter(new JavaAdapter(Packages[adapter.getClass().getName()],
{ onBindViewHolder: function (vh, i) { vh.textView.attr("gravity", "center"); adapter.onBindViewHolder(vh, i); } }, recycleview.parent.parent, null));
["input", "submit"].forEach(item => ui.console.findViewById(context.getResources().getIdentifier(item, "id", context.getPackageName())).setVisibility(8))
});
ui.get.on("click", () => {
threads.start(function () {
if (ui.mark.getText().toString() == "" && (n = ui.money.getText().toString()) != "" && objectIdS.length && objectIdS.length > n - 1) {
toastLog(/ok/.test(bmob.delete(objectIdS[n]).msg) ? "------------\n删除成功" : "------------\n删除失败")
} else {
let money = 0
objectIdS = []
bmob.get().forEach((item, index) => {
objectIdS.push(item.objectId)
money += Number(item.money)
log(index + "___" + item.mark + "___" + item.money)
})
log("------------\n总金额为:" + money + "元")
}
})
ui.mark.setText("")
ui.money.setText("")
})
ui.put.on("click", () => {
threads.start(function () {
mark = ui.mark.getText().toString()
money = ui.money.getText().toString()
if (mark != "" && money != "") {
toastLog(/objectId/.test(JSON.stringify(bmob.add({
mark: mark,
money: money
}))) ? "------------\n记录成功" : "------------\n记录失败")
ui.run(function () {
ui.mark.setText("")
ui.money.setText("")
})
}
})
})
function NBmob() {
return bmob = {
baseURL: "https://api2.bmob.cn/1/classes/" + arguments[0].TableName + "/",
headers: {
"X-Bmob-Application-Id": arguments[0].Application_ID,
"X-Bmob-REST-API-Key": arguments[0].REST_API_Key,
"Content-Type": "application/json"
},
encryption: (objectId) => {/* 加密请求格式 */
let Timestamp = new Date().getTime(), Noncestr = $crypto.digest(Timestamp.toString(), "MD5").slice(0, 16)
return http.get(bmob.baseURL + objectId, {
headers: {
'X-Bmob-Safe-Sign': $crypto.digest("/1/classes/" + arguments[0].TableName + "/" + objectId + Timestamp + arguments[0].safeToken + Noncestr, "MD5"),
'X-Bmob-Safe-Timestamp': Timestamp, 'X-Bmob-Noncestr-Key': Noncestr, 'X-Bmob-SDK-Type': 'API',
'X-Bmob-Secret-Key': arguments[0].Secret_Key, 'content-type': 'application/json',
}
}).body.json();
},
updata: (objectId, data) => {/* 修改数据 */
return http.request(bmob.baseURL + objectId, { method: "PUT", headers: bmob.headers, body: JSON.stringify(data) }).body.json();
},
get: data => {/* 获取数据 */
return http.get(bmob.baseURL + (data ? ("?where=" + JSON.stringify(data)) : ""), { headers: bmob.headers }).body.json().results;
},
delete: objectId => {/* 删除数据 */
return http.request(bmob.baseURL + objectId, { method: "DELETE", headers: bmob.headers }).body.json();
},
add: data => {/* 新增数据 */
return http.postJson(bmob.baseURL, data, { headers: bmob.headers }).body.json();
}
}
}