sprite upload/delete is working, token form skeleton is there
This commit is contained in:
parent
43d85c2abc
commit
8dfa99c8bc
3 changed files with 88 additions and 6 deletions
|
@ -1,7 +1,10 @@
|
||||||
let adminToken = null;
|
let adminToken = null;
|
||||||
const adminWrapper = document.getElementById("adminWrapper");
|
const adminWrapper = document.getElementById("adminWrapper");
|
||||||
const adminZone = document.getElementById("adminZone");
|
const adminZone = document.getElementById("adminZone");
|
||||||
|
const spriteZone = document.getElementById("spriteZone");
|
||||||
const createTableForm = document.getElementById("createTableForm");
|
const createTableForm = document.getElementById("createTableForm");
|
||||||
|
const createTokenForm = document.getElementById("createTokenForm");
|
||||||
|
const tokenWrapper = document.getElementById("adminWrapper_tokens");
|
||||||
const newTableName = document.getElementById("newTableName");
|
const newTableName = document.getElementById("newTableName");
|
||||||
const newTablePass = document.getElementById("newTablePass");
|
const newTablePass = document.getElementById("newTablePass");
|
||||||
|
|
||||||
|
@ -19,6 +22,12 @@ async function getTable(name, pass) {
|
||||||
headers: headers,
|
headers: headers,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const tokenImgs = await fetch(`/admin/api/upload/${name}/token/?passcode=${pass}`, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: headers,
|
||||||
|
});
|
||||||
|
|
||||||
|
let infoHtml = ""
|
||||||
if (res.ok) {
|
if (res.ok) {
|
||||||
document.getElementById("input_table_name").value = name;
|
document.getElementById("input_table_name").value = name;
|
||||||
document.getElementById("input_table_pass").value = pass;
|
document.getElementById("input_table_pass").value = pass;
|
||||||
|
@ -33,7 +42,7 @@ async function getTable(name, pass) {
|
||||||
infoHtml += "<ul>";
|
infoHtml += "<ul>";
|
||||||
for (const i of imgs) {
|
for (const i of imgs) {
|
||||||
const parts = i.split("/");
|
const parts = i.split("/");
|
||||||
infoHtml += `<li>${parts[parts.length - 1]} <a href="${i}">view</a> <button onclick="sendMapImg('${i}');">Set</button> <button onclick="deleteImg('${i}')">Delete</button></li>\n`;
|
infoHtml += `<li>${parts[parts.length - 1]} <a href="${i}" target="_blank">view</a> <button onclick="sendMapImg('${i}');">Set</button> <button onclick="deleteImg('${i}')">Delete</button></li>\n`;
|
||||||
}
|
}
|
||||||
infoHtml += "</ul>";
|
infoHtml += "</ul>";
|
||||||
} else {
|
} else {
|
||||||
|
@ -41,6 +50,24 @@ async function getTable(name, pass) {
|
||||||
}
|
}
|
||||||
adminZone.innerHTML = infoHtml;
|
adminZone.innerHTML = infoHtml;
|
||||||
|
|
||||||
|
let tokenListHTML = "<input id='token_img_upload' type='file'/><button onclick='uploadTokenImg()'>Upload Token</button><br/>";
|
||||||
|
if (tokenImgs.ok) {
|
||||||
|
tokenListHTML += "<label>Available Sprites</label>";
|
||||||
|
const tokens = await tokenImgs.json();
|
||||||
|
tokenListHTML += "<ul>";
|
||||||
|
for (const t of tokens) {
|
||||||
|
const parts = t.split("/");
|
||||||
|
tokenListHTML += `<li>${parts[parts.length - 1]} <a href="${t}" target="_blank">view</a> <button onclick="deleteImg('${t}')">Delete</button></li>\n`
|
||||||
|
}
|
||||||
|
tokenListHTML += "</ul>";
|
||||||
|
} else {
|
||||||
|
tokenListHTML += "<label>Sprites couldn't be retrieved</label>"
|
||||||
|
}
|
||||||
|
|
||||||
|
spriteZone.innerHTML = tokenListHTML;
|
||||||
|
|
||||||
|
tokenWrapper.style.display = "inline";
|
||||||
|
|
||||||
// also, we have to fill and toggle the tokens window
|
// also, we have to fill and toggle the tokens window
|
||||||
} else {
|
} else {
|
||||||
console.log(res.status);
|
console.log(res.status);
|
||||||
|
@ -86,7 +113,30 @@ async function uploadMapImg() {
|
||||||
setErr(`${err.name}: ${err.message}`);
|
setErr(`${err.name}: ${err.message}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
async function uploadTokenImg() {
|
||||||
|
try {
|
||||||
|
var input = document.getElementById("token_img_upload");
|
||||||
|
var data = new FormData();
|
||||||
|
data.append('file', input.files[0]);
|
||||||
|
data.append('name', tableKey.name);
|
||||||
|
data.append('passcode', tableKey.passcode);
|
||||||
|
const headers = new Headers();
|
||||||
|
headers.set('Authorization', 'Bearer ' + adminToken.access_token);
|
||||||
|
res = await fetch(`/admin/api/upload/${tableKey.name}/token/`, {
|
||||||
|
headers: headers,
|
||||||
|
method: "POST",
|
||||||
|
body: data,
|
||||||
|
});
|
||||||
|
if (res.ok) {
|
||||||
|
// refresh so we can see the new entry in the list
|
||||||
|
getTable(tableKey.name, tableKey.passcode);
|
||||||
|
} else {
|
||||||
|
throw new Error("Something went wrong uploading the token sprite...");
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
setErr(`${err.name}: ${err.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
async function deleteImg(url) {
|
async function deleteImg(url) {
|
||||||
try {
|
try {
|
||||||
if (url.startsWith("/uploads/")) {
|
if (url.startsWith("/uploads/")) {
|
||||||
|
@ -155,6 +205,7 @@ async function getTables() {
|
||||||
}
|
}
|
||||||
tableListHTML += "</ul>"
|
tableListHTML += "</ul>"
|
||||||
adminZone.innerHTML = tableListHTML;
|
adminZone.innerHTML = tableListHTML;
|
||||||
|
tokenWrapper.style.display = "none";
|
||||||
} else {
|
} else {
|
||||||
if (res.status == 404) {
|
if (res.status == 404) {
|
||||||
return;
|
return;
|
||||||
|
@ -213,6 +264,15 @@ function setTableCreateFormVisible(v) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setTokenCreateFormVisible(v) {
|
||||||
|
if (createTokenForm) {
|
||||||
|
createTokenForm.style.display = v ? "block" : "none";
|
||||||
|
}
|
||||||
|
if (!v) {
|
||||||
|
// clear the form
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function createTable() {
|
async function createTable() {
|
||||||
const headers = new Headers();
|
const headers = new Headers();
|
||||||
headers.set('Authorization', 'Bearer ' + adminToken.access_token);
|
headers.set('Authorization', 'Bearer ' + adminToken.access_token);
|
||||||
|
|
|
@ -74,7 +74,8 @@
|
||||||
</form>
|
</form>
|
||||||
</details>
|
</details>
|
||||||
<br/>
|
<br/>
|
||||||
<details id="adminWrapper" class="ui_win admin_win" style="display:none;"><summary>table</summary>
|
<div id="adminWrapper" style="display:none;">
|
||||||
|
<details id="admin_table_win" class="ui_win admin_win"><summary>table</summary>
|
||||||
<button onclick="setTableCreateFormVisible(true)">New Table</button>
|
<button onclick="setTableCreateFormVisible(true)">New Table</button>
|
||||||
<form onsubmit="return false" id="createTableForm" style="display:none;">
|
<form onsubmit="return false" id="createTableForm" style="display:none;">
|
||||||
<label>Name<input id="newTableName"/></label><br/>
|
<label>Name<input id="newTableName"/></label><br/>
|
||||||
|
@ -82,9 +83,29 @@
|
||||||
<button type="submit" onclick="createTable()">Create</button>
|
<button type="submit" onclick="createTable()">Create</button>
|
||||||
<button onclick="setTableCreateFormVisible(false)">Cancel</button>
|
<button onclick="setTableCreateFormVisible(false)">Cancel</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
|
||||||
<div id="adminZone"></div>
|
<div id="adminZone"></div>
|
||||||
</details><br/>
|
</details><br/>
|
||||||
|
<div id="adminWrapper_tokens">
|
||||||
|
<details id="admin_token_win" class="ui_win admin_win"><summary>tokens</summary>
|
||||||
|
<button onclick="setTokenCreateFormVisible(true)">New Token</button>
|
||||||
|
<form onsubmit="return false" id="createTokenForm">
|
||||||
|
<label>Sprite<select id="token_combobox"></select></label><br/>
|
||||||
|
<label>Name<input id="newToken_name"/></label><br/>
|
||||||
|
<label>Width<input type="number" id="newToken_width" min="1" max="9999"/></label><br/>
|
||||||
|
<label>Height<input type="number" id="newToken_height" min="1" max="9999"/></label><br/>
|
||||||
|
<label>cX<input type="number" id="newToken_cx" min="0" max="9999"/></label><br/>
|
||||||
|
<label>cY<input type="number" id="newToken_cy" min="0" max="9999"/></label><br/>
|
||||||
|
<div id="tokenPreview_zone"></div>
|
||||||
|
<button type="submit" onlcick="createToken()">Create</button>
|
||||||
|
<button onclick="setTokenCreateFormVisible(false)">Cancel</button>
|
||||||
|
</form>
|
||||||
|
<div id="tokenZone"></div>
|
||||||
|
</details><br/>
|
||||||
|
<details id="admin_sprite_win" class="ui_win admin_win"><summary>sprites</summary>
|
||||||
|
<div id="spriteZone"></div>
|
||||||
|
</details>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</nav>
|
</nav>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
body {
|
body {
|
||||||
background: url('./bg.png');
|
background: url('./bg.png');
|
||||||
background-repeat: repeat;
|
background-repeat: repeat;
|
||||||
|
background-attachment: fixed;
|
||||||
}
|
}
|
||||||
|
|
||||||
label {
|
label {
|
||||||
|
|
Loading…
Reference in a new issue