{% extends 'data_grid.html' %} {% load i18n static common %} {% block main_body %}
{% trans 'attendance_capture' %}
{% trans 'transaction_field_employeeCode' %}
-
{% trans 'transaction_field_firstName' %}
-
{% trans 'transaction_field_lastName' %}
-
{% trans 'transaction_field_department' %}
-
{% trans 'transaction_field_position' %}
-
{% trans 'transaction_field_punchDate' %}
-
{% trans 'transaction_field_punchTime' %}
-
{% trans 'transaction_field_area' %}
-
{% trans 'transaction_field_terminalSN' %}
-
{% trans 'transaction_field_uploadTime' %}
-
{% endblock %} {% block filter_extra_bar %}
{% endblock filter_extra_bar %} {% block grid_opt_update %} var today = new Date(); today = today.getFullYear()+'-'+String(today.getMonth() + 1).padStart(2, '0')+'-'+String(today.getDate()).padStart(2, '0'); data_grid_opts[data_grid_opts.table_id] = {'init_where': {_p1_punch_time__gte: today,_p1_punch_time__lte: today}}; {% endblock %} {% block actionAfterTableRender %} layui.use(['table', 'form', 'laydate'], function(){ var table = layui.table, form=layui.form, laydate = layui.laydate; form.render(); // Helper function to format date as YYYY-MM-DD function formatDate(date) { var year = date.getFullYear(); var month = String(date.getMonth() + 1).padStart(2, '0'); var day = String(date.getDate()).padStart(2, '0'); return year + '-' + month + '-' + day; } // Helper function to get start of week (Monday) function getStartOfWeek(date) { var d = new Date(date); var day = d.getDay(); var diff = d.getDate() - day + (day === 0 ? -6 : 1); return new Date(d.setDate(diff)); } // Function to set date range based on selected option function setDateRange(rangeType) { var today = new Date(); var startDate, endDate; switch(rangeType) { case 'today': startDate = today; endDate = today; break; case 'yesterday': startDate = new Date(today); startDate.setDate(today.getDate() - 1); endDate = startDate; break; case 'this_week': startDate = getStartOfWeek(today); endDate = today; break; case 'this_month': startDate = new Date(today.getFullYear(), today.getMonth(), 1); endDate = today; break; case 'this_year': startDate = new Date(today.getFullYear(), 0, 1); endDate = today; break; default: startDate = new Date(today.getFullYear(), today.getMonth(), 1); endDate = today; } $('#startDateInput').val(formatDate(startDate)); $('#endDateInput').val(formatDate(endDate)); } // Initialize laydate for start and end date inputs var startDatePicker = laydate.render({ elem: '#startDateInput', format: 'yyyy-MM-dd', done: function(value, date, endDate) { } }); var endDatePicker = laydate.render({ elem: '#endDateInput', format: 'yyyy-MM-dd', done: function(value, date, endDate) { } }); // Function to reload table with date parameters function reloadTableWithDates() { var startDate = $('#startDateInput').val(); var endDate = $('#endDateInput').val(); var timeRange = $('#timeRangeSelect').val(); var filterParams = $.fn.get_filter_params('{{ model_name }}') || {}; var newWhere = $.extend({}, filterParams, { _p1_punch_time__gte: startDate, _p1_punch_time__lte: endDate }); table.reload(data_grid_opts.table_id, { where: newWhere }); } // Listen to time range dropdown change event form.on('select(timeRangeFilter)', function(data){ var rangeType = data.value; setDateRange(rangeType); reloadTableWithDates(); }); // Listen to search button click event form.on('submit(transaction-search)', function(data){ reloadTableWithDates(); return false; // Prevent form submission }); // Initialize date range on page load (no reload needed, table already loaded with init_where) setDateRange('today'); setTimeout(function () { table.on('row({{ model_name }})', function(obj){ var data = obj.data; var dd = data.transaction_punch_date; var dt = data.transaction_punch_time; var dtStr = dd.replace(/-/g, '') + dt.replace(/:/g, ''); var seconds = (Date.parse(dtStr)) / 1000; punch_time_of_epoch = data.punch_time_of_epoch if (data.terminal_sn === "App"){ var url = "/authenticated_file/upload/" + dd.replace(/-/g, '').substring(0, 6) + "/" + data.terminal_sn.replace(/:/g, "-") + "/" + punch_time_of_epoch + "-" + data.emp_code +".jpg"; } else { var url = "/authenticated_file/upload/" + dd.replace(/-/g, '').substring(0, 6) + "/" + data.terminal_sn.replace(/:/g, "-") + "/" + dtStr + "-" + data.emp_code + ".jpg"; } $("#id_employeeCapture").attr('src', url); $("#empCodePanel").html(data.emp_code); $("#firstNamePanel").html(data.employee_name); $("#lastNamePanel").html(data.employee_last_name); $("#departmentPanel").html(data.employee_department); $("#positionPanel").html(data.employee_position); $("#punchDatePanel").html(data.transaction_punch_date); $("#punchTimePanel").html(data.transaction_punch_time); $("#areaPanel").html(data.area_alias); $("#terminalSNPanel").html(data.terminal_sn); $("#uploadTimePanel").html(data.upload_time); }); }, 500); }) {% endblock %}