PADDB相关功能先决定为现在的UI
This commit is contained in:
parent
9e8adfdb71
commit
1961680cf0
|
@ -3,17 +3,18 @@
|
|||
{name: "Optional chaining (?.) / 可选链操作符(?.)", version:{firefox:74,chrome:80,safari:13.4}, url: "https://caniuse.com/mdn-javascript_operators_optional_chaining", test: ()=>Boolean(eval("undefined?.undefined || true"))},
|
||||
{name: "Nullish coalescing operator (??) / 空值合并操作符(??)", version:{firefox:72,chrome:80,safari:13.4}, url: "https://caniuse.com/mdn-javascript_operators_nullish_coalescing", test: ()=>Boolean(eval("undefined ?? true"))},
|
||||
{name: "BigInt value (1n) / BigInt 数据类型(1n)", version:{firefox:79,chrome:67,safari:14}, url: "https://caniuse.com/bigint", test: ()=>Boolean(eval("1n"))},
|
||||
{name: "CSS selector: :is() / CSS选择器: :is()", version:{firefox:78,chrome:88,safari:14}, url: "https://caniuse.com/css-matches-pseudo", test: ()=>Boolean(eval("document.querySelector(':is()') || true"))},
|
||||
{name: "CSS selector: :where() / CSS选择器: :where()", version:{firefox:78,chrome:88,safari:14}, url: "https://caniuse.com/mdn-css_selectors_where", test: ()=>Boolean(eval("document.querySelector(':where()') || true"))},
|
||||
// {name: "CSS selector: :is() / CSS选择器: :is()", version:{firefox:78,chrome:88,safari:14}, url: "https://caniuse.com/css-matches-pseudo", test: ()=>Boolean(eval("document.querySelector(':is()') || true"))},
|
||||
// {name: "CSS selector: :where() / CSS选择器: :where()", version:{firefox:78,chrome:88,safari:14}, url: "https://caniuse.com/mdn-css_selectors_where", test: ()=>Boolean(eval("document.querySelector(':where()') || true"))},
|
||||
{name: "CSS selector: :not() / CSS选择器: :not()", version:{firefox:84,chrome:88,safari:9}, url: "https://caniuse.com/css-not-sel-list", test: ()=>Boolean(eval("document.querySelector(':not(html)') || true"))},
|
||||
//{name: "Private class fields (#name) / 类私有域(#name)", version:{firefox:90,chrome:74,safari:14.5}, url: "https://caniuse.com/mdn-javascript_classes_private_class_fields", test: ()=>Boolean(eval("class test {#v = 0;}; true;"))},
|
||||
//{name: "Dialog element / Dialog 元素", version:{firefox:98,chrome:37,safari:15.4}, url: "https://caniuse.com/dialog", test: ()=>Boolean(eval("HTMLDialogElement"))},
|
||||
// {name: "Private class fields (#name) / 类私有域(#name)", version:{firefox:90,chrome:74,safari:14.5}, url: "https://caniuse.com/mdn-javascript_classes_private_class_fields", test: ()=>Boolean(eval("class test {#v = 0;}; true;"))},
|
||||
// {name: "Dialog element / Dialog 元素", version:{firefox:98,chrome:37,safari:15.4}, url: "https://caniuse.com/dialog", test: ()=>Boolean(eval("HTMLDialogElement"))},
|
||||
]
|
||||
return features.filter(feature=>{
|
||||
try {
|
||||
return !feature.test();
|
||||
} catch (e) {
|
||||
if (e.name !== 'SyntaxError') throw e // Throw the error if it is not a SyntaxError
|
||||
if (e.name !== 'SyntaxError')
|
||||
console.error(e);
|
||||
return true;
|
||||
}
|
||||
})
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
// @name:zh-HK 龍圖急速陣型鏈接助手
|
||||
// @name:zh-TW 龍圖急速陣型鏈接助手
|
||||
// @namespace http://www.mapaler.com/
|
||||
// @version 1.0.1
|
||||
// @version 1.0.2
|
||||
// @description Helps obtain team data from external cross-domain servers such as PADDB
|
||||
// @description:zh-CN 帮助获取 PADDB 等外部跨域服务器的队伍分享数据
|
||||
// @description:zh-HK 幫助獲取 PADDB 等外部跨域服務器的隊伍分享數據
|
||||
|
@ -25,18 +25,14 @@
|
|||
(function() {
|
||||
'use strict';
|
||||
if (GM?.xmlHttpRequest) { //For Greasemonkey 4.x
|
||||
window.GM_xmlhttpRequest = GM.xmlHttpRequest;
|
||||
window["GM_xmlhttpRequest"] = GM.xmlHttpRequest;
|
||||
}
|
||||
const qrDialog = document.querySelector("#qr-code-frame");
|
||||
const actionButtonBox = qrDialog.querySelector(".action-button-box");
|
||||
const txtStringInput = actionButtonBox.querySelector(".string-input"); //输入的字符串
|
||||
const btnReadString = actionButtonBox.querySelector(".read-string"); //读取字符串按钮
|
||||
|
||||
document.body.classList.add("external-link-support");
|
||||
//新增的按钮
|
||||
const btnReadExternalLink = actionButtonBox.appendChild(document.createElement("button"));
|
||||
btnReadExternalLink.className = "read-external-link brown-button";
|
||||
|
||||
async function pGM_xmlhttpRequest(options) {
|
||||
const btnExternalSupport = document.querySelector("#external-support");
|
||||
if (!btnExternalSupport) return;
|
||||
btnExternalSupport.GM_xmlhttpRequest = GM_xmlhttpRequest;
|
||||
btnExternalSupport.asyncGM_xmlhttpRequest = async function(options) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
options.onload = function(response) {
|
||||
resolve(response);
|
||||
|
@ -47,33 +43,4 @@
|
|||
GM_xmlhttpRequest(options);
|
||||
});
|
||||
}
|
||||
btnReadExternalLink.readExternalLink = async function(urlStr) {
|
||||
const url = new URL(urlStr);
|
||||
const paddbPathPrefix = "/team/";
|
||||
if (url.host == "paddb.net" && url.pathname.startsWith(paddbPathPrefix)) {
|
||||
const teamId = url.pathname.substring(url.pathname.indexOf(paddbPathPrefix) + paddbPathPrefix.length),
|
||||
postBody = JSON.stringify({id: teamId});
|
||||
const options = {
|
||||
method: "POST",
|
||||
url: `https://api2.paddb.net/getTeam`,
|
||||
data: postBody,
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"User-Agent": "okhttp/4.9.2",
|
||||
"Content-Length": postBody.length,
|
||||
}
|
||||
};
|
||||
return pGM_xmlhttpRequest(options);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
btnReadExternalLink.onclick = function(){
|
||||
const request = this.readExternalLink(txtStringInput.value);
|
||||
request?.then(response=>{
|
||||
txtStringInput.value = response.response;
|
||||
btnReadString.click();
|
||||
});
|
||||
}
|
||||
actionButtonBox.appendChild(btnReadExternalLink);
|
||||
})();
|
|
@ -514,7 +514,7 @@ label[for="box-have"]::after
|
|||
}
|
||||
|
||||
.control-box .btn-qrcode::before{
|
||||
content: "\f029 二维码";
|
||||
content: "\f029 二维码 和 \f0ec 数据交换";
|
||||
}
|
||||
|
||||
.read-qr-box::before
|
||||
|
@ -556,6 +556,34 @@ label[for="sourceSelect"]::before
|
|||
{
|
||||
content: "\f1c5 读取二维码图片";
|
||||
}
|
||||
|
||||
#qr-code-frame .paddb-team-edit::before
|
||||
{
|
||||
content: "将队伍数据上传至 PADDB:";
|
||||
}
|
||||
label[for="paddb-username"]::before
|
||||
{
|
||||
content: "PADDB 用户名:";
|
||||
}
|
||||
label[for="paddb-password"]::before
|
||||
{
|
||||
content: "PADDB 密码:";
|
||||
}
|
||||
label[for="paddb-team-id"]::before
|
||||
{
|
||||
content: "PADDB 队伍 ID:";
|
||||
}
|
||||
#paddb-save-or-upload-team::before
|
||||
{
|
||||
content: "保存";
|
||||
}
|
||||
#paddb-team-id:placeholder-shown+#paddb-save-or-upload-team::before {
|
||||
content: "上传新队伍";
|
||||
}
|
||||
body:not(.external-link-support) #external-support::before
|
||||
{
|
||||
content: "\f552 安装辅助脚本以使用 PADDB 相关功能";
|
||||
}
|
||||
#qr-code-frame .read-external-link::before
|
||||
{
|
||||
content: "\f0c1 解析 PADDB 链接";
|
||||
|
|
11
multi.html
11
multi.html
|
@ -1325,6 +1325,7 @@ var formation = new Formation(teamsCount,5);
|
|||
</svg>
|
||||
<div id="qr-code-frame" class="mask display-none">
|
||||
<button class="mask-close brown-button"></button>
|
||||
<button id="external-support" class="brown-button"></button>
|
||||
<div class="mask-content">
|
||||
<div class="read-qr-box">
|
||||
<div class="action-button-box">
|
||||
|
@ -1354,6 +1355,16 @@ var formation = new Formation(teamsCount,5);
|
|||
<div class="qr-box"><img class="qr-code-image" /></div>
|
||||
<a download="" class="save-qr-img brown-button"><!--保存QR 图片--></a>
|
||||
</div>
|
||||
<div class="paddb-team-edit">
|
||||
<div class="user">
|
||||
<label for="paddb-username"></label><input id="paddb-username" type="text" placeholder="ID (2~12)">
|
||||
<label for="paddb-password"></label><input id="paddb-password" type="password" placeholder="password (4~20)">
|
||||
</div>
|
||||
<div class="action">
|
||||
<label for="paddb-team-id"></label><input id="paddb-team-id" type="text" placeholder="Team ID">
|
||||
<button id="paddb-save-or-upload-team" class="brown-button"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
91
script.js
91
script.js
|
@ -26,6 +26,8 @@ const className_displayNone = "display-none";
|
|||
const dataAttrName = "data-value"; //用于储存默认数据的属性名
|
||||
const isGuideMod = !unsupportFeatures.length && Boolean(Number(getQueryString("guide"))); //是否以图鉴模式启动
|
||||
const PAD_PASS_BADGE = 1<<7 | 1; //月卡徽章编号,129
|
||||
//用油猴扩展装上,把GM_xmlhttpRequest引入的脚本
|
||||
const ExternalLinkScriptURL = "https://greasyfork.org/scripts/458521";
|
||||
|
||||
if (location.search.includes('&')) {
|
||||
location.search = location.search.replace(/&/ig, '&');
|
||||
|
@ -1425,7 +1427,7 @@ function creatNewUrl(arg) {
|
|||
}
|
||||
}
|
||||
|
||||
function ObjToUrl(obj)
|
||||
function qrObjToUrl(obj)
|
||||
{
|
||||
let fileName;
|
||||
switch (obj.d.f.length)
|
||||
|
@ -1445,6 +1447,7 @@ function ObjToUrl(obj)
|
|||
}
|
||||
const newUrl = new URL(fileName, location);
|
||||
newUrl.searchParams.set("d",JSON.stringify(obj.d));
|
||||
//数据服版本
|
||||
if (!obj.s || obj.s == "ja")
|
||||
{
|
||||
newUrl.searchParams.delete("s");
|
||||
|
@ -1452,11 +1455,17 @@ function ObjToUrl(obj)
|
|||
{
|
||||
newUrl.searchParams.set("s", obj.s);
|
||||
}
|
||||
//保持当前的语言
|
||||
let l = getQueryString("l");
|
||||
if (l)
|
||||
{
|
||||
newUrl.searchParams.set("l", l);
|
||||
}
|
||||
//数据服版本
|
||||
if (obj.paddbId)
|
||||
{
|
||||
newUrl.searchParams.set("_id", obj.paddbId);
|
||||
}
|
||||
return newUrl;
|
||||
}
|
||||
//解析从QR图里获取的字符串
|
||||
|
@ -1467,7 +1476,7 @@ async function inputFromQrString(string)
|
|||
ERROR_No_formation_data = 2,
|
||||
ERROR_illegal_JSON_format = 3,
|
||||
ERROR_illegal_URL_format = 4;
|
||||
//code 1~99 为各种编码
|
||||
//JSON 类
|
||||
if (string[0] === "{" && string[string.length-1] === "}")
|
||||
{ //生成的二维码
|
||||
try{
|
||||
|
@ -1475,12 +1484,14 @@ async function inputFromQrString(string)
|
|||
if (typeof obj?.d == "object") { //PADDF的对象格式
|
||||
re.type = "PADDF";
|
||||
//re.message = "发现队伍数据 | Formation data founded";
|
||||
re.url = ObjToUrl(obj);
|
||||
re.url = qrObjToUrl(obj);
|
||||
}
|
||||
else if (typeof obj?.team == "string" && obj.team[0] === "{" && obj.team[obj.team.length-1] === "}") { //PADDB的对象格式
|
||||
re.type = "PADDB";
|
||||
const newFotmation = paddbFotmationToPdfFotmation(obj);
|
||||
re.url = ObjToUrl(newFotmation.getPdfQrObj(false));
|
||||
const qrObj = newFotmation.getPdfQrObj(false);
|
||||
qrObj.paddbId = obj._id;
|
||||
re.url = qrObjToUrl(qrObj);
|
||||
}
|
||||
else {
|
||||
re.error = ERROR_No_formation_data;
|
||||
|
@ -1492,6 +1503,7 @@ async function inputFromQrString(string)
|
|||
//re.message = "错误的 JSON 格式 | The illegal JSON format";
|
||||
}
|
||||
}
|
||||
//URL 类
|
||||
else if (/^(https?|file):\/\//i.test(string))
|
||||
{ //网址二维码
|
||||
let url = new URL(string);
|
||||
|
@ -1503,7 +1515,7 @@ async function inputFromQrString(string)
|
|||
}
|
||||
re.type = "PADDF";
|
||||
//re.message = "发现队伍数据 | Formation data founded";
|
||||
re.url = ObjToUrl(obj);
|
||||
re.url = qrObjToUrl(obj);
|
||||
} catch(error) {
|
||||
console.error(error);
|
||||
re.error = ERROR_illegal_URL_format;
|
||||
|
@ -1516,16 +1528,18 @@ async function inputFromQrString(string)
|
|||
//re.message = "发现 PADDB 网址 | PADDB URL found";
|
||||
const qrDialog = document.querySelector("#qr-code-frame");
|
||||
const actionButtonBox = qrDialog.querySelector(".action-button-box");
|
||||
//const txtStringInput = actionButtonBox.querySelector(".string-input"); //输入的字符串
|
||||
const txtStringInput = actionButtonBox.querySelector(".string-input"); //输入的字符串
|
||||
//const btnReadString = actionButtonBox.querySelector(".read-string"); //读取字符串按钮
|
||||
const btnReadExternalLink = actionButtonBox.querySelector(".read-external-link");
|
||||
if (btnReadExternalLink?.readExternalLink) {
|
||||
const request = btnReadExternalLink.readExternalLink(string);
|
||||
const response = await request;
|
||||
try{
|
||||
let obj = JSON.parse(response.response);
|
||||
let obj = JSON.parse(txtStringInput.value = response.response);
|
||||
const newFotmation = paddbFotmationToPdfFotmation(obj);
|
||||
re.url = ObjToUrl(newFotmation.getPdfQrObj(false));
|
||||
const qrObj = newFotmation.getPdfQrObj(false);
|
||||
qrObj.paddbId = obj._id;
|
||||
re.url = qrObjToUrl(qrObj);
|
||||
} catch(error) {
|
||||
console.error(error);
|
||||
re.error = ERROR_illegal_JSON_format;
|
||||
|
@ -1533,7 +1547,7 @@ async function inputFromQrString(string)
|
|||
} else {
|
||||
re.error = ERROR_Unsupported_format;
|
||||
re.message = localTranslating.link_read_message.need_user_script;
|
||||
re.url = "https://greasyfork.org/scripts/458521";
|
||||
re.url = ExternalLinkScriptURL;
|
||||
re.urlName = localTranslating.link_read_message.user_script_link;
|
||||
}
|
||||
}
|
||||
|
@ -1542,19 +1556,61 @@ async function inputFromQrString(string)
|
|||
//re.message = "无队伍数据 | No formation data";
|
||||
}
|
||||
}
|
||||
//PDC
|
||||
else if(/^\d[\d\-\w,\]}]+}/.test(string))
|
||||
{ //PDC
|
||||
{
|
||||
re.type = "PDC";
|
||||
//re.message = "发现 PDC 格式 | PDC format found";
|
||||
const newFotmation = pdcFotmationToPdfFotmation(string);
|
||||
re.url = ObjToUrl(newFotmation.getPdfQrObj(false));
|
||||
re.url = qrObjToUrl(newFotmation.getPdfQrObj(false));
|
||||
}
|
||||
// //快速输入类,仅为评估支持
|
||||
// else if(/^>\s\d+(?:|\d+)?(?:,\s*\d+(?:|\d+)?)*\s*$/.test(string))
|
||||
// {
|
||||
// re.type = "FastInput";
|
||||
// const newFotmation = FastInputToPdfFotmation(string);
|
||||
// re.url = qrObjToUrl(newFotmation.getPdfQrObj(false));
|
||||
// }
|
||||
else
|
||||
{
|
||||
re.error = ERROR_Unsupported_format;
|
||||
//re.message = "不支持的格式 | Unsupported format";
|
||||
}
|
||||
return re;
|
||||
// //解析PADDB的数据
|
||||
// function FastInputToPdfFotmation(string)
|
||||
// {
|
||||
// let str = string.replace(/^>\s/,'');
|
||||
// let teams = str.split(/\s*,\s*/);
|
||||
// const team = JSON.parse(obj.team);
|
||||
// console.log(team);
|
||||
// const f = new Formation(1, 6);
|
||||
// f.title = team.name;
|
||||
// f.detail = team.memo;
|
||||
// const t = f.teams[0];
|
||||
// //队伍徽章
|
||||
// t[2] = paddbBadgeMap.find(badge=>badge.paddb === team.badge).pdf;
|
||||
// const members = t[0], assists = t[1];
|
||||
// for (let i = 0; i< members.length; i++) {
|
||||
// const m = members[i], a = assists[i], dm = team.monsters[i], da = team.assists[i];
|
||||
// if (dm) {
|
||||
// m.id = dm.transform || dm.num;
|
||||
// m.level = dm.level;
|
||||
// m.plus = dm.plus.concat();
|
||||
// m.awoken = dm.awoken;
|
||||
// m.sawoken = dm.super_awoken - 2;
|
||||
// m.latent = dm.latent_awokens.map(paddbLatent=>paddbLatentMap.find(latent=>latent.paddb === paddbLatent)?.pdf ?? 0);
|
||||
// m.skilllevel = dm.active_skill_level;
|
||||
// }
|
||||
// if (da) {
|
||||
// a.id = da.num;
|
||||
// a.level = da.level;
|
||||
// a.plus = da.plus ? [99,99,99]:[0,0,0];
|
||||
// a.skilllevel = da.active_skill_level;
|
||||
// }
|
||||
// }
|
||||
// return f;
|
||||
// }
|
||||
}
|
||||
|
||||
//解析PDC的数据
|
||||
|
@ -1852,7 +1908,6 @@ function initialize() {
|
|||
qrReadBox.sourceSelect = qrReadBox.querySelector("#sourceSelect");
|
||||
qrReadBox.qrStr = qrReadBox.querySelector(".string-input");
|
||||
qrReadBox.info.show = function(message, code = 0, error = false, url="", urlName="") {
|
||||
|
||||
qrReadBox.info.message.innerHTML = '';
|
||||
qrReadBox.info.message.append(message);
|
||||
qrReadBox.info.code.textContent = code;
|
||||
|
@ -2076,6 +2131,16 @@ function initialize() {
|
|||
console.error(err)
|
||||
});
|
||||
}
|
||||
|
||||
const paddbTeamEdit = qrContent.querySelector(".paddb-team-edit");
|
||||
//paddb的用户名和密码
|
||||
const paddbUsername = paddbTeamEdit.querySelector("#paddb-username");
|
||||
const paddbPassword = paddbTeamEdit.querySelector("#paddb-password");
|
||||
paddbUsername.value = localStorage.getItem(cfgPrefix + paddbUsername.id);
|
||||
paddbPassword.value = localStorage.getItem(cfgPrefix + paddbPassword.id);
|
||||
paddbUsername.onchange = paddbPassword.onchange = function(e){
|
||||
if (e) localStorage.setItem(cfgPrefix + this.id, this.value);
|
||||
}
|
||||
|
||||
const playerDataFrame = document.body.querySelector("#player-data-frame");
|
||||
const btnPlayerData = controlBox.querySelector(`.btn-player-data`);
|
||||
|
@ -2195,7 +2260,7 @@ function initialize() {
|
|||
changeid(deck.members[idx]?.assist ?? {id: 0}, li.querySelector(".monster.assist"));
|
||||
});
|
||||
const newFotmation = deck.toFormation();
|
||||
teamLink.href = ObjToUrl(newFotmation.getPdfQrObj(true));
|
||||
teamLink.href = qrObjToUrl(newFotmation.getPdfQrObj(true));
|
||||
}
|
||||
return clone;
|
||||
}
|
||||
|
|
11
solo.html
11
solo.html
|
@ -1167,6 +1167,7 @@ var formation = new Formation(teamsCount,6);
|
|||
</svg>
|
||||
<div id="qr-code-frame" class="mask display-none">
|
||||
<button class="mask-close brown-button"></button>
|
||||
<button id="external-support" class="brown-button"></button>
|
||||
<div class="mask-content">
|
||||
<div class="read-qr-box">
|
||||
<div class="action-button-box">
|
||||
|
@ -1196,6 +1197,16 @@ var formation = new Formation(teamsCount,6);
|
|||
<div class="qr-box"><img class="qr-code-image" /></div>
|
||||
<a download="" class="save-qr-img brown-button"><!--保存QR 图片--></a>
|
||||
</div>
|
||||
<div class="paddb-team-edit">
|
||||
<div class="user">
|
||||
<label for="paddb-username"></label><input id="paddb-username" type="text" placeholder="ID (2~12)">
|
||||
<label for="paddb-password"></label><input id="paddb-password" type="password" placeholder="password (4~20)">
|
||||
</div>
|
||||
<div class="action">
|
||||
<label for="paddb-team-id"></label><input id="paddb-team-id" type="text" placeholder="Team ID">
|
||||
<button id="paddb-save-or-upload-team" class="brown-button"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
21
style.css
21
style.css
|
@ -1813,7 +1813,7 @@ icon.inflicts::after
|
|||
.search-box .selected-awokens-div .selected-awokens{
|
||||
min-height: 32px;
|
||||
box-sizing: border-box;
|
||||
width: calc(100% - 90px);
|
||||
width: calc(100% - 95px);
|
||||
min-width: 320px;
|
||||
background-color: #00000044;
|
||||
border-radius: 6px;
|
||||
|
@ -3345,12 +3345,27 @@ table .orb-icon
|
|||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.read-qr-box::before,
|
||||
.save-qr-box::before
|
||||
#qr-code-frame .read-qr-box::before,
|
||||
#qr-code-frame .save-qr-box::before,
|
||||
#qr-code-frame .paddb-team-edit::before
|
||||
{
|
||||
display: block;
|
||||
text-align: left;
|
||||
}
|
||||
body:not(.solo.external-link-support) .paddb-team-edit{
|
||||
/*没有装插件的不显示PADDB上传功能*/
|
||||
display: none;
|
||||
}
|
||||
body.external-link-support #external-support{
|
||||
/*装了插件的不显示请求装插件的消息*/
|
||||
display: none;
|
||||
}
|
||||
#qr-code-frame #external-support {
|
||||
float: right;
|
||||
}
|
||||
#paddb-team-id {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.qr-data-type-ul .qr-data-type-radio
|
||||
{
|
||||
|
|
11
triple.html
11
triple.html
|
@ -2227,6 +2227,7 @@ var formation = new Formation(teamsCount,6);
|
|||
</svg>
|
||||
<div id="qr-code-frame" class="mask display-none">
|
||||
<button class="mask-close brown-button"></button>
|
||||
<button id="external-support" class="brown-button"></button>
|
||||
<div class="mask-content">
|
||||
<div class="read-qr-box">
|
||||
<div class="action-button-box">
|
||||
|
@ -2256,6 +2257,16 @@ var formation = new Formation(teamsCount,6);
|
|||
<div class="qr-box"><img class="qr-code-image" /></div>
|
||||
<a download="" class="save-qr-img brown-button"><!--保存QR 图片--></a>
|
||||
</div>
|
||||
<div class="paddb-team-edit">
|
||||
<div class="user">
|
||||
<label for="paddb-username"></label><input id="paddb-username" type="text" placeholder="ID (2~12)">
|
||||
<label for="paddb-password"></label><input id="paddb-password" type="password" placeholder="password (4~20)">
|
||||
</div>
|
||||
<div class="action">
|
||||
<label for="paddb-team-id"></label><input id="paddb-team-id" type="text" placeholder="Team ID">
|
||||
<button id="paddb-save-or-upload-team" class="brown-button"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
Loading…
Reference in New Issue