ekoetki/public/assets/js/api.js

198 lines
5.9 KiB
JavaScript

// ------chart js -----//
const options = {
series: [
{
name: '',
data: [19.0, 20, 19.8, 19, 19.67, 19.45, 20.99, 30.45, 19.45, 19.09, 19.8, 19.6, 20, 20.89, 21.4, 19.09, 20.8, 23.78, 25.0, 20, 19.65, 25, 24.89, 23, 19.0, 19.56, 20.36, 22.90, 24.90, 19.78]
},
],
chart: {
type: 'area',
height: 350,
offsetY: 0,
offsetX: 0,
toolbar: {
show: false,
},
},
stroke: {
width: 2,
curve: 'smooth'
},
dataLabels: {
enabled: false,
},
fill: {
type: "gradient",
gradient: {
shadeIntensity: 1,
colorStops: [
{
offset: 0,
color: 'rgba(var(--info),.4)',
opacity: 1,
},
{
offset: 50,
color: 'rgba(var(--info),.4)',
opacity: 1,
},
{
offset: 100,
color: 'rgba(var(--info),.1)',
opacity: 1,
},
]
}
},
legend: {
show: false,
},
colors: ['rgba(var(--info))'],
xaxis: {
tooltip: {
enabled: false,
},
labels: {
show: false,
},
axisBorder: {
show: false,
},
axisTicks: {
show: false,
},
},
tooltip: {
x: {
show: false,
},
style: {
fontSize: '16px',
fontFamily: '"Outfit", sans-serif',
},
},
responsive: [{
breakpoint: 1660,
options: {
chart: {
height: 365
}
}
}]
};
const chart = new ApexCharts(document.querySelector("#apikey"), options);
chart.render();
//----- end chart js----- //
$(function () {
$('#apikeydtatable').DataTable();
});
// api generator //
(function () {
const usernameInput = $('#username');
const keygenValueInput = $('#keygenValue');
const apiModel = $("#apiModel");
const apiKeyContent = $(".api_key_content");
const tableBody = document.querySelector("#api_key_body");
function tableBodyFun() {
return `
<tr>
<td>
<div class="checkbox-wrapper">
<label class="check-box m-0">
<input type="checkbox">
<span class="checkmark light-primary"></span>
</label>
</div>
</td>
<td>
<div class="d-flex align-items-center">
<div class="h-30 w-30 d-flex-center b-r-50 overflow-hidden text-bg-primary me-2">
<img src="../assets/images/avatar/1.png" alt="" class="img-fluid">
</div>
${usernameInput.val()}
</div>
</td>
<td>Gavin Cortez</td>
<td>${keygenValueInput.val()}</td>
<td>1 Jan 2024</td>
<td>cristipola@gmailod.com</td>
<td>
<button type="button" class="btn btn-danger icon-btn b-r-4 delete-btn" id="account_delete" data-bs-toggle="modal">
<i class="ti ti-trash"></i>
</button>
<button type="button" class="btn btn-success icon-btn b-r-4">
<i class="ti ti-edit"></i>
</button>
</td>
</tr>
`;
}
// Handle creating a unique key
$('#create_unique_key').on('click', function () {
apiModel.modal("show");
});
$('#keygen').on('click', function () {
try {
const username = usernameInput.val().trim();
if (username) {
if (apiKeyContent.hasClass("d-none")) {
apiKeyContent.removeClass("d-none");
keygenValueInput.val(generateUUID());
} else {
tableBody.innerHTML = tableBodyFun() + tableBody.innerHTML;
apiModel.modal("hide");
keygenValueInput.val("");
usernameInput.val("");
deletAction();
apiKeyContent.addClass("d-none");
}
} else {
alert('Please enter a username.');
}
} catch (error) {
console.error("Error generating unique key:", error);
}
});
// Generate UUID function
function generateUUID() {
let d = new Date().getTime();
if (window.performance && typeof window.performance.now === "function") {
d += performance.now();
}
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
const r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
}
// Handle delete action with event listener cleanup
function deletAction() {
document.querySelectorAll(".delete-btn").forEach((element) => {
element.addEventListener("click", function handleDeleteClick() {
try {
$("#apiDeletModal").modal("show");
document.querySelector("#confirmDelete").addEventListener("click", function () {
element.closest("tr").remove();
$("#apiDeletModal").modal("hide");
element.removeEventListener("click", handleDeleteClick);
});
} catch (error) {
console.error("Error handling delete action:", error);
}
});
});
}
deletAction();
})();