# This is a combination of 12 commits.
# This is the 1st commit message: Initial commit # This is the commit message #2: added whole syswtem becuz i forgot to keep up with the github # This is the commit message #3: hihi hiha # This is the commit message #4: added startServer.sh # This is the commit message #5: hihi hiha # This is the commit message #6: fixed some packages # This is the commit message #7: fixed every bug with the stupid oop # This is the commit message #8: Revert "fixed every bug with the stupid oop" This reverts commit d2255863aa44e2504f9f2cec9e1ae5d1094cb9cd. # This is the commit message #9: added prevention of breaking the system by manually filling in the project id # This is the commit message #10: fixed bug when adding bot # This is the commit message #11: made user-id not just count up from 0 # This is the commit message #12: fixed the issue where if you load project page it woulnt show the commands until you refresh the page
This commit is contained in:
266
scripts/project.js
Executable file
266
scripts/project.js
Executable file
@@ -0,0 +1,266 @@
|
||||
function getProjectId() {
|
||||
let currentPage = window.location.href;
|
||||
return parseInt(currentPage.split('/projects/')[1].split('/')[0]);
|
||||
}
|
||||
|
||||
function editProjectName(){
|
||||
Swal.fire({
|
||||
title: 'Enter Project Name',
|
||||
html:
|
||||
'<input id="projectName" class="swal2-input" placeholder="Project Name">',
|
||||
focusConfirm: false,
|
||||
preConfirm: () => {
|
||||
const name = Swal.getPopup().querySelector('#projectName').value;
|
||||
|
||||
// Check if both name and token are filled
|
||||
if (!name) {
|
||||
Swal.showValidationMessage('Please fill in all the fields');
|
||||
return false; // Prevent closing the modal
|
||||
}
|
||||
|
||||
// Perform the POST request to /create-bot
|
||||
return fetch('/rename-project', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
name: name,
|
||||
id: getProjectId()
|
||||
}),
|
||||
})
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
throw new Error('Network response was not ok');
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then(data => {
|
||||
Swal.fire('Project Rename!', 'Your project has been successfully been renamed.', 'success').then(() => {
|
||||
window.location.reload();
|
||||
});
|
||||
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('There was a problem with the fetch operation:', error);
|
||||
Swal.fire('Error', 'There was an error creating the bot.', 'error');
|
||||
});
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
function exportProject() {
|
||||
Swal.fire({
|
||||
title: "Exporting...",
|
||||
text: "Your project export is in progress.",
|
||||
icon: "info",
|
||||
showConfirmButton: false,
|
||||
allowOutsideClick: false,
|
||||
allowEscapeKey: false
|
||||
});
|
||||
|
||||
fetch(`/export?id=${getProjectId()}`, { method: 'POST' })
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
throw new Error(`Request failed. Status: ${response.status}`);
|
||||
}
|
||||
return response.blob();
|
||||
})
|
||||
.then(blob => {
|
||||
// Create a link element
|
||||
const link = document.createElement('a');
|
||||
link.href = window.URL.createObjectURL(blob);
|
||||
|
||||
// Set the download attribute and trigger a click
|
||||
link.download = `bot_builds_${getProjectId()}.zip`;
|
||||
link.click();
|
||||
|
||||
// Clean up
|
||||
window.URL.revokeObjectURL(link.href);
|
||||
|
||||
Swal.close();
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
Swal.fire({
|
||||
title: "Exported!",
|
||||
text: "Your project has been exported.",
|
||||
icon: "success"
|
||||
});
|
||||
loadData();
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error:', error);
|
||||
Swal.fire({
|
||||
title: "Export Failed",
|
||||
text: "There was an error exporting your project.",
|
||||
icon: "error"
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function createNewCommand() {
|
||||
Swal.fire({
|
||||
title: 'Create Command',
|
||||
html:
|
||||
'<label for="name">Command Name</label>' +
|
||||
'<input id="name" class="swal2-input" placeholder="Command Name">' +
|
||||
'<label for="description">Description</label>' +
|
||||
'<input id="description" class="swal2-input" placeholder="Command Description">'+
|
||||
'<label for="response">Command Response</label>' +
|
||||
'<input id="response" class="swal2-input" placeholder="Command Response">',
|
||||
focusConfirm: false,
|
||||
showCancelButton: true,
|
||||
cancelButtonText: 'Cancel',
|
||||
confirmButtonText: 'Create',
|
||||
preConfirm: () => {
|
||||
const name = Swal.getPopup().querySelector('#name').value;
|
||||
const description = Swal.getPopup().querySelector('#description').value;
|
||||
const response = Swal.getPopup().querySelector('#response').value;
|
||||
|
||||
// Check if both name and token are filled
|
||||
if (!name || !description || !response) {
|
||||
Swal.showValidationMessage('Please fill in all the fields');
|
||||
return false; // Prevent closing the modal
|
||||
}
|
||||
|
||||
// Perform the POST request to /create-bot
|
||||
return fetch('/create-command', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
name: name,
|
||||
description: description,
|
||||
response: response,
|
||||
projectId: getProjectId()
|
||||
}),
|
||||
})
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
throw new Error('Network response was not ok');
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then(data => {
|
||||
console.log(data);
|
||||
Swal.fire('Command Created!', 'Your command has been successfully created.', 'success');
|
||||
loadData();
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('There was a problem with the fetch operation:', error);
|
||||
Swal.fire('Error', 'There was an error creating the bot.', 'error');
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function deleteCommand (event) {
|
||||
const commandId=event.target.dataset.commandId;
|
||||
const projectId = getProjectId();
|
||||
|
||||
Swal.fire({
|
||||
title: "Are you sure you want to delete this command?",
|
||||
text: "You won't be able to revert this!",
|
||||
icon: "warning",
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: "#3085d6",
|
||||
cancelButtonColor: "#d33",
|
||||
confirmButtonText: "Yes, delete it!"
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.open("POST", `/delete-command?commandId=${commandId}&projectId=${projectId}`);
|
||||
xhr.send();
|
||||
xhr.onload = () => {
|
||||
if (xhr.status == 200){
|
||||
Swal.fire({
|
||||
title: "Deleted!",
|
||||
text: "Your command has been deleted.",
|
||||
icon: "success"
|
||||
})
|
||||
loadData();
|
||||
} else {
|
||||
console.error('Request failed. Status: ' + xhr.status);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function loadData() {
|
||||
let projectId = getProjectId()
|
||||
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', `/fetch-project-data?id=${projectId}`, true);
|
||||
xhr.send();
|
||||
xhr.onload = () => {
|
||||
if (xhr.status == 200){
|
||||
|
||||
let jsonResponse = JSON.parse(xhr.responseText);
|
||||
if (jsonResponse != {}){
|
||||
document.querySelector("#title").innerHTML = jsonResponse.projectName.toUpperCase();
|
||||
document.querySelector("#description").innerHTML = "Project Id: "+jsonResponse.projectId;
|
||||
}
|
||||
} else {
|
||||
console.error('Request failed. Status: ' + xhr.status);
|
||||
}
|
||||
}
|
||||
|
||||
let xhr2 = new XMLHttpRequest();
|
||||
xhr2.open('GET', `/fetch-commands?id=${projectId}`, true);
|
||||
xhr2.send();
|
||||
|
||||
xhr2.onload = function () {
|
||||
if (xhr2.status == 200) {
|
||||
let jsonResponse = JSON.parse(xhr2.responseText);
|
||||
console.log(jsonResponse)
|
||||
|
||||
const gridContainer = document.getElementById("grid");
|
||||
gridContainer.innerHTML = '';
|
||||
|
||||
|
||||
const specialButton = document.createElement('div');
|
||||
specialButton.classList.add('grid-btn');
|
||||
specialButton.id = 'special-button';
|
||||
|
||||
const button = document.createElement('button');
|
||||
button.innerText = 'NEW COMMAND';
|
||||
button.id = 'add-command-button';
|
||||
button.onclick = createNewCommand;
|
||||
|
||||
specialButton.appendChild(button);
|
||||
gridContainer.appendChild(specialButton);
|
||||
|
||||
jsonResponse.forEach(command => {
|
||||
const gridItem = document.createElement('div');
|
||||
gridItem.classList.add('grid-btn');
|
||||
|
||||
const button = document.createElement('button');
|
||||
button.innerHTML = "<strong class='command-bold'>"+command.name+"</strong><br>"+command.description;
|
||||
button.dataset.commandId=command.id;
|
||||
button.dataset.commandResponse=command.response;
|
||||
button.addEventListener("click", (event)=>{
|
||||
deleteCommand(event);
|
||||
});
|
||||
|
||||
|
||||
gridItem.appendChild(button);
|
||||
gridContainer.appendChild(gridItem);
|
||||
});
|
||||
|
||||
} else {
|
||||
console.error('Request failed. Status: ' + xhr2.status);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
loadData();
|
||||
});
|
||||
Reference in New Issue
Block a user