_booking_info_box_small.php
9 months ago
index.php
1 year ago
widget_bookings_and_availability_timeline.php
9 months ago
widget_daily_bookings_chart.php
1 year ago
widget_upcoming_appointments.php
1 year ago
widget_daily_bookings_chart.php
133 lines
| 1 | <?php |
| 2 | /* @var $locations OsLocationModel[] */ |
| 3 | /* @var $agents OsAgentModel[] */ |
| 4 | /* @var $services OsServiceModel[] */ |
| 5 | /* @var $filter \LatePoint\Misc\Filter */ |
| 6 | |
| 7 | |
| 8 | if ( ! defined( 'ABSPATH' ) ) { |
| 9 | exit; // Exit if accessed directly |
| 10 | } |
| 11 | |
| 12 | |
| 13 | ?> |
| 14 | <div class="os-widget os-widget-animated os-widget-daily-bookings" data-os-reload-action="<?php echo esc_attr(OsRouterHelper::build_route_name('dashboard', 'widget_daily_bookings_chart')); ?>"> |
| 15 | <div class="os-widget-header with-actions"> |
| 16 | <h3 class="os-widget-header-text"><?php esc_html_e('Performance', 'latepoint'); ?></h3> |
| 17 | <div class="os-widget-header-actions-trigger"><i class="latepoint-icon latepoint-icon-more-horizontal"></i></div> |
| 18 | <div class="os-widget-header-actions"> |
| 19 | <?php if($locations && count($locations) > 1){ ?> |
| 20 | <select name="location_id" class="os-trigger-reload-widget"> |
| 21 | <option value=""><?php esc_html_e('All locations', 'latepoint'); ?></option> |
| 22 | <?php |
| 23 | foreach($locations as $location){ ?> |
| 24 | <option value="<?php echo esc_attr($location->id); ?>" <?php if($location->id == $filter->location_id) echo 'selected="selected"' ?>><?php echo esc_html($location->name); ?></option> |
| 25 | <?php } ?> |
| 26 | </select> |
| 27 | <?php } ?> |
| 28 | <?php $agents_selector_css = (is_array($agents) && (count($agents) == 1)) ? 'display: none;' : ''; ?> |
| 29 | <select name="agent_id" id="" class="os-trigger-reload-widget" style="<?php echo esc_attr($agents_selector_css); ?>"> |
| 30 | <option value=""><?php esc_html_e('All Agents', 'latepoint'); ?></option> |
| 31 | <?php |
| 32 | if($agents){ |
| 33 | foreach($agents as $agent){ ?> |
| 34 | <option value="<?php echo esc_attr($agent->id) ?>" <?php if($agent->id == $filter->agent_id) echo 'selected="selected"' ?>><?php echo esc_html($agent->full_name); ?></option> |
| 35 | <?php } |
| 36 | } ?> |
| 37 | </select> |
| 38 | <select name="service_id" id="" class="os-trigger-reload-widget"> |
| 39 | <option value=""><?php esc_html_e('All Services', 'latepoint'); ?></option> |
| 40 | <?php |
| 41 | if($services){ |
| 42 | foreach($services as $service){ ?> |
| 43 | <option value="<?php echo esc_attr($service->id) ?>" <?php if($service->id == $filter->service_id) echo 'selected="selected"' ?>><?php echo esc_html($service->name); ?></option> |
| 44 | <?php } |
| 45 | } ?> |
| 46 | </select> |
| 47 | <div class="os-date-range-picker"> |
| 48 | <span class="range-picker-value"><?php echo esc_html($date_period_string); ?></span> |
| 49 | <input type="hidden" name="date_from" value="<?php echo esc_attr($date_from); ?>"/> |
| 50 | <input type="hidden" name="date_to" value="<?php echo esc_attr($date_to); ?>"/> |
| 51 | <i class="latepoint-icon latepoint-icon-chevron-down"></i> |
| 52 | </div> |
| 53 | </div> |
| 54 | </div> |
| 55 | <div class="os-widget-content no-padding"> |
| 56 | <div class="stats-tab-contents"> |
| 57 | <div class="stats-tab-content"> |
| 58 | <div class="stats-charts-w"> |
| 59 | <div class="stats-line-chart-w"> |
| 60 | <div class="stats-tabs"> |
| 61 | <div class="stats-tab"> |
| 62 | <div class="stats-tab-value"> |
| 63 | <span class="stats-tab-value-self"><?php echo esc_html($total_bookings); ?></span> |
| 64 | <span class="stats-change change-<?php echo ($total_bookings == $prev_total_bookings) ? '' : (($total_bookings < $prev_total_bookings) ? 'negative' : 'positive'); ?>"> |
| 65 | <span class="stats-change-label"><?php esc_html_e('Previously:', 'latepoint'); echo ' <strong>'.esc_html($prev_total_bookings).'</strong>'; ?></span><span class="stats-change-value"><?php echo esc_html(OsUtilHelper::percent_diff($prev_total_bookings, $total_bookings)); ?>%</span> |
| 66 | </span> |
| 67 | </div> |
| 68 | <div class="stats-tab-label"><?php esc_html_e('Appointments', 'latepoint'); ?></div> |
| 69 | <div class="stats-tab-info" data-late-tooltip="<?php esc_attr_e('Total number of appointments in selected period.', 'latepoint');?>"><div class="stats-tab-info-icon">i</div></div> |
| 70 | </div> |
| 71 | <?php if(OsRolesHelper::can_user('transaction__view')){ ?> |
| 72 | <div class="stats-tab"> |
| 73 | <div class="stats-tab-value"> |
| 74 | <span class="stats-tab-value-self"><?php echo esc_html(OsMoneyHelper::format_price($total_price)); ?></span> |
| 75 | <span class="stats-change change-<?php echo ($total_price == $prev_total_price) ? '' : (($total_price < $prev_total_price) ? 'negative' : 'positive'); ?>"> |
| 76 | <span class="stats-change-label"><?php esc_html_e('Previously:', 'latepoint'); echo ' <strong>'.esc_html(OsMoneyHelper::format_price($prev_total_price)).'</strong>'; ?></span><span class="stats-change-value"><?php echo esc_html(OsUtilHelper::percent_diff($prev_total_price, $total_price)); ?>%</span> |
| 77 | </span> |
| 78 | </div> |
| 79 | <div class="stats-tab-label"><?php esc_html_e('Sales Revenue', 'latepoint'); ?></div> |
| 80 | <div class="stats-tab-info" data-late-tooltip="<?php esc_attr_e('Total sales in selected period.', 'latepoint');?>"><div class="stats-tab-info-icon">i</div></div> |
| 81 | </div> |
| 82 | <?php } ?> |
| 83 | <div class="stats-tab"> |
| 84 | <div class="stats-tab-value"> |
| 85 | <span class="stats-tab-value-self"><?php echo esc_html(round($total_duration/60, 1)); ?></span> |
| 86 | <span class="stats-change change-<?php echo ($total_duration == $prev_total_duration) ? '' : (($total_duration < $prev_total_duration) ? 'negative' : 'positive'); ?>"> |
| 87 | <span class="stats-change-label"><?php esc_html_e('Previously:', 'latepoint'); echo ' <strong>'.esc_html(round($prev_total_duration/60, 1)).'</strong>'; ?></span><span class="stats-change-value"><?php echo esc_html(OsUtilHelper::percent_diff($prev_total_duration, $total_duration)); ?>%</span> |
| 88 | </span> |
| 89 | </div> |
| 90 | <div class="stats-tab-label"><?php esc_html_e('Hours Worked', 'latepoint'); ?></div> |
| 91 | <div class="stats-tab-info" data-late-tooltip="<?php esc_attr_e('Total hours worked across all selected agents in selected period.', 'latepoint');?>"><div class="stats-tab-info-icon">i</div></div> |
| 92 | </div> |
| 93 | <div class="stats-tab"> |
| 94 | <div class="stats-tab-value"> |
| 95 | <span class="stats-tab-value-self"><?php echo esc_html($total_new_customers); ?></span> |
| 96 | <span class="stats-change change-<?php echo ($total_new_customers == $prev_total_new_customers) ? '' : (($total_new_customers < $prev_total_new_customers) ? 'negative' : 'positive'); ?>"> |
| 97 | <span class="stats-change-label"><?php esc_html_e('Previously:', 'latepoint'); echo ' <strong>'.esc_html($prev_total_new_customers).'</strong>'; ?></span><span class="stats-change-value"><?php echo esc_html(OsUtilHelper::percent_diff($prev_total_new_customers, $total_new_customers)); ?>%</span> |
| 98 | </span> |
| 99 | </div> |
| 100 | <div class="stats-tab-label"><?php esc_html_e('New Customers', 'latepoint'); ?></div> |
| 101 | <div class="stats-tab-info" data-late-tooltip="<?php esc_attr_e('Total number of new customers registered in selected period.', 'latepoint');?>"><div class="stats-tab-info-icon">i</div></div> |
| 102 | </div> |
| 103 | </div> |
| 104 | <?php if($daily_bookings_chart_data_values_string){ ?> |
| 105 | <div class="daily-bookings-chart-w"> |
| 106 | <canvas id="chartDailyBookings" |
| 107 | data-chart-labels="<?php echo esc_attr($daily_bookings_chart_labels_string); ?>" |
| 108 | data-chart-values="<?php echo esc_attr($daily_bookings_chart_data_values_string); ?>"></canvas> |
| 109 | </div> |
| 110 | <?php }else{ ?> |
| 111 | <div class="no-results-w"> |
| 112 | <div class="icon-w"><i class="latepoint-icon latepoint-icon-grid"></i></div> |
| 113 | <h2><?php esc_html_e('No Appointments Found', 'latepoint'); ?></h2> |
| 114 | <a href="#" <?php echo OsOrdersHelper::quick_order_btn_html(); ?> class="latepoint-btn"><i class="latepoint-icon latepoint-icon-plus-square"></i><span><?php esc_html_e('Create Appointment', 'latepoint'); ?></span></a> |
| 115 | </div> |
| 116 | <?php } ?> |
| 117 | </div> |
| 118 | <?php |
| 119 | // Circular pie chart, disabled for now |
| 120 | if(false && isset($pie_chart_data) && !empty($pie_chart_data['values'])){ ?> |
| 121 | <div class="stats-donut-chart-w"> |
| 122 | <div class="status-donut-label"><?php esc_html_e('Breakdown by Service', 'latepoint'); ?></div> |
| 123 | <canvas class="os-donut-chart" width="140" height="140" |
| 124 | data-chart-labels="<?php echo esc_attr(implode(',', $pie_chart_data['labels'])); ?>" |
| 125 | data-chart-colors="<?php echo esc_attr(implode(',', $pie_chart_data['colors'])); ?>" |
| 126 | data-chart-values="<?php echo esc_attr(implode(',', $pie_chart_data['values'])); ?>"></canvas> |
| 127 | </div> |
| 128 | <?php } ?> |
| 129 | </div> |
| 130 | </div> |
| 131 | </div> |
| 132 | </div> |
| 133 | </div> |