|
@@ -280,6 +280,7 @@
|
|
|
delimiters: ['@{{', '}}'],
|
|
|
data: {
|
|
|
tab: '{{ request()->input('tab') ? request()->input('tab') : 'measurements' }}',
|
|
|
+ datesWithEvents: [],
|
|
|
selectedDate: '{{ date('Y-m-d') }}',
|
|
|
selectedStatus: 'CREATED',
|
|
|
events: [],
|
|
@@ -307,47 +308,30 @@
|
|
|
return [year, month, day].join('-');
|
|
|
},
|
|
|
onDateChange: function (_newDate) {
|
|
|
- // this.loadEvents();
|
|
|
-
|
|
|
let self = this;
|
|
|
self.selectedDate = _newDate;
|
|
|
showMask();
|
|
|
- this.loadEvents(function() {
|
|
|
- self.highlightDatesWithEvents();
|
|
|
- // self.updateNumEventsForDate();
|
|
|
- self.appointmentsLoaded = true;
|
|
|
+ this.loadEvents(self.selectedDate, function() {
|
|
|
hideMask();
|
|
|
Vue.nextTick(() => {
|
|
|
+ this.highlightDatesWithEvents(this.datesWithEvents);
|
|
|
initFastLoad($('.appointments-tab'));
|
|
|
});
|
|
|
});
|
|
|
},
|
|
|
selectToday: function () {
|
|
|
$('.pro-dashboard-inline-calendar table td[data-date]').removeClass('active');
|
|
|
- $('.pro-dashboard-inline-calendar table td[data-date="{{ $milliseconds }}"]')
|
|
|
+ $('.pro-dashboard-inline-calendar table td[data-date="{{ strtotime(date('Y-m-d')) . '000' }}"]')
|
|
|
.addClass('active');
|
|
|
// this.onDateChange('{{ date('Y-m-d') }}');
|
|
|
},
|
|
|
- highlightDatesWithEvents: function () {
|
|
|
+ highlightDatesWithEvents: function (_dates) {
|
|
|
$('.pro-dashboard-inline-calendar table td[data-date]').removeAttr('has-events');
|
|
|
- for (let i = 0; i < this.events.length; i++) {
|
|
|
- $('.pro-dashboard-inline-calendar table td[data-date="' + this.events[i].milliseconds + '"]')
|
|
|
+ for (let i = 0; i < _dates.length; i++) {
|
|
|
+ $('.pro-dashboard-inline-calendar table td[data-date="' + _dates[i] + '"]')
|
|
|
.attr('has-events', 1);
|
|
|
}
|
|
|
},
|
|
|
- updateNumEventsForDate: function() {
|
|
|
- this.numEventsForDate = 0;
|
|
|
- for (let i = 0; i < this.events.length; i++) {
|
|
|
- if(this.events[i].dateYMD === this.selectedDate &&
|
|
|
- (this.filterStatus === '' || this.filterStatus === this.events[i].status)) {
|
|
|
- this.numEventsForDate++;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- Vue.nextTick(() => {
|
|
|
- initFastLoad($('#pro-dashboard-container'));
|
|
|
- });
|
|
|
- },
|
|
|
updateStatus: function(_event) {
|
|
|
$.post('/api/appointment/updateStatus', {
|
|
|
uid: _event.uid,
|
|
@@ -400,24 +384,29 @@
|
|
|
hideMoeFormMask();
|
|
|
form.hide();
|
|
|
},
|
|
|
- loadEvents: function(_callback) {
|
|
|
- let today = this.calendarElem.datepicker('getDate'),
|
|
|
+ loadEventDates: function(_callback) {
|
|
|
+ let today = new Date('{{date('Y-m-d')}}'),
|
|
|
firstOfMonth = new Date(today.getFullYear(), today.getMonth(), 1),
|
|
|
- lastOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0),
|
|
|
- self = this;
|
|
|
- if(this.currentMonth === today.getMonth() && this.currentYear === today.getFullYear()) {
|
|
|
+ lastOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0);
|
|
|
+ $.get('/pro-dashboard-event-dates/' +
|
|
|
+ this.formatDate(firstOfMonth) + '/' +
|
|
|
+ this.formatDate(lastOfMonth), (_data) => {
|
|
|
+ this.datesWithEvents = _data;
|
|
|
+ this.highlightDatesWithEvents(this.datesWithEvents);
|
|
|
+ this.selectToday();
|
|
|
+ this.onDateChange('{{ date('Y-m-d') }}');
|
|
|
+ this.appointmentsLoaded = true;
|
|
|
+ }, 'json');
|
|
|
+ },
|
|
|
+ loadEvents: function(_date, _callback) {
|
|
|
+ let self = this;
|
|
|
+ $.get('/pro-dashboard-events/' +
|
|
|
+ this.formatDate(_date) + '/' +
|
|
|
+ this.formatDate(_date), function(_data) {
|
|
|
+ self.events = _data;
|
|
|
+ self.numEventsForDate = (_data && _data.length) ? 1 : 0;
|
|
|
_callback.call(self);
|
|
|
- }
|
|
|
- else {
|
|
|
- $.get('/pro-dashboard-events/' +
|
|
|
- this.formatDate(firstOfMonth) + '/' +
|
|
|
- this.formatDate(lastOfMonth), function(_data) {
|
|
|
- self.events = _data;
|
|
|
- self.currentMonth = firstOfMonth.getMonth();
|
|
|
- self.currentYear = firstOfMonth.getFullYear();
|
|
|
- _callback.call(self);
|
|
|
- }, 'json');
|
|
|
- }
|
|
|
+ }, 'json');
|
|
|
},
|
|
|
updateMeasurements: function() {
|
|
|
$.get('/pro-dashboard-measurements/' + this.measurementFilterStatus, (_data) => {
|
|
@@ -480,9 +469,7 @@
|
|
|
},
|
|
|
initLoadAppointments: function() {
|
|
|
if(this.appointmentsLoaded) return false;
|
|
|
- this.selectToday();
|
|
|
- this.updateNumEventsForDate();
|
|
|
- $('.datepicker-days .day.active').trigger('click');
|
|
|
+ this.loadEventDates();
|
|
|
},
|
|
|
loadMeasurements: function() {
|
|
|
$('#measurements-tab').load('/pro-dashboard-measurements-tab', () => {
|
|
@@ -501,16 +488,6 @@
|
|
|
self.onDateChange(self.calendarElem.datepicker('getFormattedDate'));
|
|
|
});
|
|
|
|
|
|
- // DEFER this till appts tab is clicked
|
|
|
-
|
|
|
- // this.selectToday();
|
|
|
- // this.updateNumEventsForDate();
|
|
|
-
|
|
|
- // $('.datepicker-days .day.active').trigger('click');
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- // this.initCMRTE();
|
|
|
$('#pro-dashboard-container').find('[moe][initialized]').removeAttr('initialized');
|
|
|
initMoes();
|
|
|
|