feat(webui): add list of owned warframes & weapons with "Make Rank 30" option (#170)
This commit is contained in:
parent
676c3b1616
commit
70c9a5013d
@ -18,7 +18,7 @@ const loginController: RequestHandler = async (request, response) => {
|
|||||||
|
|
||||||
const account = await Account.findOne({ email: loginRequest.email }); //{ _id: 0, __v: 0 }
|
const account = await Account.findOne({ email: loginRequest.email }); //{ _id: 0, __v: 0 }
|
||||||
|
|
||||||
if (!account && config.autoCreateAccount) {
|
if (!account && config.autoCreateAccount && loginRequest.ClientType != "webui") {
|
||||||
try {
|
try {
|
||||||
const newAccount = await createAccount({
|
const newAccount = await createAccount({
|
||||||
email: loginRequest.email,
|
email: loginRequest.email,
|
||||||
|
@ -26,32 +26,38 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="main-view" class="d-none">
|
<div id="main-view" class="d-none">
|
||||||
<p>Hello, <b class="displayname"></b>! <a href="#" onclick="logout();">Logout</a></p>
|
<p>Hello, <b class="displayname"></b>! <a href="#" onclick="logout();">Logout</a></p>
|
||||||
<div class="d-flex">
|
<div class="row">
|
||||||
<div class="card m-1 w-50">
|
<div class="col-lg-6">
|
||||||
<h5 class="card-header">Acquire Warframe</h5>
|
<div class="card mb-3">
|
||||||
<form class="card-body row" onsubmit="doAcquireWarframe();return false;">
|
<h5 class="card-header">Warframes</h5>
|
||||||
<div class="col-xxl-10">
|
<div class="card-body">
|
||||||
|
<table class="table table-striped w-100">
|
||||||
|
<tbody id="warframe-list"></tbody>
|
||||||
|
</table>
|
||||||
|
<form class="input-group" onsubmit="doAcquireWarframe();return false;">
|
||||||
|
<button class="btn btn-primary" type="submit">Add</button>
|
||||||
<input class="form-control" id="warframe-to-acquire" list="datalist-warframes" />
|
<input class="form-control" id="warframe-to-acquire" list="datalist-warframes" />
|
||||||
</div>
|
|
||||||
<div class="col-xxl-2">
|
|
||||||
<button class="btn btn-primary" type="submit">Acquire</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="card m-1 w-50">
|
|
||||||
<h5 class="card-header">Acquire Weapon</h5>
|
|
||||||
<form class="card-body row" onsubmit="doAcquireWeapon();return false;">
|
|
||||||
<div class="col-xxl-10">
|
|
||||||
<input class="form-control" id="weapon-to-acquire" list="datalist-weapons" />
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xxl-2">
|
|
||||||
<button class="btn btn-primary" type="submit">Acquire</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<h5 class="card-header">Weapons</h5>
|
||||||
|
<div class="card-body">
|
||||||
|
<table class="table table-striped w-100">
|
||||||
|
<tbody id="weapon-list"></tbody>
|
||||||
|
</table>
|
||||||
|
<form class="input-group" onsubmit="doAcquireWeapon();return false;">
|
||||||
|
<button class="btn btn-primary" type="submit">Add</button>
|
||||||
|
<input class="form-control" id="weapon-to-acquire" list="datalist-warframes" />
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<datalist id="datalist-warframes"></datalist>
|
<datalist id="datalist-warframes"></datalist>
|
||||||
<datalist id="datalist-weapons"></datalist>
|
<datalist id="datalist-weapons"></datalist>
|
||||||
<script
|
<script
|
||||||
|
@ -15,7 +15,7 @@ function loginFromLocalStorage() {
|
|||||||
s: "W0RFXVN0ZXZlIGxpa2VzIGJpZyBidXR0cw==", // signature of some kind
|
s: "W0RFXVN0ZXZlIGxpa2VzIGJpZyBidXR0cw==", // signature of some kind
|
||||||
lang: "en",
|
lang: "en",
|
||||||
date: 1501230947855458660, // ???
|
date: 1501230947855458660, // ???
|
||||||
ClientType: "",
|
ClientType: "webui",
|
||||||
PS: "W0RFXVN0ZXZlIGxpa2VzIGJpZyBidXR0cw==" // anti-cheat data
|
PS: "W0RFXVN0ZXZlIGxpa2VzIGJpZyBidXR0cw==" // anti-cheat data
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
@ -24,6 +24,7 @@ function loginFromLocalStorage() {
|
|||||||
$("#main-view").removeClass("d-none");
|
$("#main-view").removeClass("d-none");
|
||||||
$(".displayname").text(data.DisplayName);
|
$(".displayname").text(data.DisplayName);
|
||||||
window.accountId = data.id;
|
window.accountId = data.id;
|
||||||
|
updateInventory();
|
||||||
});
|
});
|
||||||
req.fail(() => {
|
req.fail(() => {
|
||||||
logout();
|
logout();
|
||||||
@ -42,18 +43,82 @@ if (localStorage.getItem("email") && localStorage.getItem("password")) {
|
|||||||
loginFromLocalStorage();
|
loginFromLocalStorage();
|
||||||
}
|
}
|
||||||
|
|
||||||
const req = $.get("/custom/getItemLists");
|
window.itemListPromise = new Promise(resolve => {
|
||||||
req.done(data => {
|
const req = $.get("/custom/getItemLists");
|
||||||
|
req.done(data => {
|
||||||
|
const itemMap = {};
|
||||||
for (const [type, items] of Object.entries(data)) {
|
for (const [type, items] of Object.entries(data)) {
|
||||||
items.forEach(item => {
|
items.forEach(item => {
|
||||||
const option = document.createElement("option");
|
const option = document.createElement("option");
|
||||||
option.setAttribute("data-key", item.uniqueName);
|
option.setAttribute("data-key", item.uniqueName);
|
||||||
option.value = item.name;
|
option.value = item.name;
|
||||||
document.getElementById("datalist-" + type).appendChild(option);
|
document.getElementById("datalist-" + type).appendChild(option);
|
||||||
|
itemMap[item.uniqueName] = { ...item, type };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
resolve(itemMap);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function updateInventory() {
|
||||||
|
const req = $.get("/api/inventory.php?accountId=" + window.accountId);
|
||||||
|
req.done(data => {
|
||||||
|
window.itemListPromise.then(itemMap => {
|
||||||
|
document.getElementById("warframe-list").innerHTML = "";
|
||||||
|
data.Suits.forEach(item => {
|
||||||
|
const tr = document.createElement("tr");
|
||||||
|
{
|
||||||
|
const td = document.createElement("td");
|
||||||
|
td.textContent = itemMap[item.ItemType].name;
|
||||||
|
tr.appendChild(td);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const td = document.createElement("td");
|
||||||
|
td.classList = "text-end";
|
||||||
|
if (item.XP < 1_600_000) {
|
||||||
|
const a = document.createElement("a");
|
||||||
|
a.href = "#";
|
||||||
|
a.onclick = function () {
|
||||||
|
addGearExp("Suits", item.ItemId.$oid, 1_600_000 - item.XP);
|
||||||
|
};
|
||||||
|
a.textContent = "Make Rank 30";
|
||||||
|
td.appendChild(a);
|
||||||
|
}
|
||||||
|
tr.appendChild(td);
|
||||||
|
}
|
||||||
|
document.getElementById("warframe-list").appendChild(tr);
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById("weapon-list").innerHTML = "";
|
||||||
|
["LongGuns", "Pistols", "Melee"].forEach(category => {
|
||||||
|
data[category].forEach(item => {
|
||||||
|
const tr = document.createElement("tr");
|
||||||
|
{
|
||||||
|
const td = document.createElement("td");
|
||||||
|
td.textContent = itemMap[item.ItemType].name;
|
||||||
|
tr.appendChild(td);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const td = document.createElement("td");
|
||||||
|
td.classList = "text-end";
|
||||||
|
if (item.XP < 800_000) {
|
||||||
|
const a = document.createElement("a");
|
||||||
|
a.href = "#";
|
||||||
|
a.onclick = function () {
|
||||||
|
addGearExp(category, item.ItemId.$oid, 800_000 - item.XP);
|
||||||
|
};
|
||||||
|
a.textContent = "Make Rank 30";
|
||||||
|
td.appendChild(a);
|
||||||
|
}
|
||||||
|
tr.appendChild(td);
|
||||||
|
}
|
||||||
|
document.getElementById("weapon-list").appendChild(tr);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function getKey(input) {
|
function getKey(input) {
|
||||||
return document
|
return document
|
||||||
.getElementById(input.getAttribute("list"))
|
.getElementById(input.getAttribute("list"))
|
||||||
@ -64,7 +129,7 @@ function getKey(input) {
|
|||||||
function doAcquireWarframe() {
|
function doAcquireWarframe() {
|
||||||
const uniqueName = getKey(document.getElementById("warframe-to-acquire"));
|
const uniqueName = getKey(document.getElementById("warframe-to-acquire"));
|
||||||
if (!uniqueName) {
|
if (!uniqueName) {
|
||||||
$("#warframe-to-acquire").addClass("is-invalid");
|
$("#warframe-to-acquire").addClass("is-invalid").focus();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const req = $.post({
|
const req = $.post({
|
||||||
@ -77,7 +142,8 @@ function doAcquireWarframe() {
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
req.done(() => {
|
req.done(() => {
|
||||||
alert("Warframe added to your inventory! Visit navigation to force an inventory update.");
|
document.getElementById("warframe-to-acquire").value = "";
|
||||||
|
updateInventory();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,7 +154,7 @@ $("#warframe-to-acquire").on("input", () => {
|
|||||||
function doAcquireWeapon() {
|
function doAcquireWeapon() {
|
||||||
const uniqueName = getKey(document.getElementById("weapon-to-acquire"));
|
const uniqueName = getKey(document.getElementById("weapon-to-acquire"));
|
||||||
if (!uniqueName) {
|
if (!uniqueName) {
|
||||||
$("#weapon-to-acquire").addClass("is-invalid");
|
$("#weapon-to-acquire").addClass("is-invalid").focus();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const req = $.post({
|
const req = $.post({
|
||||||
@ -101,10 +167,33 @@ function doAcquireWeapon() {
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
req.done(() => {
|
req.done(() => {
|
||||||
alert("Weapon added to your inventory! Visit navigation to force an inventory update.");
|
document.getElementById("weapon-to-acquire").value = "";
|
||||||
|
updateInventory();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#weapon-to-acquire").on("input", () => {
|
$("#weapon-to-acquire").on("input", () => {
|
||||||
$("#weapon-to-acquire").removeClass("is-invalid");
|
$("#weapon-to-acquire").removeClass("is-invalid");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function addGearExp(category, oid, xp) {
|
||||||
|
const data = {
|
||||||
|
Missions: {
|
||||||
|
Tag: "SolNode0",
|
||||||
|
Completes: 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
data[category] = [
|
||||||
|
{
|
||||||
|
ItemId: { $oid: oid },
|
||||||
|
XP: xp
|
||||||
|
}
|
||||||
|
];
|
||||||
|
$.post({
|
||||||
|
url: "/api/missionInventoryUpdate.php?accountId=" + window.accountId,
|
||||||
|
contentType: "text/plain",
|
||||||
|
data: JSON.stringify(data)
|
||||||
|
}).done(function () {
|
||||||
|
updateInventory();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user