1621 lines
57 KiB
PHP
Executable File
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 -->
|