132 lines
3.9 KiB
JavaScript
132 lines
3.9 KiB
JavaScript
/**
|
|
* @typedef {Object} Log
|
|
* @property {number} index
|
|
* @property {string} datenya
|
|
* @property {string} timenya
|
|
* @property {string} machine
|
|
* @property {string} description
|
|
*/
|
|
|
|
/** List of Log data loaded from server
|
|
* @type {Log[]}
|
|
*/
|
|
window.logdata = [];
|
|
|
|
dtLog = null;
|
|
|
|
/**
|
|
* Fill log table body with values
|
|
* @param {Log[]} vv values to fill
|
|
*/
|
|
function fill_logtablebody(vv) {
|
|
dtLog.clear();
|
|
if (!Array.isArray(vv) || vv.length === 0) {
|
|
//$('#btnExport').prop('disabled', true);
|
|
return;
|
|
}
|
|
dtLog.rows.add(vv);
|
|
dtLog.draw();
|
|
|
|
|
|
$('#tablesize').text("Table Size: " + vv.length);
|
|
//$('#btnExport').prop('disabled', false);
|
|
}
|
|
|
|
/**
|
|
* Reload logs from server with date and filter
|
|
* @param {String} APIURL API URL endpoint , default "Log/"
|
|
* @param {String} date date in format dd-mm-yyyy
|
|
* @param {String} filter log filter text
|
|
*/
|
|
function reloadLogs(APIURL = "Log/", date, filter) {
|
|
const params = new URLSearchParams({
|
|
date: date,
|
|
filter: filter
|
|
})
|
|
console.log("Loading logs with params: " + params.toString());
|
|
window.logdata = [];
|
|
fetchAPI(APIURL + "List?" + params.toString(), "GET", {}, null, (okdata) => {
|
|
console.log("Logs loaded: " + okdata.length);
|
|
if (Array.isArray(okdata)) {
|
|
window.logdata.push(...okdata);
|
|
fill_logtablebody(window.logdata);
|
|
}
|
|
}, (errdata) => {
|
|
alert("Error loading logs : " + errdata.message);
|
|
});
|
|
}
|
|
|
|
datepicker = null;
|
|
$btnGet = null;
|
|
|
|
$(document).ready(function () {
|
|
console.log("log.js ready");
|
|
let selectedlogdate = "";
|
|
let logfilter = "";
|
|
let APIURL = "Log/";
|
|
$btnGet = $('#btnGet');
|
|
|
|
datepicker = new Litepicker({
|
|
element: document.getElementById('logdate'),
|
|
format: 'DD/MM/YYYY',
|
|
lang: 'en-US',
|
|
autoApply: true,
|
|
singleMode: true,
|
|
startDate: new Date(),
|
|
onSelect: (date) => {
|
|
selectedlogdate = date.format('DD/MM/YYYY');
|
|
console.log("Selected date: " + selectedlogdate);
|
|
}
|
|
})
|
|
|
|
|
|
if (dtLog === null) {
|
|
dtLog = new DataTable('#logtable', {
|
|
dom: 'Bfrtip',
|
|
data: [],
|
|
pageLength: 25,
|
|
columns: [
|
|
{ title: "No", data: "index" },
|
|
{ title: "Date", data: "datenya" },
|
|
{ title: "Time", data: "timenya" },
|
|
{ title: "Machine", data: "machine" },
|
|
{ title: "Description", data: "description" }
|
|
],
|
|
buttons: ['print', 'pdf', 'excel']
|
|
});
|
|
}
|
|
|
|
// findalldate is checkbox, if checked will disable datepicker
|
|
$('#findalldate').off('change').on('change', function () {
|
|
if ($(this).is(':checked')) {
|
|
datepicker.disabled = true;
|
|
selectedlogdate = "alldate";
|
|
console.log("Find all date checked, omitting date filter");
|
|
} else {
|
|
datepicker.disabled = false;
|
|
const date = datepicker.getDate();
|
|
selectedlogdate = date.format('DD/MM/YYYY');
|
|
console.log("Find all date unchecked, selected date: " + selectedlogdate);
|
|
}
|
|
});
|
|
|
|
$('#searchfilter').off('input').on('input', function () {
|
|
logfilter = $(this).val();
|
|
//reloadLogs(APIURL, selectedlogdate, logfilter);
|
|
});
|
|
$btnGet.click(function () {
|
|
let checked = $('#findalldate').is(':checked');
|
|
if (checked && logfilter.trim() === "") {
|
|
alert("Please enter a filter when 'Find All Date' is checked to avoid large data load.");
|
|
return;
|
|
}
|
|
//$(this).data('selectedlogdate', selectedlogdate);
|
|
//$(this).data('logfilter', logfilter);
|
|
reloadLogs(APIURL, selectedlogdate, logfilter);
|
|
});
|
|
|
|
selectedlogdate = datepicker.getDate().format('DD/MM/YYYY');
|
|
console.log("Initial selected date: " + selectedlogdate);
|
|
$btnGet.trigger('click'); // load logs on page load
|
|
|
|
}); |