1621 lines
57 KiB
PHP
Executable File

<!-- styling -->
<style type="text/css">
.trnct{
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
word-break: break-all;
}
.trnct.by1{
-webkit-line-clamp: 1;
}
.trnct.by2{
-webkit-line-clamp: 2;
}
.trnct.by3{
-webkit-line-clamp: 3;
}
.cntr{
display: flex;
justify-content: center;
align-items: center;
}
.my-scroll:not(.hov){
width:0px !important;
}
.my-scroll.hov::-webkit-scrollbar{
width:0px !important;
}
.my-scroll.hov:hover::-webkit-scrollbar{
width:3px !important;
}
.my-scroll::-webkit-scrollbar-track{
background: #f1f1f1 !important;
}
.my-scroll::-webkit-scrollbar-thumb{
background: #888 !important;
}
.my-scroll::-webkit-scrollbar-thumb:hover{
background: #555 !important;
}
.dashboard-quick-cards{
border-radius: 10px;
transition: 0.4s;
border:1px solid rgba(0, 0, 0, 0.1);
margin-bottom: 1.5rem;
}
.dashboard-quick-cards:hover{
box-shadow:5px 20px 50px rgba(0, 0, 0, 0.1);
transition:0.4s;
transform: scale(1.05);
}
.dashboard-quick-cards .card-body{
padding: 1.7rem !important;
}
.main-heading{
color: #35393E;
font-family: Quicksand;
font-size: 22.7px;
font-style: normal;
font-weight: 700;
margin-bottom: 0px;
}
.sub-heading{
color: #9EA4AB;
font-family: Quicksand;
font-size: 13.04px;
font-style: normal;
margin-bottom: 0px;
margin-top: 10px;
}
.prcntg-badge{
width: fit-content;
flex-shrink: 0;
border-radius: 19.5px;
background: #DFF3FF;
padding: 5px 12px;
font-size: 11px;
margin-top: 10px;
display: inline-block;
}
.prcntg-badge.fall{
background:rgba(250, 68, 7,0.25) !important;
}
.prcntg-badge i{
transform: rotate(45deg);
}
.card-logo img{
height: 45px;
}
.ul-revn-block{
list-style-type: none;
display: flex;
gap: 1.3rem;
padding: 0px;
transform: rotate(180deg);
flex-direction: row;
margin: 0;
}
.ul-revn-block li{
width: 9px;
background: #5FC0FE;
display: inline-block;
border-radius: 8px;
}
.ul-revn-block li:nth-child(3){
height:120px;
}
.ul-revn-block li:nth-child(1),
.ul-revn-block li:nth-child(5){
height:45px;
}
.ul-revn-block li:nth-child(2),
.ul-revn-block li:nth-child(4){
height:75px;
}
.rev-chart-desp{
display: flex;
justify-content: flex-end;
margin-top:7px;
}
.rev-chart-desp i{
font-size: 11px;
margin-top: 3px;
color: #7CCA9F;
}
.rev-chart-desp .txt-hd{
color: #1E1B39;
font-family: Quicksand;
font-size: 11px;
font-style: normal;
}
.rev-chart-desp .txt-cnt{
color: #9EA4AB;
font-family: Quicksand;
font-size: 11px;
font-style: normal;
}
.dashboard-basic-cards{
border-radius: 10px;
transition: 0.4s;
border:1px solid rgba(0, 0, 0, 0.1);
overflow-y: auto !important;
overflow-x: hidden !important;
/*max-height: 400px !important;
min-height: 400px !important;*/
height: 400px !important;
}
.dashboard-basic-cards:hover{
box-shadow:5px 20px 50px rgba(0, 0, 0, 0.1);
transition:0.4s;
transform: scale(1.01);
}
.dashboard-basic-cards::-webkit-scrollbar {
width: 0px;
}
.dashboard-basic-cards:hover::-webkit-scrollbar {
width: 3px;
}
.dashboard-basic-cards::-webkit-scrollbar-track {
background: #f1f1f1;
}
.dashboard-basic-cards::-webkit-scrollbar-thumb {
background: #888;
}
.dashboard-basic-cards::-webkit-scrollbar-thumb:hover {
background: #555;
}
.dashboard-basic-cards .card-body{
padding: 1.2rem !important;
}
.w-m-y-filter-box-2{
position: absolute;
top: 10px;
right: 10px;
}
.w-m-y-filter-box-2 .dropdown-toggle{
color: #909BB0;
font-family: Quicksand;
background: #EAF1FF;
border: none !important;
font-size: 9px !important;
border-radius: 5px !important;
padding: 5px 10px !important;
font-weight: 600;
cursor: pointer;
}
.w-m-y-filter-box-2 .dropdown-menu{
font-size: 11px;
min-width: max-content !important;
}
.w-m-y-filter-box-2 .dropdown-menu .dropdown-item {
padding: 5px 20px !important;
}
.link-pointer {
position: absolute;
top: 12px;
right: 12px;
transform: rotate(-120deg);
padding: 5px 9px;
border-radius: 50%;
background: #F3F8FC;
/*box-shadow: 0px -1px 0px 0px rgba(0,0,0,0.1);*/
}
.link-pointer i{
color: rgba(0,0,0,0.5);
}
table.data-tables-adb-dashboard thead>tr>th{
padding-right: 25px !important;
}
table.data-tables-adb-dashboard thead>tr>th:before,
table.data-tables-adb-dashboard thead>tr>th:after{
top: 0.35rem;
}
table.data-tables-adb-dashboard tbody>tr>td{
font-size: 12px !important;
}
.data-tables-fxfrxxxgf5t .data-table-pagecountsummary .dataTables_info{
font-size: 11px !important;
}
.data-tables-fxfrxxxgf5t .data-table-pagination .paginate_button a{
font-size: 11px !important;
}
canvas#myDoughnutChart{
max-height:300px !important;
}
.dynamic-quick-cards-modal{
padding: 0 !important;
}
.dynamic-quick-cards-modal .modal-body::-webkit-scrollbar {
width: 7px;
height: 7px;
}
.dynamic-quick-cards-modal .modal-body::-webkit-scrollbar-track {
background: #f1f1f1;
}
.dynamic-quick-cards-modal .modal-body::-webkit-scrollbar-thumb {
background: #888;
border-radius: 15px !important;
}
.dynamic-quick-cards-modal .modal-body::-webkit-scrollbar-thumb:hover {
background: #555;
}
.dynamic-quick-cards-modal .modal-header .close {
margin-top: 3px !important;
}
.dynamic-quick-cards-modal .close-modal{
display: none;
}
/* daily basis schedule */
#calendar-dates{
font-size: 13px;
}
.daily-scheduled-calendar-container {
overflow-x: scroll;
white-space: nowrap;
margin-left: 20px;
margin-right: 20px;
}
.daily-scheduled-calendar-container::-webkit-scrollbar,
.dashboard-basic-cards[data-card-name="daily_scheduled"]::-webkit-scrollbar{
display: none;
}
.daily-scheduled-calendar-container .day-container {
display: inline-block;
width: 40px;
text-align: center;
padding: 10px;
cursor: pointer;
border-radius: 5px;
margin-right: 5px;
}
.daily-scheduled-calendar-container .calendar-navigation {
cursor: pointer;
font-size: 24px;
}
.daily-scheduled-calendar-container .lefticon{
position: absolute;
left: 15px;
top: 70px;
color: #b7b5bb !important;
}
.daily-scheduled-calendar-container .righticon{
position: absolute;
right: 15px;
top: 70px;
color: #b7b5bb !important;
}
.daily-scheduled-calendar-container .date-view{
font-weight: bold;
}
.daily-scheduled-calendar-container .active-date{
background-color: #5FC0FE;
color: white !important;
padding: 10px 5px 0px 5px;
}
.dsh-list-container {
/*margin-top: 20px;*/
}
.dsh-ul-list{
/*display: flex;
flex-direction: column;
padding-left: 0;
margin-bottom: 0;
list-style-type: none;
height: 240px;
overflow-x: hidden;
overflow-y: auto;*/
list-style-type: none;
padding-inline-start: 0px !important;
}
.dsh-ul-list::-webkit-scrollbar {
width: 0px;
}
.dsh-ul-list:hover::-webkit-scrollbar {
width: 3px;
}
.dsh-ul-list::-webkit-scrollbar-track {
background: #f1f1f1;
}
.dsh-ul-list::-webkit-scrollbar-thumb {
background: #888;
}
.dsh-ul-list::-webkit-scrollbar-thumb:hover {
background: #555;
}
.daily-scheduled-list-cards{
border-radius: 10px;
transition: 0.4s;
border:1px solid rgba(0, 0, 0, 0.1);
fill: #FFF;
filter: drop-shadow(0px 1.399999976158142px 6px rgba(0, 0, 0, 0.06));
margin-bottom: 7px;
}
.daily-scheduled-list-cards .card-body .dsh-time{
color: #9EA4AB;
font-family: Quicksand;
font-size: 12px;
font-style: normal;
margin-bottom: 0px;
}
.daily-scheduled-list-cards .card-body .dsh-title{
color: #35393E;
font-family: Quicksand;
font-size: 13px;
font-style: normal;
font-weight: 500;
margin-bottom: 0px;
margin-top: 0px;
}
.ul-gvftdr4rdr {
list-style-type: none;
font-size: 10px;
background: rgba(0,0,0,0.02);
padding: 10px;
margin-bottom: 8px;
border-radius: 10px;
}
.ul-gvftdr4rdr li{
display: inline-block;
margin-right: 2px;
}
.dashboard-basic-cards[data-card-name="daily_scheduled"] > .card-body {
padding: 0px !important;
height: 100% !important;
}
.moment-calender-wrapper {
width: 100%;
height: inherit;
margin-right: auto !important;
margin-left: auto !important;
}
.moment-calender-wrapper .dsh-block-1 {
padding: 15px 20px !important;
height: 120px;
}
.moment-calender-wrapper .dsh-block-2 {
padding: 5px !important;
background: #F8F9FB;
/*height: inherit;*/
height: calc(100% - 120px) !important;
}
.moment-calender-wrapper .dsh-list-container {
overflow-y: auto;
height: 100%;
}
/* daily basis schedule */
@media screen and (max-width: 576px) {
.dashboard-quick-cards .card-body{
text-align: center !important;
}
.dashboard-quick-cards .ul-revn-block{
justify-content: center !important;
margin-top: 30px !important;
}
.dashboard-quick-cards .rev-chart-desp{
justify-content: center !important;
}
}
@media screen and (max-width: 992px) {
.dashboard-basic-cards{
max-height: 600px;
height: auto;
}
.dashboard-basic-cards[data-card-name="daily_scheduled"]{
height: 700px !important;
}
}
</style>
<!-- styling -->
<!-- content -->
<div class="app-content content" data-dashboard="admin">
<div class="row px-2 pt-1">
<div class="col-lg-2 col-md-4 col-sm-6">
<div class="card dashboard-cards dashboard-quick-cards cursor-pointer" data-card-name="open_cases">
<div class="card-body">
<div class="card-logo">
<img src="<?=base_url()?>common/assets/assets/images/admin_dashboard/icon-2.png">
<a class="link-pointer"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
</div>
<p class="sub-heading trnct by1">Open Cases</p>
<p class="main-heading">...</p>
<span class="prcntg-badge">
<i class="fa fa-arrow-up mr-1" aria-hidden="true"></i>...
</span>
</div>
</div>
</div>
<div class="col-lg-2 col-md-4 col-sm-6">
<div class="card dashboard-cards dashboard-quick-cards cursor-pointer" data-card-name="available_caregivers">
<div class="card-body">
<div class="card-logo">
<img src="<?=base_url()?>common/assets/assets/images/admin_dashboard/icon-3.png">
<a class="link-pointer"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
</div>
<p class="sub-heading trnct by1">Available Caregivers</p>
<p class="main-heading">...</p>
<span class="prcntg-badge" style="background: #DCFAE9;color:#2E9A5E;">
<i class="fa fa-arrow-up mr-1" aria-hidden="true"></i>...
</span>
</div>
</div>
</div>
<div class="col-lg-2 col-md-4 col-sm-6">
<div class="card dashboard-cards dashboard-quick-cards cursor-pointer" data-card-name="total_patients" data-toggle="modal---" data-target="#dynamic_quick_cards_modal---">
<div class="card-body">
<div class="card-logo">
<img src="<?=base_url()?>common/assets/assets/images/admin_dashboard/icon-1.png">
<div class="dropdown w-m-y-filter-box-2">
<span class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false" data-filter-type="">...</span>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" onclick="assembleRawDatasToFetchDetails({'info_type':'total_patients','filter':'week','count':7});">Weekly</a>
<a class="dropdown-item" onclick="assembleRawDatasToFetchDetails({'info_type':'total_patients','filter':'month','count':7});">Monthly</a>
<a class="dropdown-item" onclick="assembleRawDatasToFetchDetails({'info_type':'total_patients','filter':'year','count':7});">Yearly</a>
</div>
</div>
</div>
<p class="sub-heading trnct by1">Total Patients</p>
<p class="main-heading">...</p>
<span class="prcntg-badge">
<i class="fa fa-arrow-up mr-1" aria-hidden="true"></i>...
</span>
</div>
</div>
</div>
<div class="col-lg-2 col-md-4 col-sm-6">
<div class="card dashboard-cards dashboard-quick-cards cursor-pointer" data-card-name="scheduled_visits">
<div class="card-body">
<div class="card-logo">
<img src="<?=base_url()?>common/assets/assets/images/admin_dashboard/icon-4.png">
<div class="dropdown w-m-y-filter-box-2">
<span class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false" data-filter-type="">...</span>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" onclick="assembleRawDatasToFetchDetails({'info_type':'scheduled_visits','filter':'week','count':7});">Weekly</a>
<a class="dropdown-item" onclick="assembleRawDatasToFetchDetails({'info_type':'scheduled_visits','filter':'month','count':7});">Monthly</a>
<a class="dropdown-item" onclick="assembleRawDatasToFetchDetails({'info_type':'scheduled_visits','filter':'year','count':7});">Yearly</a>
</div>
</div>
</div>
<p class="sub-heading trnct by1">Scheduled Visits</p>
<p class="main-heading">...</p>
<span class="prcntg-badge">
<i class="fa fa-arrow-up mr-1" aria-hidden="true"></i>...
</span>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-12">
<div class="card dashboard-cards dashboard-quick-cards cursor-pointer" data-card-name="revenues">
<div class="card-body">
<div class="row">
<div class="col-md-6">
<h5 class="card-title mb-1">Revenues</h5>
<p class="main-heading">...</p>
<p class="sub-heading trnct by2">...</p>
<span class="prcntg-badge">
<i class="fa fa-arrow-up mr-1" aria-hidden="true"></i>...
</span>
</div>
<div class="col-md-6">
<ul class="ul-revn-block">
<li class="bar-revn"></li>
<li class="bar-revn"></li>
<li class="bar-revn"></li>
<li class="bar-revn"></li>
<li class="bar-revn"></li>
</ul>
<div class="rev-chart-desp">
<i class="fa fa-circle mr-1" aria-hidden="true"></i>
<span class="txt-hd mr-2">Services</span>
<span class="txt-cnt service-sum">...</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row px-2">
<div class="col-lg-8">
<div class="card dashboard-cards dashboard-basic-cards" data-card-name="vendors_overview">
<div class="card-body">
<h5 class="card-title font-weight-bold">Vendors Overview</h5>
<div class="dropdown w-m-y-filter-box-2">
<span class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Weekly</span>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" onclick="assembleRawDatasToFetchDetails({'info_type':'vendors_overview','filter':'week','count':1});">Weekly</a>
<a class="dropdown-item" onclick="assembleRawDatasToFetchDetails({'info_type':'vendors_overview','filter':'month','count':1});">Monthly</a>
</div>
</div>
<div class="data-tables-fxfrxxxgf5t">
<table class="table table-striped table-bordered dom-jQuery-events data-tables-adb-dashboard" id="data_table_adb_vendors_overview" cellspacing="0" width="100%">
<thead>
<tr>
<th><?=lang('No')?></th>
<th><?=lang('Vendor')?></th>
<th><?=lang('Patient')?></th>
<th><?=lang('Service Type')?></th>
<th><?=lang('Location')?></th>
<th><?=lang('Status')?></th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card dashboard-cards dashboard-basic-cards" data-card-name="daily_scheduled">
<div class="card-body">
<div class="row moment-calender-wrapper">
<div class="col-lg-12 dsh-block-1">
<h5 class="card-title font-weight-bold">...</h5>
<div class="d-flex daily-scheduled-calendar-container">
<div class="calendar-navigation mr-auto lefticon" onclick="scrollDshMomentCalendar('left')">
<i class="fa fa-angle-left text-muted" aria-hidden="true"></i>
</div>
<div id="calendar-dates" class="d-flex"></div>
<div class="calendar-navigation ml-auto righticon" onclick="scrollDshMomentCalendar('right')"><i class="fa fa-angle-right text-muted" aria-hidden="true"></i></div>
</div>
</div>
<div class="col-lg-12 dsh-block-2">
<div class="dsh-list-container my-scroll hov">
<ul class="ul-gvftdr4rdr">
<li>
<i class="fa fa-circle mr-1 text-danger" aria-hidden="true" title="Unconfirmed"></i>Unconfirmed
</li>
<li>
<i class="fa fa-circle mr-1 text-info" aria-hidden="true" title="Upcoming"></i>Upcoming
</li>
<li>
<i class="fa fa-circle mr-1 text-success" aria-hidden="true" title="Ongoing"></i>Ongoing
</li>
<li>
<i class="fa fa-circle mr-1 text-primary" aria-hidden="true" title="Completed"></i>Completed
</li>
<li>
<i class="fa fa-circle mr-1 text-warning" aria-hidden="true" title="Missed"></i>Missed
</li>
<li>
<i class="fa fa-circle mr-1 text-secondary" aria-hidden="true" title="Declined"></i>Declined
</li>
</ul>
<ul class="dsh-ul-list"></ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-8">
<div class="card dashboard-cards dashboard-basic-cards" data-card-name="financial_overview">
<div class="card-body">
<h5 class="card-title font-weight-bold">Financial Overview</h5>
<div class="dropdown w-m-y-filter-box-2">
<span class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Monthly</span>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" onclick="assembleRawDatasToFetchDetails({'info_type':'financial_overview','filter':'week','count':1});">Weekly</a>
<a class="dropdown-item" onclick="assembleRawDatasToFetchDetails({'info_type':'financial_overview','filter':'month','count':1});">Monthly</a>
</div>
</div>
<div class="data-tables-fxfrxxxgf5t">
<table class="table table-striped table-bordered dom-jQuery-events data-tables-adb-dashboard" id="data_table_adb_financial_overview" cellspacing="0" width="100%">
<thead>
<tr>
<th><?=lang('No')?></th>
<th><?=lang('Status')?></th>
<th><?=lang('Vendor')?></th>
<th><?=lang('Patient')?></th>
<th><?=lang('Service Type')?></th>
<th><?=lang('Location')?></th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card dashboard-cards dashboard-basic-cards" data-card-name="monthly_activity">
<div class="card-body">
<h5 class="card-title font-weight-bold">Monthly Activity</h5>
<canvas id="myDoughnutChart"></canvas>
</div>
</div>
</div>
</div>
</div>
<!-- content -->
<!-- dynamic modal -->
<div class="modal fade dynamic-quick-cards-modal" id="dynamic_quick_cards_modal" tabindex="-1" aria-labelledby="dynamic_quick_cards_modal_label" aria-hidden="true" data-backdrop="static" focus="true" data-card-details="">
<div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="dynamic_quick_cards_modal_label">...</h5>
<button type="button" class="close close-modal" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">
<i class="fa fa-times" aria-hidden="true"></i>
</span>
</button>
<a type="button" class="close external-link" href="#">
<span aria-hidden="true">
<i class="fa fa-external-link" aria-hidden="true"></i>
</span>
</a>
</div>
<div class="modal-body" style="height:75vh;overflow:auto;cursor:move;">
<canvas id="myLineChart"></canvas>
</div>
<div class="modal-footer m-0">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<!-- dynamic modal -->
<!-- scripting -->
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="<?=base_url()?>common/js/utils.js"></script>
<script type="text/javascript">
$(document).ready(function(){
assembleRawDatasToFetchDetails({
'info_type':'open_cases'
});
assembleRawDatasToFetchDetails({
'info_type':'available_caregivers'
});
assembleRawDatasToFetchDetails({
'info_type':'total_patients',
'filter':'year',
'count':7
});
assembleRawDatasToFetchDetails({
'info_type':'scheduled_visits',
'filter':'week',
'count':7
});
assembleRawDatasToFetchDetails({
'info_type':'revenues',
'filter':'week',
'count':7
});
assembleRawDatasToFetchDetails({
'info_type':'vendors_overview',
'filter':'week',
'count':1
});
// assembleRawDatasToFetchDetails({
// 'info_type':'daily_scheduled',
// 'filter':'day',
// 'count':1
// });
assembleRawDatasToFetchDetails({
'info_type':'financial_overview',
'filter':'month',
'count':1
});
assembleRawDatasToFetchDetails({
'info_type':'monthly_activity',
'filter':'month',
'count':1
});
initializeMomentCalender();
$('#dynamic_quick_cards_modal').on('shown.bs.modal',function(event){
var cardDetails=$(this).attr('data-card-details');
assembleRawDatasToFetchDetails(JSON.parse(cardDetails));
});
$('#dynamic_quick_cards_modal').on('hidden.bs.modal',function(event){
$(this).attr('data-card-details','');
var existingChart=Chart.getChart("myLineChart");
if(existingChart){
existingChart.destroy();
}
});
});
$("#dynamic_quick_cards_modal .modal-body").on("mousedown touchstart", function (e) {
var startX = e.pageX || e.originalEvent.touches[0].pageX;
var startY = e.pageY || e.originalEvent.touches[0].pageY;
var scrollLeft = this.scrollLeft;
var scrollTop = this.scrollTop;
$(this).on("mousemove touchmove", function (e) {
var x = e.pageX || e.originalEvent.touches[0].pageX;
var y = e.pageY || e.originalEvent.touches[0].pageY;
var deltaX = startX - x;
var deltaY = startY - y;
this.scrollLeft = scrollLeft + deltaX;
this.scrollTop = scrollTop + deltaY;
});
$(this).on("mouseup touchend", function () {
$(this).off("mousemove touchmove mouseup touchend");
});
});
$(document).on('click','.dashboard-quick-cards',function(event){
var preventClasses=event.target.classList;
if(['dropdown-item', 'dropdown-toggle'].some(value => preventClasses.contains(value))){
return false;
}else{
var card_name=$(this).attr('data-card-name');
var filter=$(this).find('.w-m-y-filter-box-2 .dropdown-toggle').attr('data-filter-type');
$slug='_click';
var dtls={};
var modalChart=false;
switch(card_name){
case 'open_cases':
dtls.info_type=card_name+$slug;
break;
case 'available_caregivers':
dtls.info_type=card_name+$slug;
break;
case 'total_patients':
dtls.info_type=card_name+$slug;
dtls.filter=filter;
dtls.count=7;
modalChart=true;
break;
case 'scheduled_visits':
dtls.info_type=card_name+$slug;
dtls.filter=filter;
dtls.count=7;
modalChart=true;
break;
case 'revenues':
dtls.info_type=card_name+$slug;
dtls.filter='week';
dtls.count=7;
modalChart=true;
break;
default:return false;
}
if(modalChart){
$('.dynamic-quick-cards-modal').attr('data-card-details',JSON.stringify(dtls));
$('.dynamic-quick-cards-modal').modal('show');
}else{
assembleRawDatasToFetchDetails(dtls);
}
}
});
function initializeMomentCalender(){
try{
var currentDate=moment().startOf('isoWeek'); // Set to Monday of the current week
var calendarDatesContainer=$('#calendar-dates');
for(var i=0; i<=28;i++){
var date=currentDate.clone().add(i, 'days');
var dayContainer=$('<div class="day-container" data-date="' + date.format('YYYY-MM-DD') + '"><div>'+ date.format('ddd') +'</div><div class="date-view">'+ date.format('D') +'</div></div>');
dayContainer.click(function () {
var selectedDate=$(this).data('date');
assembleRawDatasToFetchDetails({
'info_type':'daily_scheduled',
'start_date':selectedDate,
'end_date':selectedDate
});
});
calendarDatesContainer.append(dayContainer);
}
//Set default selection to today
currentDate=moment();
var defaultDate=currentDate.format('YYYY-MM-DD');
assembleRawDatasToFetchDetails({
'info_type':'daily_scheduled',
'start_date':defaultDate,
'end_date':defaultDate
});
}catch(error){
console.error(`Error occured in function initializeMomentCalender(); - ${error}`);
}
}
function initializeLineChart(labelsArray,valuesArray,labelName){
try{
// var labelsArray=Samples.utils.years({count: 8, startYear: 2013});
// var valuesArray=[65, 59, 80, 40, 56, 55, 81];
var data={
labels: labelsArray,
datasets: [{
label: labelName,
data: valuesArray,
fill: false,
borderColor: 'rgb(75, 192, 192)',
tension: 0.1
}]
};
var ctx=document.getElementById('myLineChart').getContext('2d');
var myLineChart=new Chart(ctx, {
type: "line",
data: data,
options: {}
});
}catch(error){
console.error(`Error occured in function initializeLineChart(); - ${error}`);
}
}
function initializeMultilinesChart(labelsArray,dataSets,options={}){
try{
var data={
labels: labelsArray,
datasets: dataSets
};
var ctx=document.getElementById('myLineChart').getContext('2d');
var myLineChart=new Chart(ctx, {
type: "line",
data: data,
options: options
});
}catch(error){
console.error(`Error occured in function initializeMultilinesChart(); - ${error}`);
}
}
function initializeDoughnutChart(labelsArray,valuesArray,colorsArray,centerText){
try{
// console.log(labelsArray);
// console.log(valuesArray);
// console.log(colorsArray);
// console.log(centerText);
var data={
labels:labelsArray,
datasets:[{
label:'Dataset',
data: valuesArray,
backgroundColor:colorsArray,
hoverOffset: 4,
borderRadius: 10,
spacing: 5
}]
};
var options={
plugins:{
title: {
display: false,
text: "Monthly Activity",
position: 'bottom'
},
legend:{
display: true,
align:'center',
position: 'bottom',
// fullSize: true,
labels: {
// color:'#000000',
// padding: 20,
font: {
size: 11
},
textAlign: 'center',
usePointStyle: true,
pointStyle: 'circle',
boxHeight: 7,
boxWidth: 7
}
},
centerText: {
display: centerText.display,
text: centerText.text,
title: centerText.title
}
},
layout: {
padding: {
top: 0,
right:0,
bottom:0,
left:0
}
}
};
var ctx=document.getElementById('myDoughnutChart').getContext('2d');
var myDoughnutChart=new Chart(ctx, {
type: 'doughnut',
data: data,
options: options,
plugins: [{
afterDraw: (chart) => {
drawCenterTextsDoughnutChart(chart,options);
}
}]
});
}catch(error){
console.error(`Error occured in function initializeDoughnutChart(); - ${error}`);
}
}
function drawCenterTextsDoughnutChart(chart,options){
try{
var ctx=chart.ctx;
var width=chart.width;
var height=chart.height-45;
if(options.plugins.centerText.display){
var headingText=options.plugins.centerText.text;
var subheadingText=options.plugins.centerText.title;
ctx.textBaseline='middle';
ctx.textAlign='center';
ctx.fillStyle='#000';
ctx.font='bold 17px Arial';
ctx.fillText(headingText, width / 2, height / 2 - 9);
ctx.fillStyle='#666';
ctx.font='italic 11px Arial';
ctx.fillText(subheadingText, width / 2, height / 2 + 9);
}
}catch(error){
console.error(`Error occured in function draw_center_texts_doughnut_chart(); - ${error}`);
}
}
function updateWmyFilterBox(trgt,filter){
try{
var filter_by;
switch(filter){
case 'week':filter_by='Weekly';break;
case 'month':filter_by='Monthly';break;
case 'year':filter_by='Yearly';break;
default:filter_by='';
}
trgt.find('.w-m-y-filter-box-2').find('.dropdown-toggle').text(filter_by);
trgt.find('.w-m-y-filter-box-2').find('.dropdown-toggle').attr('data-filter-type',filter);
}catch(error){
console.error(`Error occured in function updateWmyFilterBox(); - ${error}`);
}
}
//###~~~###
function assembleRawDatasToFetchDetails(request){
try{
var req=request || {};
var info_type=req.info_type || '';
var filter=req.filter || '';
var count=req.count || 2;
var direction=req.direction || 'backward';
var format=req.format || 'yyyy-mm-dd';
var joiner=req.joiner || ' ~ ';
var params={};
params.info_type=info_type;
if(filter=='week'){
params.filter=filter;
params.periods=Samples.utils.weeksrange({count:count,direction:direction,format:format,joiner:joiner});
}else if(filter=='month'){
params.filter=filter;
params.periods=Samples.utils.monthsrange({count:count,direction:direction,format:format,joiner:joiner});
}else if(filter=='year'){
params.filter=filter;
params.periods=Samples.utils.yearsrange({count:count,direction:direction,format:format,joiner:joiner});
}
if(info_type=='open_cases'){
//...
}else if(info_type=='available_caregivers'){
//...
}else if(info_type=='total_patients'){
//...
}else if(info_type=='scheduled_visits'){
//...
}else if(info_type=='revenues'){
//...
}else if(info_type=='vendors_overview'){
ajaxVendorsOverviewList(params);
return false;
}else if(info_type=='daily_scheduled'){
var trgt=$(`.dashboard-basic-cards[data-card-name="${info_type}"]`);
const dateObject=new Date(req.start_date);
const month=dateObject.toLocaleString('default',{month:'long'});
const year=dateObject.getFullYear();
const outputString=`${month} ${year}`;
trgt.find('.card-title').text(outputString);
$('[data-date]').not('[data-date="'+req.start_date+'"]').removeClass('active-date');
$('[data-date="'+req.start_date+'"]').addClass('active-date');
params.start_date=req.start_date;
params.end_date=req.end_date;
}else if(info_type=='financial_overview'){
ajaxFinancialOverviewList(params);
return false;
}else if(info_type=='monthly_activity'){
//...
}else if(info_type=='open_cases_click'){
window.location.href='patient/openCases';
return false;
}else if(info_type=='available_caregivers_click'){
window.location.href='caregivers/availableCaregivers';
return false;
}else if(info_type=='total_patients_click'){
$('.dynamic-quick-cards-modal .modal-title').text('Total Patents');
$('.dynamic-quick-cards-modal .external-link').show();
$('.dynamic-quick-cards-modal .external-link').attr('href','patient/activePatients?flt='+filter);
$('.dynamic-quick-cards-modal .close-modal').hide();
}else if(info_type=='scheduled_visits_click'){
$('.dynamic-quick-cards-modal .modal-title').text('Scheduled Visits');
$('.dynamic-quick-cards-modal .external-link').show();
$('.dynamic-quick-cards-modal .external-link').attr('href','patient/scheduledVisits?flt='+filter);
$('.dynamic-quick-cards-modal .close-modal').hide();
}else if(info_type=='revenues_click'){
$('.dynamic-quick-cards-modal .modal-title').text('Revenues');
$('.dynamic-quick-cards-modal .external-link').hide();
$('.dynamic-quick-cards-modal .external-link').attr('href','#');
$('.dynamic-quick-cards-modal .close-modal').show();
}else{
console.error('Error assembleRawDatasToFetchDetails(): Invalid info_type!');
return false;
}
ajaxLoadDetails(params);
}catch(error){
console.error(`Error occured in function ajax_load_details(); - ${error}`);
}
}
function ajaxLoadDetails(request){
try{
var apiUrl="<?=base_url()?>home/hmsDashboardDynamicInfo";
$.ajax({
type: 'GET',
url: apiUrl,
data: {
params: request
},
beforeSend: function(){
// console.log("fetching datas...");
if(request.info_type=='daily_scheduled'){
$('.dsh-ul-list').html('loading...');
}
},
success: function(response){
var response=$.parseJSON(response);
if(response.status==200){
request.details=response.data;
drawLoadedDetails(request);
}
},
error: function(){
console.error("something bad happened while calling ajax-home/hmsDashboardDynamicInfo");
},
complete: function(){
// console.log("completed fetching datas...");
}
});
}catch(error){
console.error(`Error occured in function ajaxLoadDetails(); - ${error}`);
}
}
function drawLoadedDetails(request){
try{
var req=request || {};
var info_type=req.info_type || '';
var details=req.details || [];
if(info_type=='open_cases'){
var trgt=$(`.dashboard-quick-cards[data-card-name="${info_type}"]`);
trgt.find('.main-heading').text(details.new);
trgt.find('.prcntg-badge').html(`###`);
}else if(info_type=='available_caregivers'){
var trgt=$(`.dashboard-quick-cards[data-card-name="${info_type}"]`);
trgt.find('.main-heading').text(details.new);
trgt.find('.prcntg-badge').html(`###`);
}else if(info_type=='total_patients'){
var trgt=$(`.dashboard-quick-cards[data-card-name="${info_type}"]`);
updateWmyFilterBox(trgt,req.filter || '');
trgt.find('.main-heading').text(details.new);
if(details.growth=='increased'){
trgt.find('.prcntg-badge').removeClass('fall');
trgt.find('.prcntg-badge').html(`<i class="fa fa-arrow-up mr-1" aria-hidden="true"></i>${details.rate}%`);
}else if(details.growth=='decreased'){
trgt.find('.prcntg-badge').addClass('fall');
trgt.find('.prcntg-badge').html(`<i class="fa fa-arrow-down mr-1" aria-hidden="true"></i>${details.rate}%`);
}else if(details.growth=='none'){
trgt.find('.prcntg-badge').removeClass('fall');
trgt.find('.prcntg-badge').html(`<i class="fa fa-ban mr-1" aria-hidden="true"></i>${details.rate}%`);
}
}else if(info_type=='scheduled_visits'){
var trgt=$(`.dashboard-quick-cards[data-card-name="${info_type}"]`);
updateWmyFilterBox(trgt,req.filter || '');
trgt.find('.main-heading').text(details.new);
if(details.growth=='increased'){
trgt.find('.prcntg-badge').removeClass('fall');
trgt.find('.prcntg-badge').html(`<i class="fa fa-arrow-up mr-1" aria-hidden="true"></i>${details.rate}%`);
}else if(details.growth=='decreased'){
trgt.find('.prcntg-badge').addClass('fall');
trgt.find('.prcntg-badge').html(`<i class="fa fa-arrow-down mr-1" aria-hidden="true"></i>${details.rate}%`);
}else if(details.growth=='none'){
trgt.find('.prcntg-badge').removeClass('fall');
trgt.find('.prcntg-badge').html(`<i class="fa fa-ban mr-1" aria-hidden="true"></i>${details.rate}%`);
}
}else if(info_type=='revenues'){
var trgt=$(`.dashboard-quick-cards[data-card-name="${info_type}"]`);
trgt.find('.main-heading').text('$'+details.total_revenues);
trgt.find('.service-sum').text('$'+details.new);
switch(details.growth){
case 'increased':details.msg='Increased compared to last week';break;
case 'decreased':details.msg='Decreased compared to last week';break;
case 'none':details.msg=details.new>0?'No growth compared to last week':'No income in this week compared to last week';break;
default:details.msg='Increased compared to last week';
}
trgt.find('.sub-heading').text(details.msg);
if(details.growth=='increased'){
trgt.find('.prcntg-badge').removeClass('fall');
trgt.find('.prcntg-badge').html(`<i class="fa fa-arrow-up mr-1" aria-hidden="true"></i>${details.rate}%`);
}else if(details.growth=='decreased'){
trgt.find('.prcntg-badge').addClass('fall');
trgt.find('.prcntg-badge').html(`<i class="fa fa-arrow-down mr-1" aria-hidden="true"></i>${details.rate}%`);
}else if(details.growth=='none'){
trgt.find('.prcntg-badge').removeClass('fall');
trgt.find('.prcntg-badge').html(`<i class="fa fa-ban mr-1" aria-hidden="true"></i>${details.rate}%`);
}
}else if(info_type=='vendors_overview'){
//...
}else if(info_type=='daily_scheduled'){
var noteListContainer=$('.dsh-ul-list');
noteListContainer.empty();
if(details.length>0){
for(const schedule of details){
var start_time=schedule.start_time!=null&&schedule.start_time!=""?new Date(schedule.start_time):'';
var end_time=schedule.end_time!=null&&schedule.end_time!=""?new Date(schedule.end_time):'';
var startTime=start_time!=''?start_time.toLocaleTimeString([],{ hour: '2-digit', minute: '2-digit' }):'';
var endTime=end_time!=''?end_time.toLocaleTimeString([],{ hour: '2-digit', minute: '2-digit' }):'';
var schedule_info={
'schedule_id':schedule.schedule_id,
'live_status':schedule.live_status
};
var class_i;
switch(schedule.live_status){
case 'unconfirmed':
class_i='text-danger';
break;
case 'upcoming':
class_i='text-info';
break;
case 'ongoing':
class_i='text-success';
break;
case 'completed':
class_i='text-primary';
break;
case 'missed':
class_i='text-warning';
break;
case 'declined':
class_i='text-secondary';
break;
default:
class_i='';
}
// var class_j=['upcoming','ongoing'].includes(schedule.live_status)?'cursor-pointer':'';
var html=`<li data-live-status="${schedule.live_status}" data-schedule-info='${JSON.stringify(schedule_info)}'>
<div class="card daily-scheduled-list-cards">
<div class="card-body">
<p class="dsh-time">
<i class="fa fa-circle mr-1 ${class_i}" aria-hidden="true" title="${Samples.utils.capitalize(schedule.live_status)}"></i>
${startTime} - ${endTime}
</p>
<p class="dsh-title">
<a href="<?=base_url()?>caregivers">${schedule.caregiver_name}</a>
${schedule.tense=='present'?'is':'was'} scheduled to
<a href="<?=base_url()?>patient/viewPatient?id=${schedule.patient_id}">${schedule.patient_name}</a>
</p>
</div>
</div>
</li>`;
noteListContainer.append(html);
}
}else{
var html=`<div class="card daily-scheduled-list-cards">
<div class="card-body">
<p class="dsh-time">No schedules found!</p>
</div>
</div>`;
noteListContainer.append(html);
}
}else if(info_type=='financial_overview'){
//...
}else if(info_type=='monthly_activity'){
// var resData = {
// total_caregivers: 3450,
// missed_visits: 2050,
// new_patients: 2060,
// new_caregivers: 4230,
// total_completed_visits: 2500
// };
var resData=details;
var dataSets=[
{
'label':'Total Caregivers',
'value':resData.total_caregivers!=undefined?resData.total_caregivers:0,
'color':'#69D499'
},
{
'label':'Missed Visits',
'value':resData.missed_visits!=undefined?resData.missed_visits:0,
'color':'#FFA06A'
},
{
'label':'New Patients',
'value':resData.new_patients!=undefined?resData.new_patients:0,
'color':'#5FC0FE'
},
{
'label':'New Caregivers',
'value':resData.new_caregivers!=undefined?resData.new_caregivers:0,
'color':'#C6D2FD'
},
{
'label':'Total Completed Visits',
'value':resData.total_completed_visits!=undefined?resData.total_completed_visits:0,
'color':'#889BFF'
}
];
var labelsArray=dataSets.map(dataset => dataset.label);
var valuesArray=dataSets.map(dataset => dataset.value);
var colorsArray=dataSets.map(dataset => dataset.color);
initializeDoughnutChart(labelsArray,valuesArray,colorsArray,{
'display':true,
'title':'Total Patients',
'text':resData.total_patients!=undefined?resData.total_patients:0
});
}else if(info_type=='total_patients_click'){
var count=req.count || 7;
var labelsArray;
switch(req.filter){
case 'week':
labelsArray=Samples.utils.weeks({count:count,direction:'backward'});
break;
case 'month':
labelsArray=Samples.utils.months({count:count,direction:'backward',section: 3});
break;
case 'year':
labelsArray=Samples.utils.years({count:count,direction:'backward'});
break;
}
initializeLineChart(labelsArray,details,'Patients');
}else if(info_type=='scheduled_visits_click'){
var count=req.count || 7;
var labelsArray;
switch(req.filter){
case 'week':
labelsArray=Samples.utils.weeks({count:count,direction:'backward'});
break;
case 'month':
labelsArray=Samples.utils.months({count:count,direction:'backward',section: 3});
break;
case 'year':
labelsArray=Samples.utils.years({count:count,direction:'backward'});
break;
}
initializeLineChart(labelsArray,details,'Visits');
}else if(info_type=='revenues_click'){
var filter=req.filter || 'week';
var count=req.count || 7;
var servicesData=details.weekly_services || [];
// var netCollections=details.total_services_revenues || [];
var netCollections={};
details.total_services_revenues.forEach(item => {
netCollections[item.name] = parseInt(item.amount, 10);
});
var dataSets=[];
for(const key in servicesData){
if(servicesData.hasOwnProperty(key)){
const value=servicesData[key];
// let newArray=value.map(v => '$' + v);
var color;
switch(key){
case 'RN':color='rgb(75,192,192)';break;
case 'LPN':color='rgb(255,160,106)';break;
case 'HHA':color='rgb(105,215,153)';break;
case 'PCA':color='rgb(136,155,255)';break;
case 'NP':color='rgb(64,64,227)';break;
default:color='#000000';
}
const childDataset={
label: key+`: $${netCollections[key] || 0}`,
data: value,
fill: false,
borderColor: color,
tension: 0.1
}
dataSets.push(childDataset);
}
}
switch(filter){
case 'week':
labelsArray=Samples.utils.weeks({count:count,direction:'backward'});
break;
case 'month':
labelsArray=Samples.utils.months({count:count,direction:'backward',section: 3});
break;
case 'year':
labelsArray=Samples.utils.years({count:count,direction:'backward'});
break;
}
var options={
scales: {
x: {
// type: 'linear',
// position: 'bottom',
title: {
display: true,
text: `Period (Last ${count} ${filter}s)`
}
},
y: {
// beginAtZero: true,
title: {
display: true,
text: 'Revenues (in $)'
}
}
},
plugins: {
tooltip: {
callbacks: {
label: function (labelContext){
var tltp_label=labelContext.dataset.label.split(':')[0];
return `${tltp_label}: $${labelContext.formattedValue}`;
},
title: function(titleContext){
return `Week: ${titleContext[0].label}`;
}
}
}
}
}
initializeMultilinesChart(labelsArray,dataSets,options);
}else{
console.error('Error drawLoadedDetails(): Invalid info_type!');
return false;
}
}catch(error){
console.error(`Error occured in function drawLoadedDetails(); - ${error}`);
}
}
function ajaxVendorsOverviewList(req){
try{
var dataTable=$('#data_table_adb_vendors_overview').DataTable();
dataTable.destroy();
var apiUrl="<?=base_url()?>home/hmsVendorsOverviewList";
var table=$('#data_table_adb_vendors_overview').DataTable({
responsive: true,
"processing": true,
"serverSide": true,
"searchable": true,
"ajax": {
url: apiUrl,
type: 'POST',
data: {
'<?=$this->security->get_csrf_token_name()?>' : '<?=$this->security->get_csrf_hash()?>',
params:req
},
},
scroller: {
loadingIndicator: true
},
dom: `<'row'<'col-sm-5 data-table-pagelimit'l><'col-sm-6 data-table-search'f><'col-sm-1 text-center data-table-button-collection'B>>
<'row'<'col-sm-12 data-table-body'tr>>
<'row'<'col-sm-5 data-table-pagecountsummary'i><'col-sm-7 data-table-pagination'p>>`,
buttons: [
{
extend: 'collection',
text: '...',
buttons: [
'copyHtml5',
'excelHtml5',
'csvHtml5',
'pdfHtml5',
{
extend: 'print',
exportOptions: {
columns: [0, 1, 2, 3, 4, 5, 6],
}
}
]
},
],
aLengthMenu: [
[5, 10, 25, 50, 100],
[5, 10, 25, 50, 100]
],
iDisplayLength: 5,
"order": [[0, "desc"]],
"language": {
"lengthMenu": "_MENU_",
search: "_INPUT_",
"url": "common/assets/DataTables/languages/<?=$this->language?>.json"
}
});
table.buttons().container().appendTo('.custom_buttons');
var trgt=$(`.dashboard-basic-cards[data-card-name="${req.info_type}"]`);
updateWmyFilterBox(trgt,req.filter);
}catch(error){
console.error(`Error occured in function ajaxVendorsOverviewList(); - ${error}`);
}
}
function ajaxFinancialOverviewList(req){
try{
var dataTable=$('#data_table_adb_financial_overview').DataTable();
dataTable.destroy();
var apiUrl="<?=base_url()?>home/hmsFinancialOverviewList";
var table=$('#data_table_adb_financial_overview').DataTable({
responsive: true,
"processing": true,
"serverSide": true,
"searchable": true,
"ajax": {
url: apiUrl,
type: 'POST',
data: {
'<?=$this->security->get_csrf_token_name()?>' : '<?=$this->security->get_csrf_hash()?>',
params:req
},
},
scroller: {
loadingIndicator: true
},
dom: `<'row'<'col-sm-5 data-table-pagelimit'l><'col-sm-6 data-table-search'f><'col-sm-1 text-center data-table-button-collection'B>>
<'row'<'col-sm-12 data-table-body'tr>>
<'row'<'col-sm-5 data-table-pagecountsummary'i><'col-sm-7 data-table-pagination'p>>`,
buttons: [
{
extend: 'collection',
text: '...',
buttons: [
'copyHtml5',
'excelHtml5',
'csvHtml5',
'pdfHtml5',
{
extend: 'print',
exportOptions: {
columns: [0, 1, 2, 3, 4, 5, 6],
}
}
]
},
],
aLengthMenu: [
[5, 10, 25, 50, 100],
[5, 10, 25, 50, 100]
],
iDisplayLength: 5,
"order": [[0, "desc"]],
"language": {
"lengthMenu": "_MENU_",
search: "_INPUT_",
"url": "common/assets/DataTables/languages/<?=$this->language?>.json"
}
});
table.buttons().container().appendTo('.custom_buttons');
var trgt=$(`.dashboard-basic-cards[data-card-name="${req.info_type}"]`);
updateWmyFilterBox(trgt,req.filter);
}catch(error){
console.error(`Error occured in function ajaxFinancialOverviewList(); - ${error}`);
}
}
</script>
<!-- scripting -->
<!-- OLD - Dashboard Codes -->
<?php /* ?>
<style type="text/css">
div.home-dashboard-top-card-container{margin-top:5px;}
.home-dashboard-top-card-icons{font-size:40px;}
.home-dashboard-top-card{transition: 0.4s;padding: 10px 0;box-shadow:;border:1px solid rgba(0, 0, 0, 0.1);}
.home-dashboard-top-card:hover{box-shadow:5px 20px 50px rgba(0, 0, 0, 0.1);transition:0.4s;padding:15px 0}
</style>
<div class="app-content content d-none">
<div class="content-wrapper">
<div class="content-body">
<!-- block examples section start -->
<section id="block-examples">
<?php $Menu=dashboard_menu_array();?>
<div class="row home-dashboard-top-card-container">
<div class="col-md-3 col-sm-6">
<div class="card home-dashboard-top-card">
<div class="card-body">
<div class="row mb-0" >
<div class="col-md-4 col-sm-4">
<div class="card py-1 mb-0">
<div class="card-body center">
<i class="fa fa-ils text-danger home-dashboard-top-card-icons"></i>
</div>
</div>
</div>
<div class="col-md-8 col-sm-8">
<div class="card mb-0">
<div class="card-body">
<h5 class="card-title text-center">Caregivers</h5>
<h5 class="card-text text-center"><?php echo $Menu['caregivers'];?></h5>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 col-sm-6">
<div class="card home-dashboard-top-card">
<div class="card-body">
<div class="row mb-0" >
<div class="col-md-4 col-sm-4">
<div class="card py-1 mb-0">
<div class="card-body center">
<i class="la la-pied-piper text-primary home-dashboard-top-card-icons" style="font-size:40px;"></i>
</div>
</div>
</div>
<div class="col-md-8 col-sm-8">
<div class="card mb-0">
<div class="card-body">
<h5 class="card-title text-center">Patients</h5>
<h5 class="card-text text-center"><?php echo $Menu['patients'];?></h5>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 col-sm-6">
<div class="card home-dashboard-top-card">
<div class="card-body">
<div class="row mb-0" >
<div class="col-md-4 col-sm-4">
<div class="card py-1 mb-0">
<div class="card-body center">
<i class="fa fa-stethoscope text-success home-dashboard-top-card-icons"></i>
</div>
</div>
</div>
<div class="col-md-8 col-sm-8">
<div class="card mb-0">
<div class="card-body">
<h5 class="card-title text-center">Physicians</h5>
<h5 class="card-text text-center"><?php echo $Menu['physicians'];?></h5>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 col-sm-6">
<div class="card home-dashboard-top-card">
<div class="card-body">
<div class="row mb-0" >
<div class="col-md-4 col-sm-4">
<div class="card py-1 mb-0">
<div class="card-body center">
<i class="la la-certificate text-warning home-dashboard-top-card-icons" style="font-size:40px;"></i>
</div>
</div>
</div>
<div class="col-md-8 col-sm-8">
<div class="card mb-0">
<div class="card-body">
<h5 class="card-title text-center">Coordinators</h5>
<h5 class="card-text text-center"><?php echo $Menu['coordinators'];?></h5>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- -----End Section------ -->
</div>
</div>
</div>
<?php */ ?>
<!-- OLD - Dashboard Codes -->