HEX
Server: Apache
System: Linux p3plzcpnl506847.prod.phx3.secureserver.net 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: slfopp7cb1df (5698090)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //proc/self/root/proc/self/cwd/pm/app/Views/projects/timesheets/all_timesheet_wedget.php
<div id="all-timesheet-widget-container">
    <div class="card bg-white">
        <div class="card-header">
            <i data-feather="file-text" class="icon-16"></i>&nbsp; <?php echo app_lang("all_timesheets"); ?>

            <div class="float-end">
                <span id="date-range-selector-all_timesheet_statistics" class="float-end"></span>
            </div>
        </div>

        <div class="card-body rounded-bottom">
            <canvas id="timesheet-statistics-chart-all_timesheet_statistics" style="width: 100%; height: 221px;"></canvas>
        </div>
        <div id="all-timesheet-users-summary" class="avatar-group">
            <?php
            foreach ($timesheet_users_result AS $user) {
                $time = convert_seconds_to_time_format($user->total_sec);
                ?>
                <div class="user-avatar avatar-30 avatar-circle" data-bs-toggle='tooltip' title='<?php echo $user->user_name . " - " . $time; ?>'>
                    <img alt="" src="<?php echo get_avatar($user->user_avatar); ?>">
                </div>
                <?php
            }
            ?>
        </div>

    </div>
</div>

<script type="text/javascript">

    $(document).ready(function () {
        var date = {};

        //prepare timesheet statistics Chart
        prepareDashboardTimesheetChart = function () {
            appLoader.show();

            $.ajax({
                url: "<?php echo_uri("projects/timesheet_chart_data") ?>",
                data: {start_date: date.start_date, end_date: date.end_date},
                cache: false,
                type: 'POST',
                dataType: "json",
                success: function (response) {
                    appLoader.hide();
                    initDashboardTimesheetChart(response.timesheets, response.ticks);
                    $("#all-timesheet-users-summary").html(response.timesheet_users_result);
                    setTimeout(function () {
                        $('[data-bs-toggle="tooltip"]').tooltip();
                    }, 300);
                }
            });
        };

        $("#date-range-selector-all_timesheet_statistics").appDateRange({
            dateRangeType: "monthly",
            onChange: function (dateRange) {
                date = dateRange;
                prepareDashboardTimesheetChart();
            },
            onInit: function (dateRange) {
                date = dateRange;
                prepareDashboardTimesheetChart();
            }
        });

        setTimeout(function () {
            $('[data-bs-toggle="tooltip"]').tooltip();
        }, 300);

    });

    var dashboardTimesheetStatisticsContent;

    initDashboardTimesheetChart = function (timesheets, ticks) {
        var timesheetStatisticsChart = document.getElementById("timesheet-statistics-chart-all_timesheet_statistics");

        if (dashboardTimesheetStatisticsContent) {
            dashboardTimesheetStatisticsContent.destroy();
        }

        dashboardTimesheetStatisticsContent = new Chart(timesheetStatisticsChart, {
            type: 'bar',
            data: {
                labels: ticks,
                datasets: [{
                        label: '<?php echo app_lang("timesheet_statistics"); ?>',
                        data: timesheets,
                        fill: true,
                        categoryPercentage: 0.3,
                        borderColor: '#00B493',
                        backgroundColor: '#00B493',
                        borderWidth: 2
                    }]},
            options: {
                responsive: true,
                maintainAspectRatio: false,
                tooltips: {
                    callbacks: {
                        title: function (tooltipItem, data) {
                            return data['labels'][tooltipItem[0]['index']] + " <?php echo app_lang($month) ?>";
                        },
                        label: function (tooltipItem, data) {
                            return secondsToTimeFormat(data['datasets'][0]['data'][tooltipItem['index']] * 60 * 60);
                        }
                    }
                },
                legend: {
                    display: false
                },
                scales: {
                    xAxes: [{
                            gridLines: {
                                display: false
                            },
                            ticks: {
                                display: true
                            }
                        }],
                    yAxes: [{
                            gridLines: {
                                display: false
                            },
                            ticks: {
                                display: true
                            }
                        }]
                }
            }
        });
    }
</script>