2019-08-08 21:51:08 +08:00
|
|
|
/* global animateSpinner gaUrlQueryParams PerfectSb dropdownSelector */
|
|
|
|
/* eslint-disable no-extend-native, no-underscore-dangle, no-use-before-define */
|
2019-03-06 17:34:04 +08:00
|
|
|
// Common code
|
|
|
|
|
|
|
|
|
|
|
|
Date.prototype.date_to_string = function() {
|
|
|
|
return this.getFullYear() + '-' + (this.getMonth() + 1) + '-' + this.getDate();
|
|
|
|
};
|
|
|
|
|
|
|
|
// GA code
|
|
|
|
|
|
|
|
function GlobalActivitiesFiltersGetDates() {
|
2019-03-26 00:35:54 +08:00
|
|
|
var fromDate = $('#calendar-from-date').data('DateTimePicker').date();
|
|
|
|
var toDate = $('#calendar-to-date').data('DateTimePicker').date();
|
|
|
|
if (fromDate) {
|
|
|
|
fromDate = fromDate._d.date_to_string();
|
|
|
|
}
|
|
|
|
if (toDate) {
|
|
|
|
toDate = toDate._d.date_to_string();
|
|
|
|
}
|
2019-03-06 17:34:04 +08:00
|
|
|
return { from: fromDate, to: toDate };
|
|
|
|
}
|
|
|
|
|
|
|
|
function GlobalActivitiesFilterPrepareArray() {
|
2019-08-08 21:51:08 +08:00
|
|
|
var convertToInt = (array) => { return array.map(e => { return parseInt(e, 10); }); };
|
2019-03-26 21:54:34 +08:00
|
|
|
|
2019-03-06 17:34:04 +08:00
|
|
|
return {
|
2019-08-08 21:51:08 +08:00
|
|
|
teams: convertToInt(dropdownSelector.getValues('select[name=team]') || []),
|
|
|
|
users: convertToInt(dropdownSelector.getValues('select[name=user]') || []),
|
|
|
|
types: convertToInt(dropdownSelector.getValues('select[name=activity]') || []),
|
|
|
|
subjects: {
|
|
|
|
Project: convertToInt(dropdownSelector.getValues('select[name=project]') || []),
|
|
|
|
Experiment: convertToInt(dropdownSelector.getValues('select[name=experiment]') || []),
|
|
|
|
MyModule: convertToInt(dropdownSelector.getValues('select[name=task]') || []),
|
|
|
|
Repository: convertToInt(dropdownSelector.getValues('select[name=inventory]') || []),
|
|
|
|
RepositoryRow: convertToInt(dropdownSelector.getValues('select[name=inventory-item]') || []),
|
|
|
|
Protocol: convertToInt(dropdownSelector.getValues('select[name=protocol]') || []),
|
|
|
|
Report: convertToInt(dropdownSelector.getValues('select[name=report]') || [])
|
|
|
|
},
|
2019-03-06 17:34:04 +08:00
|
|
|
from_date: GlobalActivitiesFiltersGetDates().from,
|
|
|
|
to_date: GlobalActivitiesFiltersGetDates().to
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
$(function() {
|
2019-03-15 22:52:30 +08:00
|
|
|
var updateRunning = false;
|
|
|
|
|
2019-08-06 21:25:52 +08:00
|
|
|
var ajaxParams = function(params) {
|
|
|
|
var filter = GlobalActivitiesFilterPrepareArray();
|
|
|
|
filter.query = params.query;
|
|
|
|
return filter;
|
2019-08-08 21:51:08 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
var defaultOnChangeActions = function() {
|
|
|
|
GlobalActivitiesUpdateTopPaneTags();
|
|
|
|
reloadActivities();
|
|
|
|
};
|
2019-08-06 21:25:52 +08:00
|
|
|
|
2019-08-08 21:51:08 +08:00
|
|
|
dropdownSelector.init('select[name=group_activity]', {
|
|
|
|
onChange: defaultOnChangeActions
|
|
|
|
});
|
|
|
|
dropdownSelector.init('select[name=activity]', {
|
|
|
|
onChange: defaultOnChangeActions,
|
|
|
|
localFilter: function(data) {
|
|
|
|
var groupFilter = dropdownSelector.getValues('select[name=group_activity]');
|
|
|
|
if (groupFilter.length === 0) return data;
|
|
|
|
if (groupFilter.indexOf(data.parent().attr('label')) !== -1) {
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
return [];
|
|
|
|
}
|
|
|
|
});
|
|
|
|
dropdownSelector.init('select[name=user]', {
|
2019-08-07 16:25:58 +08:00
|
|
|
ajaxParams: ajaxParams,
|
2019-08-08 21:51:08 +08:00
|
|
|
onChange: defaultOnChangeActions
|
|
|
|
});
|
|
|
|
dropdownSelector.init('select[name=team]', {
|
2019-08-07 16:25:58 +08:00
|
|
|
ajaxParams: ajaxParams,
|
2019-08-08 21:51:08 +08:00
|
|
|
onChange: defaultOnChangeActions
|
|
|
|
});
|
|
|
|
dropdownSelector.init('select[name=project]', {
|
2019-08-07 16:25:58 +08:00
|
|
|
ajaxParams: ajaxParams,
|
2019-08-08 21:51:08 +08:00
|
|
|
onChange: () => {
|
|
|
|
var selectedValues = dropdownSelector.getValues('select[name=project]');
|
|
|
|
if (selectedValues.length > 0) {
|
|
|
|
dropdownSelector.disableSelector('select[name=experiment]', false);
|
|
|
|
} else {
|
|
|
|
dropdownSelector.disableSelector('select[name=experiment]', true);
|
|
|
|
dropdownSelector.disableSelector('select[name=task]', true);
|
|
|
|
}
|
|
|
|
defaultOnChangeActions();
|
2019-04-09 15:08:27 +08:00
|
|
|
}
|
|
|
|
});
|
2019-08-08 21:51:08 +08:00
|
|
|
dropdownSelector.init('.select-container.experiment select', {
|
|
|
|
ajaxParams: ajaxParams,
|
|
|
|
onChange: () => {
|
|
|
|
var selectedValues = dropdownSelector.getValues('select[name=experiment]');
|
|
|
|
dropdownSelector.disableSelector('select[name=task]', (selectedValues.length === 0));
|
|
|
|
defaultOnChangeActions();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
dropdownSelector.init('select[name=task]', {
|
|
|
|
ajaxParams: ajaxParams,
|
|
|
|
onChange: defaultOnChangeActions
|
|
|
|
});
|
|
|
|
dropdownSelector.init('select[name=inventory]', {
|
|
|
|
ajaxParams: ajaxParams,
|
|
|
|
onChange: () => {
|
|
|
|
var selectedValues = dropdownSelector.getValues('select[name=inventory]');
|
|
|
|
dropdownSelector.disableSelector('select[name=inventory-item]', (selectedValues.length === 0));
|
|
|
|
defaultOnChangeActions();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
dropdownSelector.init('select[name=inventory-item]', {
|
|
|
|
ajaxParams: ajaxParams,
|
|
|
|
onChange: defaultOnChangeActions
|
|
|
|
});
|
|
|
|
dropdownSelector.init('select[name=protocol]', {
|
|
|
|
ajaxParams: ajaxParams,
|
|
|
|
onChange: defaultOnChangeActions
|
|
|
|
});
|
|
|
|
dropdownSelector.init('select[name=report]', {
|
|
|
|
ajaxParams: ajaxParams,
|
|
|
|
onChange: defaultOnChangeActions
|
|
|
|
});
|
|
|
|
|
|
|
|
$('.ga-side').scroll(() => {
|
|
|
|
var selectors = ['group_activity', 'activity', 'user', 'team', 'project',
|
|
|
|
'experiment', 'task', 'inventory', 'inventory-item', 'protocol', 'report'];
|
|
|
|
$.each(selectors, (i, selector) => { dropdownSelector.updateDropdownDirection(`select[name=${selector}]`); });
|
|
|
|
});
|
|
|
|
|
2019-04-02 22:05:48 +08:00
|
|
|
function GlobalActivitiesUpdateTopPaneTags() {
|
2019-03-26 00:35:54 +08:00
|
|
|
var dateContainer = $('.ga-side .date-selector.filter-block');
|
|
|
|
if (updateRunning) return false;
|
|
|
|
$('.ga-top .ga-tags').children().remove();
|
2019-03-28 01:47:34 +08:00
|
|
|
if (dateContainer[0].dataset.periodSelect) {
|
2019-08-08 21:51:08 +08:00
|
|
|
$(`<div class="ds-tags">
|
|
|
|
<div class="tag-label">
|
|
|
|
${dateContainer[0].dataset.periodLabel}
|
|
|
|
${$('.ga-side .date-selector.filter-block')[0].dataset.periodSelect}
|
|
|
|
</div>
|
|
|
|
</div>`).appendTo('.ga-top .ga-tags');
|
2019-03-26 00:35:54 +08:00
|
|
|
}
|
2019-08-08 21:51:08 +08:00
|
|
|
$.each($('.ga-side .ds-tags'), function(index, tag) {
|
2019-03-26 00:35:54 +08:00
|
|
|
var newTag = $(tag.outerHTML).appendTo('.ga-top .ga-tags');
|
2019-08-08 21:51:08 +08:00
|
|
|
newTag.find('.fa-times')
|
2019-03-26 00:35:54 +08:00
|
|
|
.click(() => {
|
2019-08-08 21:51:08 +08:00
|
|
|
$(tag).find('.fa-times').click();
|
2019-03-26 00:35:54 +08:00
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2019-04-02 17:14:36 +08:00
|
|
|
function preloadFilters(filters) {
|
|
|
|
updateRunning = true;
|
|
|
|
if (filters.types) {
|
|
|
|
$('.ga-side .activity-selector select').val(filters.types).trigger('change');
|
|
|
|
}
|
|
|
|
if (filters.from_date) {
|
|
|
|
$('#calendar-from-date').data('DateTimePicker').date(new Date(filters.from_date));
|
|
|
|
}
|
|
|
|
if (filters.to_date) {
|
|
|
|
$('#calendar-to-date').data('DateTimePicker').date(new Date(filters.to_date));
|
|
|
|
}
|
|
|
|
if (filters.subject_labels) {
|
2019-08-08 21:51:08 +08:00
|
|
|
$.each(filters.subject_labels, (i, subject) => {
|
|
|
|
var currentData = dropdownSelector.getData(`select[name=${subject.object}]`);
|
|
|
|
currentData.push(subject);
|
|
|
|
dropdownSelector.setData(`select[name=${subject.object}]`, currentData);
|
2019-04-02 17:14:36 +08:00
|
|
|
});
|
|
|
|
}
|
|
|
|
updateRunning = false;
|
2019-04-02 22:05:48 +08:00
|
|
|
GlobalActivitiesUpdateTopPaneTags();
|
2019-04-02 17:14:36 +08:00
|
|
|
}
|
|
|
|
|
2019-03-15 22:52:30 +08:00
|
|
|
// update_filter
|
2019-03-26 00:35:54 +08:00
|
|
|
function reloadActivities() {
|
2019-03-15 22:52:30 +08:00
|
|
|
var moreButton = $('.btn-more-activities');
|
2019-03-27 16:43:04 +08:00
|
|
|
var noActivitiesMessage = $('.no-activities-message');
|
2019-03-15 22:52:30 +08:00
|
|
|
if (updateRunning) return false;
|
|
|
|
updateRunning = true;
|
|
|
|
$('.ga-activities-list .activities-day').remove();
|
2019-08-08 21:51:08 +08:00
|
|
|
animateSpinner('.ga-main', true);
|
2019-03-15 22:52:30 +08:00
|
|
|
$.ajax({
|
|
|
|
url: $('.ga-activities-list').data('activities-url'),
|
|
|
|
data: GlobalActivitiesFilterPrepareArray(),
|
|
|
|
dataType: 'json',
|
|
|
|
type: 'POST',
|
|
|
|
success: function(json) {
|
|
|
|
$(json.activities_html).appendTo('.ga-activities-list');
|
2019-04-12 21:37:45 +08:00
|
|
|
if (json.next_page) {
|
2019-03-15 22:52:30 +08:00
|
|
|
moreButton.removeClass('hidden');
|
2019-04-12 21:37:45 +08:00
|
|
|
moreButton.data('next-page', json.next_page);
|
2019-03-15 22:52:30 +08:00
|
|
|
} else {
|
|
|
|
moreButton.addClass('hidden');
|
|
|
|
}
|
2019-03-29 16:26:27 +08:00
|
|
|
if (json.activities_html === '') {
|
2019-03-27 16:43:04 +08:00
|
|
|
noActivitiesMessage.removeClass('hidden');
|
|
|
|
} else {
|
|
|
|
noActivitiesMessage.addClass('hidden');
|
|
|
|
}
|
2019-04-12 21:37:45 +08:00
|
|
|
$('.ga-activities-list').data('starting-timestamp', json.starting_timestamp);
|
2019-03-15 22:52:30 +08:00
|
|
|
updateRunning = false;
|
2019-08-08 21:51:08 +08:00
|
|
|
animateSpinner('.ga-main', false);
|
2019-04-11 00:45:12 +08:00
|
|
|
|
|
|
|
$('.ga-main').scrollTop(0);
|
2019-04-02 15:56:50 +08:00
|
|
|
PerfectSb().update_all();
|
2019-03-15 22:52:30 +08:00
|
|
|
},
|
|
|
|
error: function() {
|
|
|
|
updateRunning = false;
|
2019-08-08 21:51:08 +08:00
|
|
|
animateSpinner('.ga-main', false);
|
2019-03-15 22:52:30 +08:00
|
|
|
}
|
|
|
|
});
|
2019-03-26 00:35:54 +08:00
|
|
|
return true;
|
|
|
|
}
|
2019-03-15 22:52:30 +08:00
|
|
|
|
2019-03-27 20:15:44 +08:00
|
|
|
function resetHotButtonsBackgroundColor() {
|
|
|
|
$('.date-selector .hot-button').each(function() {
|
|
|
|
$(this).removeClass('selected');
|
2019-03-28 01:47:34 +08:00
|
|
|
});
|
2019-03-27 20:15:44 +08:00
|
|
|
}
|
|
|
|
|
2019-03-06 17:34:04 +08:00
|
|
|
$('.ga-tags-container .clear-container span').click(function() {
|
2019-03-15 22:52:30 +08:00
|
|
|
updateRunning = true;
|
2019-03-26 00:35:54 +08:00
|
|
|
$('#calendar-from-date').data('DateTimePicker').clear();
|
|
|
|
$('#calendar-to-date').data('DateTimePicker').clear();
|
2019-03-28 01:47:34 +08:00
|
|
|
$('.ga-side .date-selector.filter-block')[0].dataset.periodSelect = '';
|
|
|
|
|
2019-03-15 22:52:30 +08:00
|
|
|
updateRunning = false;
|
2019-03-26 21:54:34 +08:00
|
|
|
GlobalActivitiesUpdateTopPaneTags();
|
2019-03-15 22:52:30 +08:00
|
|
|
reloadActivities();
|
2019-03-29 15:18:15 +08:00
|
|
|
resetHotButtonsBackgroundColor();
|
2019-03-06 17:34:04 +08:00
|
|
|
});
|
|
|
|
|
2019-03-26 00:35:54 +08:00
|
|
|
$('#calendar-to-date').on('dp.change', function(e) {
|
2019-03-06 17:34:04 +08:00
|
|
|
var dateContainer = $('.ga-side .date-selector.filter-block');
|
2019-03-26 00:35:54 +08:00
|
|
|
if (!updateRunning) {
|
|
|
|
$('#calendar-from-date').data('DateTimePicker').minDate(e.date);
|
2019-03-29 15:18:15 +08:00
|
|
|
dateContainer[0].dataset.periodSelect = $('#calendar-to-date').val() + ' - ' + $('#calendar-from-date').val();
|
2019-03-26 00:35:54 +08:00
|
|
|
GlobalActivitiesUpdateTopPaneTags();
|
|
|
|
reloadActivities();
|
2019-03-28 01:47:34 +08:00
|
|
|
resetHotButtonsBackgroundColor();
|
2019-03-26 00:35:54 +08:00
|
|
|
}
|
2019-03-06 17:34:04 +08:00
|
|
|
});
|
|
|
|
|
2019-03-26 00:35:54 +08:00
|
|
|
$('#calendar-from-date').on('dp.change', function(e) {
|
2019-03-06 17:34:04 +08:00
|
|
|
var dateContainer = $('.ga-side .date-selector.filter-block');
|
2019-03-26 00:35:54 +08:00
|
|
|
if (!updateRunning) {
|
|
|
|
$('#calendar-to-date').data('DateTimePicker').maxDate(e.date);
|
2019-03-29 15:18:15 +08:00
|
|
|
dateContainer[0].dataset.periodSelect = $('#calendar-to-date').val() + ' - ' + $('#calendar-from-date').val();
|
2019-03-26 00:35:54 +08:00
|
|
|
GlobalActivitiesUpdateTopPaneTags();
|
|
|
|
reloadActivities();
|
2019-03-28 01:47:34 +08:00
|
|
|
resetHotButtonsBackgroundColor();
|
2019-03-26 00:35:54 +08:00
|
|
|
}
|
2019-03-06 17:34:04 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
GlobalActivitiesUpdateTopPaneTags();
|
|
|
|
|
2019-04-02 17:14:36 +08:00
|
|
|
if (typeof gaUrlQueryParams !== 'undefined' && gaUrlQueryParams) {
|
|
|
|
preloadFilters(gaUrlQueryParams);
|
|
|
|
}
|
|
|
|
|
2019-03-15 22:52:30 +08:00
|
|
|
$('.date-selector .hot-button').click(function() {
|
|
|
|
var selectPeriod = this.dataset.period;
|
|
|
|
var dateContainer = $('.ga-side .date-selector.filter-block');
|
|
|
|
var fromDate = $('#calendar-from-date').data('DateTimePicker');
|
|
|
|
var toDate = $('#calendar-to-date').data('DateTimePicker');
|
|
|
|
var today = new Date();
|
|
|
|
var yesterday = new Date(new Date().setDate(today.getDate() - 1));
|
|
|
|
var weekDay = today.getDay();
|
|
|
|
var monday = new Date(new Date().setDate(today.getDate() - weekDay + (weekDay === 0 ? -6 : 1)));
|
2019-03-26 00:35:54 +08:00
|
|
|
var lastWeekEnd = new Date(new Date().setDate(monday.getDate() - 1));
|
|
|
|
var lastWeekStart = new Date(new Date().setDate(monday.getDate() - 7));
|
2019-03-15 22:52:30 +08:00
|
|
|
var firstDay = new Date(today.getFullYear(), today.getMonth(), 1);
|
2019-03-26 00:35:54 +08:00
|
|
|
var lastMonthEnd = new Date(new Date().setDate(firstDay.getDate() - 1));
|
|
|
|
var lastMonthStart = new Date(lastMonthEnd.getFullYear(), lastMonthEnd.getMonth(), 1);
|
2019-03-15 22:52:30 +08:00
|
|
|
updateRunning = true;
|
2019-03-29 16:07:46 +08:00
|
|
|
fromDate.minDate(new Date(1900, 1, 1));
|
|
|
|
toDate.maxDate(new Date(3000, 1, 1));
|
2019-03-15 22:52:30 +08:00
|
|
|
if (selectPeriod === 'today') {
|
|
|
|
fromDate.date(today);
|
2019-03-26 00:35:54 +08:00
|
|
|
toDate.date(today);
|
2019-03-15 22:52:30 +08:00
|
|
|
} else if (selectPeriod === 'yesterday') {
|
|
|
|
fromDate.date(yesterday);
|
2019-03-26 00:35:54 +08:00
|
|
|
toDate.date(yesterday);
|
2019-03-15 22:52:30 +08:00
|
|
|
} else if (selectPeriod === 'this_week') {
|
2019-03-26 00:35:54 +08:00
|
|
|
fromDate.date(today);
|
|
|
|
toDate.date(monday);
|
2019-03-15 22:52:30 +08:00
|
|
|
} else if (selectPeriod === 'last_week') {
|
2019-03-26 00:35:54 +08:00
|
|
|
fromDate.date(lastWeekEnd);
|
|
|
|
toDate.date(lastWeekStart);
|
2019-03-15 22:52:30 +08:00
|
|
|
} else if (selectPeriod === 'this_month') {
|
2019-03-26 00:35:54 +08:00
|
|
|
fromDate.date(today);
|
|
|
|
toDate.date(firstDay);
|
2019-03-15 22:52:30 +08:00
|
|
|
} else if (selectPeriod === 'last_month') {
|
2019-03-26 00:35:54 +08:00
|
|
|
fromDate.date(lastMonthEnd);
|
|
|
|
toDate.date(lastMonthStart);
|
2019-03-15 22:52:30 +08:00
|
|
|
}
|
|
|
|
updateRunning = false;
|
|
|
|
dateContainer[0].dataset.periodSelect = this.innerHTML;
|
|
|
|
GlobalActivitiesUpdateTopPaneTags();
|
|
|
|
reloadActivities();
|
2019-03-27 20:15:44 +08:00
|
|
|
|
|
|
|
resetHotButtonsBackgroundColor();
|
|
|
|
$(this).addClass('selected');
|
2019-03-15 22:52:30 +08:00
|
|
|
});
|
|
|
|
});
|