sanbon完全不希望人们与他交换数据,删除所有的sanbon支持代码。
This commit is contained in:
parent
d2aeeeda33
commit
006a72a0ac
24
multi.html
24
multi.html
|
@ -855,6 +855,7 @@ const teamsCount = 2;
|
|||
<div class="attr" data-attr="any"></div>
|
||||
<div class="attr" data-attr="any"></div>
|
||||
<div class="attr" data-attr="any"></div>
|
||||
<div class="attr" data-attr="any"></div>
|
||||
</div>
|
||||
</label>
|
||||
<div class="attr-selecter-list">
|
||||
|
@ -882,6 +883,14 @@ const teamsCount = 2;
|
|||
<li><input type="checkbox" name="attr-3" value="4" id="search-attr-3-4" /><label for="search-attr-3-4"><span class="attr" data-attr-icon="4"></span></label></li><!--暗-->
|
||||
<li><input type="checkbox" name="attr-3" value="6" id="search-attr-3-6" /><label for="search-attr-3-6"><span class="attr" data-attr-icon="6"></span></label></li><!--无副属性-->
|
||||
</ul>
|
||||
<ul class="attr-list horizontally-radio-list display-none">
|
||||
<li><input type="checkbox" name="attr-4" value="0" id="search-attr-4-0" /><label for="search-attr-4-0"><span class="attr" data-attr-icon="0"></span></label></li><!--火-->
|
||||
<li><input type="checkbox" name="attr-4" value="1" id="search-attr-4-1" /><label for="search-attr-4-1"><span class="attr" data-attr-icon="1"></span></label></li><!--水-->
|
||||
<li><input type="checkbox" name="attr-4" value="2" id="search-attr-4-2" /><label for="search-attr-4-2"><span class="attr" data-attr-icon="2"></span></label></li><!--木-->
|
||||
<li><input type="checkbox" name="attr-4" value="3" id="search-attr-4-3" /><label for="search-attr-4-3"><span class="attr" data-attr-icon="3"></span></label></li><!--光-->
|
||||
<li><input type="checkbox" name="attr-4" value="4" id="search-attr-4-4" /><label for="search-attr-4-4"><span class="attr" data-attr-icon="4"></span></label></li><!--暗-->
|
||||
<li><input type="checkbox" name="attr-4" value="6" id="search-attr-4-6" /><label for="search-attr-4-6"><span class="attr" data-attr-icon="6"></span></label></li><!--无副属性-->
|
||||
</ul>
|
||||
</div>
|
||||
<button id="attr-clear" type="reset" class="brown-button"></button>
|
||||
<div class="options"><button id="avatar-save" type="button" class="display-none">💾</button><input type="checkbox" name="fix-main-color" id="fix-main-color" checked><label for="fix-main-color"></label></div>
|
||||
|
@ -1508,21 +1517,6 @@ const teamsCount = 2;
|
|||
<div class="qr-box"><img class="qr-code-image" /></div>
|
||||
<a download="" class="save-qr-img brown-button fa"><!--保存QR 图片--></a>
|
||||
</div>
|
||||
<div class="sanbon-team-edit">
|
||||
<!--<div class="user">
|
||||
<label for="sanbon-username"></label><input id="sanbon-username" type="text" placeholder="ID (2~12)">
|
||||
<label for="sanbon-password"></label><input id="sanbon-password" type="password" placeholder="password (4~20)">
|
||||
</div>-->
|
||||
<div class="action">
|
||||
<label for="sanbon-team-id"></label><input id="sanbon-team-id" type="text" placeholder="Team URL" readonly>
|
||||
<button id="sanbon-save-or-upload-team" class="brown-button"></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sanbon-transfer">
|
||||
<div class="sanbon-v2">
|
||||
<label for="sanbon-v2-script"><a id="sanbon-v2-link" href="https://sanbon.me/v2/en-jp/team-builder" target="_blank">Sanbon Team Builder</a> JavaScript (Test function, paste in Browser Console | 测试功能,粘贴到浏览器控制台)</label><br><textarea id="sanbon-v2-script"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paddb-team-edit">
|
||||
<div class="user">
|
||||
<label for="paddb-username"></label><input id="paddb-username" type="text" placeholder="ID (2~12)">
|
||||
|
|
271
script.js
271
script.js
|
@ -1369,121 +1369,6 @@ Formation.prototype.getPaddbQrObj = function(keepDataSource = true)
|
|||
};
|
||||
return qrObj;
|
||||
}
|
||||
function sanbonTranslateRegion(code) {
|
||||
switch (code) {
|
||||
case "ja": return "jp";
|
||||
case "ko": return "kr";
|
||||
case "en": return "na";
|
||||
}
|
||||
};
|
||||
Formation.prototype.getSanbonV2Script = function()
|
||||
{
|
||||
const region = sanbonTranslateRegion(currentDataSource.code);
|
||||
//sanbon目前只支持单人队伍
|
||||
const [members,assists,badge] = this.teams[0];
|
||||
const scriptLines = [`(async ()=>{
|
||||
"use strict";
|
||||
let buildId;
|
||||
if (typeof __NEXT_DATA__ !== 'undefined') {
|
||||
buildId = __NEXT_DATA__?.buildId;
|
||||
} else {
|
||||
const Zstr = window.__next_f.find(o=>o?.[1]?.startsWith("0:"))[1];
|
||||
const regRes = /"buildId":"([\\w\\-]+)"/ig.exec(Zstr);
|
||||
buildId = regRes[1];
|
||||
}
|
||||
if (!buildId) throw Error("buildId not found.");
|
||||
|
||||
const region = "${region}";
|
||||
|
||||
async function fetchFlattened(id) {
|
||||
if (id <= 0) return {};
|
||||
const url = new URL(location.origin);
|
||||
url.pathname = \`/_next/data/\${buildId}/\${region}/monster/\${id}.json\`;
|
||||
url.searchParams.set("lang_region", region);
|
||||
url.searchParams.set("num", id);
|
||||
const response = await fetch(url);
|
||||
const json = await response.json();
|
||||
return json.pageProps.mon;
|
||||
}
|
||||
|
||||
const tbs = JSON.parse(sessionStorage.getItem("team-build-store"));
|
||||
const team = tbs.state;
|
||||
team.badge = ${Formation.sanbonBadgeMap.find(_badge=>_badge.pdf === badge)?.sanbon ?? badge};`];
|
||||
|
||||
const _members = {};
|
||||
for (let i = 0; i < members.length; i++) {
|
||||
const m = members[i], a = assists[i];
|
||||
const _m = {
|
||||
num: m.id,
|
||||
level: m.level,
|
||||
superAwoken: m.sawoken ?? 0,
|
||||
latentAwokens: m.latent.concat().sort((a, b) => latentUseHole(b) - latentUseHole(a)),
|
||||
awokenCount: m.awoken,
|
||||
hpPlus: m.plus[0],
|
||||
atkPlus: m.plus[1],
|
||||
rcvPlus: m.plus[2],
|
||||
assistNum: a.id,
|
||||
assistLevel: a.level,
|
||||
assistPlus: a?.plus?.every(p=>p>=99) ?? false,
|
||||
// flattened: cardFlattened(m.card),
|
||||
// assistFlattened: cardFlattened(a.card),
|
||||
flattened: `(await fetchFlattened(${m.id}))`,
|
||||
assistFlattened: `(await fetchFlattened(${a.id}))`,
|
||||
}
|
||||
_members[i] = _m;
|
||||
}
|
||||
scriptLines.push(`\tteam.members = ${JSON.stringify(_members,null,'\t').replace(/"(\(await fetchFlattened\(\d+\)\))"/igm, "$1")}`);
|
||||
scriptLines.push(`\tsessionStorage.setItem("team-build-store", JSON.stringify(tbs));
|
||||
\tlocation.reload();
|
||||
})();`);
|
||||
return scriptLines.join('\n');
|
||||
};
|
||||
|
||||
//sanbon的徽章对应数字
|
||||
Formation.sanbonBadgeMap = [
|
||||
{pdf:22,sanbon:15}, //除武器,全抗性(耐)
|
||||
{pdf:23,sanbon:16}, //除武器,10SB(S+×5)
|
||||
{pdf:24,sanbon:20}, //合作,英雄学院
|
||||
{pdf:25,sanbon:23}, //官桶,画师
|
||||
{pdf:26,sanbon:22}, //合作,高达
|
||||
{pdf:27,sanbon:24}, //转生成为史莱姆
|
||||
{pdf:28,sanbon:25}, //电击文库Index
|
||||
{pdf:29,sanbon:26}, //奥特曼
|
||||
{pdf:PAD_PASS_BADGE,sanbon:1}, //月卡
|
||||
];
|
||||
Formation.prototype.getSanbonQrObj = function()
|
||||
{
|
||||
//sanbon目前只支持单人队伍
|
||||
const [members,assists,badge] = this.teams[0];
|
||||
const obj = {
|
||||
region: sanbonTranslateRegion(currentDataSource.code),
|
||||
title: this.title ?? "",
|
||||
content: this.detail ?? "",
|
||||
//mons: assists.map(m=>m.id).concat(members.map(m=>m.id)),
|
||||
data: {
|
||||
badge: Formation.sanbonBadgeMap.find(_badge=>_badge.pdf === badge)?.sanbon ?? badge,
|
||||
members: {}, //等待下面处理
|
||||
},
|
||||
};
|
||||
for (let i = 0; i < members.length; i++) {
|
||||
const m = members[i], a = assists[i];
|
||||
const _m = {
|
||||
num: m.id,
|
||||
level: m.level,
|
||||
superAwoken: m.sawoken ?? 0,
|
||||
latentAwokens: m.latent.concat().sort((a, b) => latentUseHole(b) - latentUseHole(a)),
|
||||
awokenCount: m.awoken,
|
||||
hpPlus: m.plus[0],
|
||||
atkPlus: m.plus[1],
|
||||
rcvPlus: m.plus[2],
|
||||
assistNum: a.id,
|
||||
assistLevel: a.level,
|
||||
assistPlus: a?.plus?.every(p=>p>=99) ?? false,
|
||||
}
|
||||
obj.data.members[i] = _m;
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
|
||||
//daddb的徽章对应数字
|
||||
Formation.daddbBadgeMap = [
|
||||
|
@ -2463,30 +2348,6 @@ async function inputFromQrString(string)
|
|||
qrObj.paddbId = obj._id;
|
||||
return qrObjToUrl(qrObj);
|
||||
}
|
||||
function sanbonObjToURL(obj, region) {
|
||||
const newFotmation = sanbonFotmationToPdfFotmation(obj);
|
||||
const qrObj = newFotmation.getPdfQrObj(false);
|
||||
if (region == undefined) {
|
||||
console.debug("从sanbon json数据中获取数据区域");
|
||||
region = obj.pageProps.members["0"].flattened.region;
|
||||
}
|
||||
switch (region) {
|
||||
case "kr": {
|
||||
qrObj.s = "ko";
|
||||
break;
|
||||
}
|
||||
case "na": {
|
||||
qrObj.s = "en";
|
||||
break;
|
||||
}
|
||||
case "jp":
|
||||
default: {
|
||||
qrObj.s = "ja";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return qrObjToUrl(qrObj);
|
||||
}
|
||||
//JSON 类
|
||||
if (string.startsWith("{") && string.endsWith("}"))
|
||||
{ //生成的二维码
|
||||
|
@ -2501,10 +2362,6 @@ async function inputFromQrString(string)
|
|||
re.type = "PADDB";
|
||||
re.url = paddbObjToURL(obj)
|
||||
}
|
||||
else if ("__N_SSG" in obj) { //SANBON的对象格式
|
||||
re.type = "SANBON";
|
||||
re.url = sanbonObjToURL(obj)
|
||||
}
|
||||
else if (Array.isArray(obj?.staffs)) { //DADDB的对象格式
|
||||
re.type = "DADDB";
|
||||
const newFotmation = daddbFotmationToPdfFotmation(obj);
|
||||
|
@ -2540,55 +2397,6 @@ async function inputFromQrString(string)
|
|||
//re.message = "错误的 网址 格式 | The illegal URL format";
|
||||
}
|
||||
}
|
||||
//sanbon.me 的网址格式,之后要调用脚本功能获取跨域JSON
|
||||
else if(url.host == "sanbon.me" && url.pathname.includes(paddbPathPrefix)) {
|
||||
const teamId = url.pathname.substring(url.pathname.indexOf(paddbPathPrefix) + paddbPathPrefix.length);
|
||||
re.type = "SANBON";
|
||||
const txtStringInput = document.body.querySelector("#qr-code-frame .action-button-box .string-input"); //输入的字符串
|
||||
const btnExternalSupport = document.body.querySelector("#external-support");
|
||||
if (btnExternalSupport?.asyncGM_xmlhttpRequest) {
|
||||
//获取 sanbon.me 的 buildId
|
||||
const mainpageResponse = await btnExternalSupport.asyncGM_xmlhttpRequest({
|
||||
method: "GET",
|
||||
url: "https://sanbon.me/",
|
||||
});
|
||||
const domParser = new DOMParser();
|
||||
const sanbonMainpage = domParser.parseFromString(mainpageResponse.response, "text/html");
|
||||
const __NEXT_DATA__ = sanbonMainpage.getElementById("__NEXT_DATA__");
|
||||
const __NEXT_DATA__JSON = JSON.parse(__NEXT_DATA__.innerHTML);
|
||||
const buildId = __NEXT_DATA__JSON.buildId;
|
||||
console.debug("sanbon.me 网站当前的框架 buildId 是 %s",buildId);
|
||||
|
||||
//获取队伍数据的访问链接
|
||||
const langString = url.pathname.substring(1, url.pathname.indexOf(paddbPathPrefix));
|
||||
const langReg = /(?:\w{2}\-)?(\w{2})$/i.exec(langString); //实际上只会有(en|ja|ko)\-(jp|na|kr)
|
||||
const lang_region = langReg[1];
|
||||
const dataUrl = new URL("https://sanbon.me/");
|
||||
dataUrl.pathname = `/_next/data/${buildId}/${lang_region}/team/${teamId}.json`;
|
||||
dataUrl.searchParams.set("lang_region", lang_region);
|
||||
dataUrl.searchParams.set("code", teamId);
|
||||
|
||||
console.debug("当前的 sanbon.me 队伍数据链接是 %o",dataUrl);
|
||||
|
||||
const options = {
|
||||
method: "GET",
|
||||
url: dataUrl,
|
||||
};
|
||||
const response = await btnExternalSupport.asyncGM_xmlhttpRequest(options);
|
||||
try{
|
||||
let obj = JSON.parse(txtStringInput.value = response.response);
|
||||
re.url = sanbonObjToURL(obj, lang_region);
|
||||
} catch(error) {
|
||||
console.error(error);
|
||||
re.error = ERROR_illegal_JSON_format;
|
||||
}
|
||||
} else {
|
||||
re.error = ERROR_Unsupported_format;
|
||||
re.message = localTranslating.link_read_message.need_user_script;
|
||||
re.url = ExternalLinkScriptURL;
|
||||
re.urlName = localTranslating.link_read_message.user_script_link;
|
||||
}
|
||||
}
|
||||
//PADDB 的网址格式,之后要调用脚本功能获取跨域JSON
|
||||
else if(url.host == "paddb.net" && url.pathname.startsWith(paddbPathPrefix)) {
|
||||
const teamId = url.pathname.substring(url.pathname.indexOf(paddbPathPrefix) + paddbPathPrefix.length);
|
||||
|
@ -2779,35 +2587,6 @@ function paddbFotmationToPdfFotmation(obj)
|
|||
}
|
||||
return f;
|
||||
}
|
||||
//解析sanbon.me的数据
|
||||
function sanbonFotmationToPdfFotmation(obj)
|
||||
{
|
||||
const team = obj.pageProps;
|
||||
const f = new Formation(1, 6);
|
||||
f.title = team.title;
|
||||
f.detail = team.content;
|
||||
const t = f.teams[0];
|
||||
|
||||
//队伍徽章
|
||||
t[2] = Formation.sanbonBadgeMap.find(badge=>badge.sanbon === team.badge)?.pdf ?? team.badge;
|
||||
const members = t[0], assists = t[1];
|
||||
for (let i = 0; i< members.length; i++) {
|
||||
const m = members[i], a = assists[i], dm = team.members[i];
|
||||
if (dm) {
|
||||
m.id = dm.num;
|
||||
m.level = dm.level;
|
||||
m.plus = [dm.hpPlus, dm.atkPlus, dm.rcvPlus];
|
||||
m.awoken = dm.awokenCount;
|
||||
m.sawoken = dm.superAwoken;
|
||||
m.latent = dm.latentAwokens;
|
||||
a.id = dm.assistNum;
|
||||
a.awoken = Cards[a.id].awakenings.length;
|
||||
a.plus = dm.assistPlus ? [99,99,99]:[0,0,0];
|
||||
a.level = dm.assistLevel;
|
||||
}
|
||||
}
|
||||
return f;
|
||||
}
|
||||
//解析DADDB的数据
|
||||
function daddbFotmationToPdfFotmation(obj)
|
||||
{
|
||||
|
@ -2996,10 +2775,6 @@ function initialize() {
|
|||
let qrTypeRadio = qrSaveBox.qrDataType.find(radio=>radio.checked);
|
||||
if (qrTypeRadio) qrTypeRadio.onclick(); //打开二维码窗口就先产生二维码
|
||||
|
||||
//生成sanbon v1链接
|
||||
qrCodeFrame.querySelector("#sanbon-v2-link").href = `https://sanbon.me/${sanbonTranslateRegion(currentDataSource.code)}/team-builder`;
|
||||
qrCodeFrame.querySelector("#sanbon-v2-script").value = formation.getSanbonV2Script();
|
||||
|
||||
};
|
||||
qrCodeFrame.hide = function(){qrcodeReader.reset();};
|
||||
|
||||
|
@ -3350,52 +3125,6 @@ function initialize() {
|
|||
}
|
||||
this.disabled = false;
|
||||
}
|
||||
|
||||
//sanbon.me数据上传
|
||||
//const sanbonTeamEdit = qrContent.querySelector(".sanbon-team-edit");
|
||||
const sanbonTeamId = document.querySelector("#sanbon-team-id");
|
||||
const sanbonSaveOrUpload = document.querySelector("#sanbon-save-or-upload-team");
|
||||
sanbonSaveOrUpload.onclick = async function(){
|
||||
this.disabled = true;
|
||||
if (!btnExternalSupport?.asyncGM_xmlhttpRequest) {
|
||||
alert(localTranslating.link_read_message.need_user_script);
|
||||
return;
|
||||
}
|
||||
let obj = formation.getSanbonQrObj();
|
||||
let postBody = JSON.stringify(obj);
|
||||
const options = {
|
||||
method: "POST",
|
||||
url: `https://sanbon.me/api/upload-team-v2`,
|
||||
data: postBody,
|
||||
headers: {
|
||||
"Origin": "https://sanbon.me",
|
||||
"Referer": `https://sanbon.me/${sanbonTranslateRegion(currentDataSource.code)}/team-builder/upload`,
|
||||
"Content-Type": "application/json",
|
||||
//如果只有ascii字符可以用postBody.length
|
||||
"Content-Length": new Blob([postBody], {type: "application/json"}).size,
|
||||
}
|
||||
};
|
||||
const response = await btnExternalSupport.asyncGM_xmlhttpRequest(options);
|
||||
if (response.status === 401) {
|
||||
alert(localTranslating.link_read_message.paddb_unauthorized);
|
||||
} else if (response.status === 200) {
|
||||
try {
|
||||
const result = JSON.parse(response.response);
|
||||
console.debug("sanbon 数据上传返回结果:%o",result);
|
||||
if (result.success) {
|
||||
sanbonTeamId.value = `https://sanbon.me/${sanbonTranslateRegion(currentDataSource.code)}/team/${result.code}`;
|
||||
alert(localTranslating.link_read_message.paddb_success);
|
||||
} else {
|
||||
alert(result.message);
|
||||
}
|
||||
} catch(e) {
|
||||
alert(localTranslating.link_read_message.error[3]);
|
||||
}
|
||||
} else {
|
||||
alert(localTranslating.link_read_message.error[0]);
|
||||
}
|
||||
this.disabled = false;
|
||||
}
|
||||
|
||||
const playerDataFrame = document.body.querySelector("#player-data-frame");
|
||||
const btnPlayerData = controlBox.querySelector(`.btn-player-data`);
|
||||
|
|
|
@ -6067,7 +6067,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"sound/voice/ja/padv2191.wav",
|
||||
"143e052f3c15efaadaf7eaae277c68e7"
|
||||
"d07c2fc9a621d4345c053f3d2187a937"
|
||||
],
|
||||
[
|
||||
"sound/voice/ja/padv2192.wav",
|
||||
|
@ -29491,7 +29491,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"multi.html",
|
||||
"06dfac154d6c8a3fdece2e5695481b03"
|
||||
"98b39e54a83572b1f4152ecf70053d88"
|
||||
],
|
||||
[
|
||||
"script-custom_elements.js",
|
||||
|
@ -29511,11 +29511,11 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"script.js",
|
||||
"6e067dad55c4c110450cd0f1fd32cfef"
|
||||
"b450f4ce283c8802f6e418a72d0fdc39"
|
||||
],
|
||||
[
|
||||
"solo.html",
|
||||
"3b38841a6ed0189065986db5d40f5e03"
|
||||
"e5a78c6b958828400095edd5a419f692"
|
||||
],
|
||||
[
|
||||
"style-monsterimages.css",
|
||||
|
@ -29523,7 +29523,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"style.css",
|
||||
"dfdca9305210f9a8d9dde03855a51650"
|
||||
"34ab62d874338ceb3ca3d4f6b38b4b26"
|
||||
],
|
||||
[
|
||||
"temp.js",
|
||||
|
@ -29531,7 +29531,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"triple.html",
|
||||
"5c09b746fcb677cb0a468333d1ea4891"
|
||||
"9fb90a3dfa2f1a30cb961425ecf489e5"
|
||||
],
|
||||
[
|
||||
"languages/en.css",
|
||||
|
@ -29867,7 +29867,7 @@ const cachesMap = new Map([
|
|||
],
|
||||
[
|
||||
"doc/images/bluestacks-vhd-mount-vhd-failed.webp",
|
||||
"e41f2de6990b34ae7995a5acb0e3ea0c"
|
||||
"7941862be127cb177b86ea4cc2877134"
|
||||
],
|
||||
[
|
||||
"doc/images/bluestacks-vhd-open-disk-management.webp",
|
||||
|
|
15
solo.html
15
solo.html
|
@ -1255,21 +1255,6 @@ const teamsCount = 1;
|
|||
<div class="qr-box"><img class="qr-code-image" /></div>
|
||||
<a download="" class="save-qr-img brown-button fa"><!--保存QR 图片--></a>
|
||||
</div>
|
||||
<div class="sanbon-team-edit">
|
||||
<!--<div class="user">
|
||||
<label for="sanbon-username"></label><input id="sanbon-username" type="text" placeholder="ID (2~12)">
|
||||
<label for="sanbon-password"></label><input id="sanbon-password" type="password" placeholder="password (4~20)">
|
||||
</div>-->
|
||||
<div class="action">
|
||||
<label for="sanbon-team-id"></label><input id="sanbon-team-id" type="text" placeholder="Team URL" readonly>
|
||||
<button id="sanbon-save-or-upload-team" class="brown-button"></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sanbon-transfer">
|
||||
<div class="sanbon-v2">
|
||||
<label for="sanbon-v2-script"><a id="sanbon-v2-link" href="https://sanbon.me/v2/en-jp/team-builder" target="_blank">Sanbon Team Builder</a> JavaScript (Test function, paste in Browser Console | 测试功能,粘贴到浏览器控制台)</label><br><textarea id="sanbon-v2-script"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paddb-team-edit">
|
||||
<div class="user">
|
||||
<label for="paddb-username"></label><input id="paddb-username" type="text" placeholder="ID (2~12)">
|
||||
|
|
25
style.css
25
style.css
|
@ -3653,47 +3653,28 @@ body:not(.external-link-support) #external-support::before
|
|||
{
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
#qr-code-frame #sanbon-v2-script
|
||||
{
|
||||
width: calc(100% - 20px);
|
||||
height: 4em;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
#qr-code-frame :where(
|
||||
.read-qr-box,
|
||||
.save-qr-box,
|
||||
.paddb-team-edit,
|
||||
.sanbon-transfer,
|
||||
.sanbon-team-edit,
|
||||
.paddb-team-edit
|
||||
)::before {
|
||||
display: block;
|
||||
text-align: left;
|
||||
}
|
||||
body:not(.solo.external-link-support) :where(
|
||||
.paddb-team-edit,
|
||||
.sanbon-team-edit,
|
||||
.paddb-team-edit
|
||||
) {
|
||||
/*没有装插件的不显示PADDB上传功能*/
|
||||
display: none;
|
||||
}
|
||||
body.external-link-support .sanbon-transfer {
|
||||
/*装了插件的不显示sanbon测试功能*/
|
||||
display: none;
|
||||
}
|
||||
|
||||
body.external-link-support #external-support{
|
||||
/*装了插件的不显示请求装插件的消息*/
|
||||
display: none;
|
||||
}
|
||||
#paddb-team-id,
|
||||
#sanbon-team-id {
|
||||
#paddb-team-id{
|
||||
width: 350px;
|
||||
}
|
||||
.sanbon-transfer::before
|
||||
{
|
||||
content: "Sanbon.me:(Defective test functionality)";
|
||||
}
|
||||
|
||||
.qr-data-type-ul {
|
||||
display: flex;
|
||||
|
|
15
triple.html
15
triple.html
|
@ -2199,21 +2199,6 @@ const teamsCount = 3;
|
|||
<div class="qr-box"><img class="qr-code-image" /></div>
|
||||
<a download="" class="save-qr-img brown-button fa"><!--保存QR 图片--></a>
|
||||
</div>
|
||||
<div class="sanbon-team-edit">
|
||||
<!--<div class="user">
|
||||
<label for="sanbon-username"></label><input id="sanbon-username" type="text" placeholder="ID (2~12)">
|
||||
<label for="sanbon-password"></label><input id="sanbon-password" type="password" placeholder="password (4~20)">
|
||||
</div>-->
|
||||
<div class="action">
|
||||
<label for="sanbon-team-id"></label><input id="sanbon-team-id" type="text" placeholder="Team URL" readonly>
|
||||
<button id="sanbon-save-or-upload-team" class="brown-button"></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sanbon-transfer">
|
||||
<div class="sanbon-v2">
|
||||
<label for="sanbon-v2-script"><a id="sanbon-v2-link" href="https://sanbon.me/v2/en-jp/team-builder" target="_blank">Sanbon Team Builder</a> JavaScript (Test function, paste in Browser Console | 测试功能,粘贴到浏览器控制台)</label><br><textarea id="sanbon-v2-script"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paddb-team-edit">
|
||||
<div class="user">
|
||||
<label for="paddb-username"></label><input id="paddb-username" type="text" placeholder="ID (2~12)">
|
||||
|
|
Loading…
Reference in New Issue