Source: demavu.footer [edit]
<!-- content-wrapper ends -->
<!-- partial:partials/_footer.html -->
<footer class="footer">
<div class="d-sm-flex justify-content-center justify-content-sm-between">
<span class="text-muted d-block text-center text-sm-right d-sm-inline-block">Copyright (c) 2024, 52 Productions, Inc.</span>
</div>
</footer>
<!-- partial -->
</div>
<!-- main-panel ends -->
</div>
<!-- page-body-wrapper ends -->
</div>
<!-- container-scroller -->
<!-- plugins:js -->
<script src="/assets/vendors/js/vendor.bundle.base.js"></script>
<!-- endinject -->
<!-- Plugin js for this page -->
<script src="/assets/vendors/chart.js/Chart.min.js"></script>
<script src="/assets/vendors/progressbar.js/progressbar.min.js"></script>
<script src="/assets/vendors/jvectormap/jquery-jvectormap.min.js"></script>
<script src="/assets/vendors/jvectormap/jquery-jvectormap-world-mill-en.js"></script>
<script src="/assets/vendors/owl-carousel-2/owl.carousel.min.js"></script>
<!-- End plugin js for this page -->
<!-- inject:js -->
<script src="/assets/js/off-canvas.js"></script>
<script src="/assets/js/hoverable-collapse.js"></script>
<script src="/assets/js/misc.js"></script>
<script src="/assets/js/settings.js"></script>
<script src="/assets/js/todolist.js"></script>
<!-- endinject -->
<!-- Custom js for this page -->
<script src="/assets/js/dashboard.js"></script>
<script>
// Wrap the code inside the window.onload function
window.onload = function() {
// For each field of class editable, when it changes, enable the saveButton
const editableFields = document.querySelectorAll('.editable');
editableFields.forEach(field => {
// Get the source input and target field elements
const sourceInput = document.getElementById(field.id);
const saveBtn = document.getElementById("saveChangesButton");
// Listen for changes in the source input
sourceInput.addEventListener('input', function() {
saveBtn.disabled = false;
});
});
// For each field of class "imgtext", changing it will update the src of an image with the same id, but txtIDNAME --> imgIDNAME
const imageTexts = document.querySelectorAll('.imgtext');
imageTexts.forEach(field => {
// Get the source input and target field elements
const sourceInput = document.getElementById(field.id);
const targetField = document.getElementById(field.id.replace("txt","img"));
// Listen for changes in the source input
sourceInput.addEventListener('input', function() {
// Update the attribute of the target field based on the input's value
const newValue = sourceInput.value;
targetField.setAttribute('src', newValue);
});
});
};
function addHtmlBefore(id, html) {
// Get the button element by its ID
var addBeforeElement = document.getElementById(id);
// Insert the new HTML content before the button
addBeforeElement.insertAdjacentHTML('beforebegin', html);
const saveBtn = document.getElementById("saveChangesButton");
saveBtn.disabled = false;
}
// Function to call the web service
// Data returned as a json object
async function callWebService(url) {
try {
// Make the network request
const response = await fetch(url);
// Check if the request was successful
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
// Get the response
const data = await response.text();
// Return the data
return data;
} catch (error) {
console.error('Error fetching data: ', error);
}
}
function addObject(category) {
var name = prompt("New " + category.slice(0, -1) + "'s name:", "");
// Check if the user clicked "OK" and entered something
if (name !== null) {
var server = "staging";
const url = '/site/addRecord(' + server + "," + category + ',' + btoa(removeNonAsciiCharacters(name)) + ')';
callWebService(url)
.then(data => {
// Handle the data from the web service
console.log('Received data:', data);
location.reload();
})
.catch(error => {
// Handle errors
console.error('Error calling web service:', error);
});
}
}
function removeObject(category, name) {
if (confirm("Delete " + name + ": Do you want to proceed?")) {
if (name !== null) {
var server = "staging";
const url = '/site/removeRecord(' + server + "," + category + ',' + btoa(removeNonAsciiCharacters(name)) + ')';
callWebService(url)
.then(data => {
// Handle the data from the web service
console.log('Received data:', data);
location.replace("/site/games:current");
})
.catch(error => {
// Handle errors
console.error('Error calling web service:', error);
});
}
} else {
console.log("User clicked Cancel");
}
}
function removeNonAsciiCharacters(inputString) {
// Replace non-ASCII characters with an empty string
const asciiString = inputString.replace(/[^\x00-\x7F]/g, '');
return asciiString;
}
function pushToProduction() {
if (confirm("Are you sure? This may take a minute or two...")) {
const url = '/site/copyDB:staging,production';
callWebService(url)
.then(data => {
// Handle the data from the web service
console.log('Received data:', data);
alert("Staging has been pushed to production.");
})
.catch(error => {
// Handle errors
console.error('Error calling web service:', error);
});
}
}
function saveEditableFields() {
const editableFields = document.querySelectorAll('.editable');
// Iterate over each field
editableFields.forEach(field => {
// Get the ID of the field
const fieldId = field.id;
const metaData = field.title;
// Get the content of the field
const fieldValue = field.value;
const server = "staging";
const url = '/site/updateRecord(' + server + "," + btoa(removeNonAsciiCharacters(metaData)) + "," + btoa(removeNonAsciiCharacters(fieldValue)) + ')';
const debugMsg = '/site/updateRecord(' + server + "," + removeNonAsciiCharacters(metaData) + "," + removeNonAsciiCharacters(fieldValue) + ')';
// alert(debugMsg);
callWebService(url)
.then(data => {
// Handle the data from the web service
console.log('path: ', metaData);
console.log('Value: ', fieldValue);
// console.log('Received data:', data);
const saveBtn = document.getElementById("saveChangesButton");
saveBtn.disabled = true;
//location.reload();
})
.catch(error => {
// Handle errors
console.error('Error calling web service:', error);
});
});
}
</script>
<!-- End custom js for this page -->
</body>
</html>