mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-09 06:35:37 +08:00
Fix commnets to PR
This commit is contained in:
parent
17e457c686
commit
7117b767f4
12 changed files with 407 additions and 369 deletions
|
@ -41,6 +41,7 @@
|
|||
//= require select2_customization
|
||||
//= require shared/inline_editing
|
||||
//= require activestorage
|
||||
//= require global_activities/side_pane
|
||||
//= require turbolinks
|
||||
//= require marvinjslauncher
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* global animateSpinner GlobalActivitiesFilterPrepareArray */
|
||||
/* global animateSpinner globalActivities */
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
|||
function initShowMoreButton() {
|
||||
var moreButton = $('.btn-more-activities');
|
||||
moreButton.on('click', function(ev) {
|
||||
var filters = GlobalActivitiesFilterPrepareArray();
|
||||
var filters = globalActivities.getFilters();
|
||||
ev.preventDefault();
|
||||
animateSpinner(null, true);
|
||||
filters.page = moreButton.data('next-page');
|
||||
|
|
|
@ -1,340 +1,360 @@
|
|||
/* global animateSpinner gaUrlQueryParams PerfectSb dropdownSelector */
|
||||
/* eslint-disable no-extend-native, no-underscore-dangle, no-use-before-define */
|
||||
// Common code
|
||||
|
||||
|
||||
Date.prototype.date_to_string = function() {
|
||||
return this.getFullYear() + '-' + (this.getMonth() + 1) + '-' + this.getDate();
|
||||
};
|
||||
|
||||
// GA code
|
||||
|
||||
function GlobalActivitiesFiltersGetDates() {
|
||||
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();
|
||||
}
|
||||
return { from: fromDate, to: toDate };
|
||||
}
|
||||
|
||||
function GlobalActivitiesFilterPrepareArray() {
|
||||
var convertToInt = (array) => { return array.map(e => { return parseInt(e, 10); }); };
|
||||
var typesFilter = convertToInt(dropdownSelector.getValues('select[name=activity]') || []);
|
||||
var typesGroups = dropdownSelector.getValues('select[name=group_activity]') || [];
|
||||
if (typesFilter.length === 0 && typesGroups.length > 0) {
|
||||
$.each(typesGroups, (ig, group) => {
|
||||
$.each($('select[name=activity]').find(`optgroup[label="${group}"] option`), (io, option) => {
|
||||
typesFilter.push(parseInt(option.value, 10));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
teams: convertToInt(dropdownSelector.getValues('select[name=team]') || []),
|
||||
users: convertToInt(dropdownSelector.getValues('select[name=user]') || []),
|
||||
types: typesFilter,
|
||||
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]') || [])
|
||||
},
|
||||
from_date: GlobalActivitiesFiltersGetDates().from,
|
||||
to_date: GlobalActivitiesFiltersGetDates().to
|
||||
};
|
||||
}
|
||||
|
||||
$(function() {
|
||||
var globalActivities = (function() {
|
||||
var updateRunning = false;
|
||||
|
||||
var teamFilter = 'select[name=team]';
|
||||
var userFilter = 'select[name=user]';
|
||||
var groupActivityFilter = 'select[name=group_activity]';
|
||||
var activityFilter = 'select[name=activity]';
|
||||
var projectFilter = 'select[name=project]';
|
||||
var experimentFilter = 'select[name=experiment]';
|
||||
var taskFilter = 'select[name=task]';
|
||||
var inventoryFilter = 'select[name=inventory]';
|
||||
var inventoryItemFilter = 'select[name=inventory-item]';
|
||||
var protocolFilter = 'select[name=protocol]';
|
||||
var reportFilter = 'select[name=report]';
|
||||
|
||||
var filterSelectors = ['group_activity', 'activity', 'user', 'team', 'project',
|
||||
'experiment', 'task', 'inventory', 'inventory-item', 'protocol', 'report'];
|
||||
var clearSelectors = ['group_activity', 'activity', 'user', 'team', 'project',
|
||||
'inventory', 'protocol', 'report'];
|
||||
|
||||
|
||||
var ajaxParams = function(params) {
|
||||
var filter = GlobalActivitiesFilterPrepareArray();
|
||||
filter.query = params.query;
|
||||
return filter;
|
||||
Date.prototype.date_to_string = function() {
|
||||
return this.getFullYear() + '-' + (this.getMonth() + 1) + '-' + this.getDate();
|
||||
};
|
||||
|
||||
var defaultOnChangeActions = function() {
|
||||
GlobalActivitiesUpdateTopPaneTags();
|
||||
reloadActivities();
|
||||
};
|
||||
|
||||
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 [];
|
||||
function GlobalActivitiesFiltersGetDates() {
|
||||
var fromDate = $('#calendar-from-date').data('DateTimePicker').date();
|
||||
var toDate = $('#calendar-to-date').data('DateTimePicker').date();
|
||||
if (fromDate) {
|
||||
fromDate = fromDate._d.date_to_string();
|
||||
}
|
||||
});
|
||||
$('.activity.clear').click(() => {
|
||||
updateRunning = true;
|
||||
dropdownSelector.clearData('select[name=group_activity]');
|
||||
updateRunning = false;
|
||||
dropdownSelector.clearData('select[name=activity]');
|
||||
});
|
||||
|
||||
dropdownSelector.init('select[name=user]', {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: defaultOnChangeActions
|
||||
}).initClearButton('select[name=user]', '.user.clear');
|
||||
|
||||
dropdownSelector.init('select[name=team]', {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: defaultOnChangeActions
|
||||
}).initClearButton('select[name=team]', '.team.clear');
|
||||
|
||||
dropdownSelector.init('select[name=project]', {
|
||||
ajaxParams: ajaxParams,
|
||||
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();
|
||||
if (toDate) {
|
||||
toDate = toDate._d.date_to_string();
|
||||
}
|
||||
}).initClearButton('select[name=project]', '.project.clear');
|
||||
|
||||
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();
|
||||
}
|
||||
}).initClearButton('select[name=inventory]', '.inventory.clear');
|
||||
|
||||
dropdownSelector.init('select[name=inventory-item]', {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: defaultOnChangeActions
|
||||
});
|
||||
|
||||
dropdownSelector.init('select[name=protocol]', {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: defaultOnChangeActions
|
||||
}).initClearButton('select[name=protocol]', '.protocol.clear');
|
||||
|
||||
dropdownSelector.init('select[name=report]', {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: defaultOnChangeActions
|
||||
}).initClearButton('select[name=report]', '.report.clear');
|
||||
|
||||
$('.ga-side').scroll(() => {
|
||||
$.each(filterSelectors, (i, selector) => { dropdownSelector.updateDropdownDirection(`select[name=${selector}]`); });
|
||||
});
|
||||
|
||||
$('.clear-container').click(() => {
|
||||
var selectorsCount = $('select[name=project]').length === 1 ? clearSelectors.length - 1 : 1;
|
||||
updateRunning = true;
|
||||
|
||||
$('#calendar-from-date').data('DateTimePicker').clear();
|
||||
$('#calendar-to-date').data('DateTimePicker').clear();
|
||||
$('.ga-side .date-selector.filter-block')[0].dataset.periodSelect = '';
|
||||
|
||||
|
||||
$.each(clearSelectors, (i, selector) => {
|
||||
if (i === selectorsCount) updateRunning = false;
|
||||
dropdownSelector.clearData(`select[name=${selector}]`);
|
||||
});
|
||||
|
||||
resetHotButtonsBackgroundColor();
|
||||
});
|
||||
|
||||
function GlobalActivitiesUpdateTopPaneTags() {
|
||||
var dateContainer = $('.ga-side .date-selector.filter-block');
|
||||
if (updateRunning) return false;
|
||||
$('.ga-top .ga-tags').children().remove();
|
||||
if (dateContainer[0].dataset.periodSelect) {
|
||||
$(`<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');
|
||||
}
|
||||
$.each($('.ga-side .ds-tags'), function(index, tag) {
|
||||
var newTag = $(tag.outerHTML).appendTo('.ga-top .ga-tags');
|
||||
newTag.find('.fa-times')
|
||||
.click(() => {
|
||||
$(tag).find('.fa-times').click();
|
||||
});
|
||||
});
|
||||
return { from: fromDate, to: toDate };
|
||||
}
|
||||
|
||||
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) {
|
||||
$.each(filters.subject_labels, (i, subject) => {
|
||||
var currentData = dropdownSelector.getData(`select[name=${subject.object}]`);
|
||||
currentData.push(subject);
|
||||
dropdownSelector.setData(`select[name=${subject.object}]`, currentData);
|
||||
function GlobalActivitiesFilterPrepareArray() {
|
||||
var convertToInt = (array) => { return array.map(e => { return parseInt(e, 10); }); };
|
||||
var typesFilter = convertToInt(dropdownSelector.getValues(activityFilter) || []);
|
||||
var typesGroups = dropdownSelector.getValues(groupActivityFilter) || [];
|
||||
if (typesFilter.length === 0 && typesGroups.length > 0) {
|
||||
$.each(typesGroups, (ig, group) => {
|
||||
$.each($(activityFilter).find(`optgroup[label="${group}"] option`), (io, option) => {
|
||||
typesFilter.push(parseInt(option.value, 10));
|
||||
});
|
||||
});
|
||||
}
|
||||
updateRunning = false;
|
||||
GlobalActivitiesUpdateTopPaneTags();
|
||||
|
||||
return {
|
||||
teams: convertToInt(dropdownSelector.getValues(teamFilter) || []),
|
||||
users: convertToInt(dropdownSelector.getValues(userFilter) || []),
|
||||
types: typesFilter,
|
||||
subjects: {
|
||||
Project: convertToInt(dropdownSelector.getValues(projectFilter) || []),
|
||||
Experiment: convertToInt(dropdownSelector.getValues(experimentFilter) || []),
|
||||
MyModule: convertToInt(dropdownSelector.getValues(taskFilter) || []),
|
||||
Repository: convertToInt(dropdownSelector.getValues(inventoryFilter) || []),
|
||||
RepositoryRow: convertToInt(dropdownSelector.getValues(inventoryItemFilter) || []),
|
||||
Protocol: convertToInt(dropdownSelector.getValues(protocolFilter) || []),
|
||||
Report: convertToInt(dropdownSelector.getValues(reportFilter) || [])
|
||||
},
|
||||
from_date: GlobalActivitiesFiltersGetDates().from,
|
||||
to_date: GlobalActivitiesFiltersGetDates().to
|
||||
};
|
||||
}
|
||||
|
||||
// update_filter
|
||||
function reloadActivities() {
|
||||
var moreButton = $('.btn-more-activities');
|
||||
var noActivitiesMessage = $('.no-activities-message');
|
||||
if (updateRunning) return false;
|
||||
updateRunning = true;
|
||||
$('.ga-activities-list .activities-day').remove();
|
||||
animateSpinner('.ga-main', true);
|
||||
$.ajax({
|
||||
url: $('.ga-activities-list').data('activities-url'),
|
||||
data: GlobalActivitiesFilterPrepareArray(),
|
||||
dataType: 'json',
|
||||
type: 'POST',
|
||||
success: function(json) {
|
||||
$(json.activities_html).appendTo('.ga-activities-list');
|
||||
if (json.next_page) {
|
||||
moreButton.removeClass('hidden');
|
||||
moreButton.data('next-page', json.next_page);
|
||||
} else {
|
||||
moreButton.addClass('hidden');
|
||||
}
|
||||
if (json.activities_html === '') {
|
||||
noActivitiesMessage.removeClass('hidden');
|
||||
} else {
|
||||
noActivitiesMessage.addClass('hidden');
|
||||
}
|
||||
$('.ga-activities-list').data('starting-timestamp', json.starting_timestamp);
|
||||
updateRunning = false;
|
||||
animateSpinner('.ga-main', false);
|
||||
function init() {
|
||||
var ajaxParams = function(params) {
|
||||
var filter = GlobalActivitiesFilterPrepareArray();
|
||||
filter.query = params.query;
|
||||
return filter;
|
||||
};
|
||||
|
||||
$('.ga-main').scrollTop(0);
|
||||
PerfectSb().update_all();
|
||||
},
|
||||
error: function() {
|
||||
updateRunning = false;
|
||||
animateSpinner('.ga-main', false);
|
||||
var defaultOnChangeActions = function() {
|
||||
GlobalActivitiesUpdateTopPaneTags();
|
||||
reloadActivities();
|
||||
};
|
||||
|
||||
dropdownSelector.init(groupActivityFilter, {
|
||||
onChange: defaultOnChangeActions
|
||||
});
|
||||
|
||||
dropdownSelector.init(activityFilter, {
|
||||
onChange: defaultOnChangeActions,
|
||||
localFilter: function(data) {
|
||||
var groupFilter = dropdownSelector.getValues(groupActivityFilter);
|
||||
if (groupFilter.length === 0) return data;
|
||||
if (groupFilter.indexOf(data.parent().attr('label')) !== -1) {
|
||||
return data;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
function resetHotButtonsBackgroundColor() {
|
||||
$('.date-selector .hot-button').each(function() {
|
||||
$(this).removeClass('selected');
|
||||
$('.activity.clear').click(() => {
|
||||
updateRunning = true;
|
||||
dropdownSelector.clearData(groupActivityFilter);
|
||||
updateRunning = false;
|
||||
dropdownSelector.clearData(activityFilter);
|
||||
});
|
||||
|
||||
dropdownSelector.init(userFilter, {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: defaultOnChangeActions
|
||||
}).initClearButton(userFilter, '.user.clear');
|
||||
|
||||
dropdownSelector.init(teamFilter, {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: defaultOnChangeActions
|
||||
}).initClearButton(teamFilter, '.team.clear');
|
||||
|
||||
dropdownSelector.init(projectFilter, {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: () => {
|
||||
var selectedValues = dropdownSelector.getValues(projectFilter);
|
||||
if (selectedValues.length > 0) {
|
||||
dropdownSelector.enableSelector(experimentFilter);
|
||||
} else {
|
||||
dropdownSelector.disableSelector(experimentFilter);
|
||||
dropdownSelector.disableSelector(taskFilter);
|
||||
}
|
||||
defaultOnChangeActions();
|
||||
}
|
||||
}).initClearButton(projectFilter, '.project.clear');
|
||||
|
||||
dropdownSelector.init(experimentFilter, {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: () => {
|
||||
var selectedValues = dropdownSelector.getValues(experimentFilter);
|
||||
if (selectedValues.length === 0) {
|
||||
dropdownSelector.disableSelector(taskFilter);
|
||||
} else {
|
||||
dropdownSelector.enableSelector(taskFilter);
|
||||
}
|
||||
defaultOnChangeActions();
|
||||
}
|
||||
});
|
||||
|
||||
dropdownSelector.init(taskFilter, {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: defaultOnChangeActions
|
||||
});
|
||||
|
||||
dropdownSelector.init(inventoryFilter, {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: () => {
|
||||
var selectedValues = dropdownSelector.getValues(inventoryFilter);
|
||||
if (selectedValues.length === 0) {
|
||||
dropdownSelector.disableSelector(inventoryItemFilter);
|
||||
} else {
|
||||
dropdownSelector.enableSelector(inventoryItemFilter);
|
||||
}
|
||||
defaultOnChangeActions();
|
||||
}
|
||||
}).initClearButton(inventoryFilter, '.inventory.clear');
|
||||
|
||||
dropdownSelector.init(inventoryItemFilter, {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: defaultOnChangeActions
|
||||
});
|
||||
|
||||
dropdownSelector.init(protocolFilter, {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: defaultOnChangeActions
|
||||
}).initClearButton(protocolFilter, '.protocol.clear');
|
||||
|
||||
dropdownSelector.init(reportFilter, {
|
||||
ajaxParams: ajaxParams,
|
||||
onChange: defaultOnChangeActions
|
||||
}).initClearButton(reportFilter, '.report.clear');
|
||||
|
||||
$('.ga-side').scroll(() => {
|
||||
$.each(filterSelectors, (i, selector) => { dropdownSelector.updateDropdownDirection(`select[name=${selector}]`); });
|
||||
});
|
||||
|
||||
$('.clear-container').click(() => {
|
||||
var selectorsCount = $(projectFilter).length === 1 ? clearSelectors.length - 1 : 1;
|
||||
updateRunning = true;
|
||||
|
||||
$('#calendar-from-date').data('DateTimePicker').clear();
|
||||
$('#calendar-to-date').data('DateTimePicker').clear();
|
||||
$('.ga-side .date-selector.filter-block')[0].dataset.periodSelect = '';
|
||||
|
||||
|
||||
$.each(clearSelectors, (i, selector) => {
|
||||
if (i === selectorsCount) updateRunning = false;
|
||||
dropdownSelector.clearData(`select[name=${selector}]`);
|
||||
});
|
||||
|
||||
resetHotButtonsBackgroundColor();
|
||||
});
|
||||
|
||||
function GlobalActivitiesUpdateTopPaneTags() {
|
||||
var dateContainer = $('.ga-side .date-selector.filter-block');
|
||||
if (updateRunning) return false;
|
||||
$('.ga-top .ga-tags').children().remove();
|
||||
if (dateContainer[0].dataset.periodSelect) {
|
||||
$(`<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');
|
||||
}
|
||||
$.each($('.ga-side .ds-tags'), function(index, tag) {
|
||||
var newTag = $(tag.outerHTML).appendTo('.ga-top .ga-tags');
|
||||
newTag.find('.fa-times')
|
||||
.click(() => {
|
||||
$(tag).find('.fa-times').click();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function preloadFilters(filters) {
|
||||
updateRunning = true;
|
||||
if (filters.subject_labels) {
|
||||
$.each(filters.subject_labels, (i, subject) => {
|
||||
var currentData = dropdownSelector.getData(`select[name=${subject.object}]`);
|
||||
currentData.push(subject);
|
||||
dropdownSelector.setData(`select[name=${subject.object}]`, currentData);
|
||||
});
|
||||
}
|
||||
updateRunning = false;
|
||||
GlobalActivitiesUpdateTopPaneTags();
|
||||
}
|
||||
|
||||
// update_filter
|
||||
function reloadActivities() {
|
||||
var moreButton = $('.btn-more-activities');
|
||||
var noActivitiesMessage = $('.no-activities-message');
|
||||
if (updateRunning) return false;
|
||||
updateRunning = true;
|
||||
$('.ga-activities-list .activities-day').remove();
|
||||
animateSpinner('.ga-main', true);
|
||||
$.ajax({
|
||||
url: $('.ga-activities-list').data('activities-url'),
|
||||
data: GlobalActivitiesFilterPrepareArray(),
|
||||
dataType: 'json',
|
||||
type: 'POST',
|
||||
success: function(json) {
|
||||
$(json.activities_html).appendTo('.ga-activities-list');
|
||||
if (json.next_page) {
|
||||
moreButton.removeClass('hidden');
|
||||
moreButton.data('next-page', json.next_page);
|
||||
} else {
|
||||
moreButton.addClass('hidden');
|
||||
}
|
||||
if (json.activities_html === '') {
|
||||
noActivitiesMessage.removeClass('hidden');
|
||||
} else {
|
||||
noActivitiesMessage.addClass('hidden');
|
||||
}
|
||||
$('.ga-activities-list').data('starting-timestamp', json.starting_timestamp);
|
||||
updateRunning = false;
|
||||
animateSpinner('.ga-main', false);
|
||||
|
||||
$('.ga-main').scrollTop(0);
|
||||
PerfectSb().update_all();
|
||||
},
|
||||
error: function() {
|
||||
updateRunning = false;
|
||||
animateSpinner('.ga-main', false);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
function resetHotButtonsBackgroundColor() {
|
||||
$('.date-selector .hot-button').each(function() {
|
||||
$(this).removeClass('selected');
|
||||
});
|
||||
}
|
||||
|
||||
$('#calendar-to-date').on('dp.change', function(e) {
|
||||
var dateContainer = $('.ga-side .date-selector.filter-block');
|
||||
if (!updateRunning) {
|
||||
$('#calendar-from-date').data('DateTimePicker').minDate(e.date);
|
||||
dateContainer[0].dataset.periodSelect = $('#calendar-to-date').val() + ' - ' + $('#calendar-from-date').val();
|
||||
GlobalActivitiesUpdateTopPaneTags();
|
||||
reloadActivities();
|
||||
resetHotButtonsBackgroundColor();
|
||||
}
|
||||
});
|
||||
|
||||
$('#calendar-from-date').on('dp.change', function(e) {
|
||||
var dateContainer = $('.ga-side .date-selector.filter-block');
|
||||
if (!updateRunning) {
|
||||
$('#calendar-to-date').data('DateTimePicker').maxDate(e.date);
|
||||
dateContainer[0].dataset.periodSelect = $('#calendar-to-date').val() + ' - ' + $('#calendar-from-date').val();
|
||||
GlobalActivitiesUpdateTopPaneTags();
|
||||
reloadActivities();
|
||||
resetHotButtonsBackgroundColor();
|
||||
}
|
||||
});
|
||||
|
||||
GlobalActivitiesUpdateTopPaneTags();
|
||||
|
||||
if (typeof gaUrlQueryParams !== 'undefined' && gaUrlQueryParams) {
|
||||
preloadFilters(gaUrlQueryParams);
|
||||
}
|
||||
|
||||
$('.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)));
|
||||
var lastWeekEnd = new Date(new Date().setDate(monday.getDate() - 1));
|
||||
var lastWeekStart = new Date(new Date().setDate(monday.getDate() - 7));
|
||||
var firstDay = new Date(today.getFullYear(), today.getMonth(), 1);
|
||||
var lastMonthEnd = new Date(new Date().setDate(firstDay.getDate() - 1));
|
||||
var lastMonthStart = new Date(lastMonthEnd.getFullYear(), lastMonthEnd.getMonth(), 1);
|
||||
updateRunning = true;
|
||||
fromDate.minDate(new Date(1900, 1, 1));
|
||||
toDate.maxDate(new Date(3000, 1, 1));
|
||||
if (selectPeriod === 'today') {
|
||||
fromDate.date(today);
|
||||
toDate.date(today);
|
||||
} else if (selectPeriod === 'yesterday') {
|
||||
fromDate.date(yesterday);
|
||||
toDate.date(yesterday);
|
||||
} else if (selectPeriod === 'this_week') {
|
||||
fromDate.date(today);
|
||||
toDate.date(monday);
|
||||
} else if (selectPeriod === 'last_week') {
|
||||
fromDate.date(lastWeekEnd);
|
||||
toDate.date(lastWeekStart);
|
||||
} else if (selectPeriod === 'this_month') {
|
||||
fromDate.date(today);
|
||||
toDate.date(firstDay);
|
||||
} else if (selectPeriod === 'last_month') {
|
||||
fromDate.date(lastMonthEnd);
|
||||
toDate.date(lastMonthStart);
|
||||
}
|
||||
updateRunning = false;
|
||||
dateContainer[0].dataset.periodSelect = this.innerHTML;
|
||||
GlobalActivitiesUpdateTopPaneTags();
|
||||
reloadActivities();
|
||||
|
||||
resetHotButtonsBackgroundColor();
|
||||
$(this).addClass('selected');
|
||||
});
|
||||
}
|
||||
|
||||
$('#calendar-to-date').on('dp.change', function(e) {
|
||||
var dateContainer = $('.ga-side .date-selector.filter-block');
|
||||
if (!updateRunning) {
|
||||
$('#calendar-from-date').data('DateTimePicker').minDate(e.date);
|
||||
dateContainer[0].dataset.periodSelect = $('#calendar-to-date').val() + ' - ' + $('#calendar-from-date').val();
|
||||
GlobalActivitiesUpdateTopPaneTags();
|
||||
reloadActivities();
|
||||
resetHotButtonsBackgroundColor();
|
||||
}
|
||||
});
|
||||
return {
|
||||
getFilters: GlobalActivitiesFilterPrepareArray,
|
||||
init: init
|
||||
};
|
||||
}());
|
||||
|
||||
$('#calendar-from-date').on('dp.change', function(e) {
|
||||
var dateContainer = $('.ga-side .date-selector.filter-block');
|
||||
if (!updateRunning) {
|
||||
$('#calendar-to-date').data('DateTimePicker').maxDate(e.date);
|
||||
dateContainer[0].dataset.periodSelect = $('#calendar-to-date').val() + ' - ' + $('#calendar-from-date').val();
|
||||
GlobalActivitiesUpdateTopPaneTags();
|
||||
reloadActivities();
|
||||
resetHotButtonsBackgroundColor();
|
||||
}
|
||||
});
|
||||
|
||||
GlobalActivitiesUpdateTopPaneTags();
|
||||
|
||||
if (typeof gaUrlQueryParams !== 'undefined' && gaUrlQueryParams) {
|
||||
preloadFilters(gaUrlQueryParams);
|
||||
}
|
||||
|
||||
$('.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)));
|
||||
var lastWeekEnd = new Date(new Date().setDate(monday.getDate() - 1));
|
||||
var lastWeekStart = new Date(new Date().setDate(monday.getDate() - 7));
|
||||
var firstDay = new Date(today.getFullYear(), today.getMonth(), 1);
|
||||
var lastMonthEnd = new Date(new Date().setDate(firstDay.getDate() - 1));
|
||||
var lastMonthStart = new Date(lastMonthEnd.getFullYear(), lastMonthEnd.getMonth(), 1);
|
||||
updateRunning = true;
|
||||
fromDate.minDate(new Date(1900, 1, 1));
|
||||
toDate.maxDate(new Date(3000, 1, 1));
|
||||
if (selectPeriod === 'today') {
|
||||
fromDate.date(today);
|
||||
toDate.date(today);
|
||||
} else if (selectPeriod === 'yesterday') {
|
||||
fromDate.date(yesterday);
|
||||
toDate.date(yesterday);
|
||||
} else if (selectPeriod === 'this_week') {
|
||||
fromDate.date(today);
|
||||
toDate.date(monday);
|
||||
} else if (selectPeriod === 'last_week') {
|
||||
fromDate.date(lastWeekEnd);
|
||||
toDate.date(lastWeekStart);
|
||||
} else if (selectPeriod === 'this_month') {
|
||||
fromDate.date(today);
|
||||
toDate.date(firstDay);
|
||||
} else if (selectPeriod === 'last_month') {
|
||||
fromDate.date(lastMonthEnd);
|
||||
toDate.date(lastMonthStart);
|
||||
}
|
||||
updateRunning = false;
|
||||
dateContainer[0].dataset.periodSelect = this.innerHTML;
|
||||
GlobalActivitiesUpdateTopPaneTags();
|
||||
reloadActivities();
|
||||
|
||||
resetHotButtonsBackgroundColor();
|
||||
$(this).addClass('selected');
|
||||
});
|
||||
$(document).on('turbolinks:load', function() {
|
||||
if ($('.global-activities-container').length > 0) globalActivities.init();
|
||||
});
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* global PerfectScrollbar activePSB PerfectSb */
|
||||
/* global PerfectScrollbar activePSB PerfectSb I18n */
|
||||
/* eslint-disable no-unused-vars, no-use-before-define */
|
||||
|
||||
var dropdownSelector = (function() {
|
||||
|
@ -15,7 +15,7 @@ var dropdownSelector = (function() {
|
|||
var bottomSpace = windowHeight - containerPosition - containerHeight;
|
||||
if (bottomSpace < 280) {
|
||||
container.addClass('inverse');
|
||||
container.find('.dropdown-container').css('max-height', `${(containerPosition - 82)}px`)
|
||||
container.find('.dropdown-container').css('max-height', `${(containerPosition - 122)}px`)
|
||||
.css('margin-bottom', `${(containerPosition * -1)}px`)
|
||||
.css('width', `${containerWidth}px`);
|
||||
} else {
|
||||
|
@ -38,7 +38,7 @@ var dropdownSelector = (function() {
|
|||
// Search filter for non-ajax data
|
||||
function filterOptions(selector, container, options) {
|
||||
var customFilter = selector.data('config').localFilter;
|
||||
var searchQuery = container.find('.seacrh-field').val();
|
||||
var searchQuery = container.find('.search-field').val();
|
||||
|
||||
var data = customFilter ? customFilter(options) : options;
|
||||
if (searchQuery.length === 0) return data;
|
||||
|
@ -68,17 +68,18 @@ var dropdownSelector = (function() {
|
|||
}
|
||||
}
|
||||
|
||||
function disableDropdown(selector, container, mode) {
|
||||
var searchFieldValue = container.find('.seacrh-field');
|
||||
function disableEnableDropdown(selector, container, mode) {
|
||||
var searchFieldValue = container.find('.search-field');
|
||||
if (mode) {
|
||||
updateCurrentData(container, []);
|
||||
updateTags(selector, container, { skipChange: true });
|
||||
searchFieldValue.attr('placeholder', selector.data('disable-placeholder'));
|
||||
container.addClass('disabled').removeClass('open')
|
||||
.find('.seacrh-field').prop('disabled', true);
|
||||
.find('.search-field').val('')
|
||||
.prop('disabled', true);
|
||||
} else {
|
||||
container.removeClass('disabled')
|
||||
.find('.seacrh-field').prop('disabled', false);
|
||||
.find('.search-field').prop('disabled', false);
|
||||
updateTags(selector, container, { skipChange: true });
|
||||
}
|
||||
}
|
||||
|
@ -90,7 +91,7 @@ var dropdownSelector = (function() {
|
|||
function generateDropdown(selector, config = {}) {
|
||||
var selectElement = $(selector);
|
||||
var optionContainer;
|
||||
var ps;
|
||||
var perfectScroll;
|
||||
var dropdownContainer;
|
||||
|
||||
if (selectElement.length === 0 || selectElement.next().hasClass('dropdown-selector-container')) return;
|
||||
|
@ -102,7 +103,7 @@ var dropdownSelector = (function() {
|
|||
$(`
|
||||
<div class="dropdown-container"></div>
|
||||
<div class="input-field">
|
||||
<input type="text" class="seacrh-field" placeholder="${selectElement.data('placeholder')}"></input>
|
||||
<input type="text" class="search-field" placeholder="${selectElement.data('placeholder')}"></input>
|
||||
<i class="fas fa-caret-down"></i>
|
||||
</div>
|
||||
<input type="hidden" class="data-field" value="[]">
|
||||
|
@ -121,7 +122,7 @@ var dropdownSelector = (function() {
|
|||
saveData(selectElement, dropdownContainer);
|
||||
});
|
||||
}
|
||||
dropdownContainer.find('.seacrh-field').keyup((e) => {
|
||||
dropdownContainer.find('.search-field').keyup((e) => {
|
||||
e.stopPropagation();
|
||||
loadData(selectElement, dropdownContainer);
|
||||
}).click((e) =>{
|
||||
|
@ -133,8 +134,8 @@ var dropdownSelector = (function() {
|
|||
}
|
||||
});
|
||||
|
||||
ps = new PerfectScrollbar(dropdownContainer.find('.dropdown-container')[0]);
|
||||
activePSB.push(ps);
|
||||
perfectScroll = new PerfectScrollbar(dropdownContainer.find('.dropdown-container')[0]);
|
||||
activePSB.push(perfectScroll);
|
||||
|
||||
optionContainer = dropdownContainer.find('.dropdown-container');
|
||||
|
||||
|
@ -158,7 +159,7 @@ var dropdownSelector = (function() {
|
|||
|
||||
selectElement.css('display', 'none');
|
||||
|
||||
if (selectElement.data('disable-on-load')) disableDropdown(selectElement, dropdownContainer, true);
|
||||
if (selectElement.data('disable-on-load')) disableEnableDropdown(selectElement, dropdownContainer, true);
|
||||
updateDropdownDirection(selectElement, dropdownContainer);
|
||||
}
|
||||
|
||||
|
@ -199,34 +200,38 @@ var dropdownSelector = (function() {
|
|||
saveData(selector, container);
|
||||
}
|
||||
|
||||
container.find('.dropdown-group, .dropdown-option').remove();
|
||||
if (!data || !data.length) return;
|
||||
container.find('.dropdown-group, .dropdown-option, .empty-dropdown').remove();
|
||||
if (!data) return;
|
||||
|
||||
if (selector.data('select-by-group')) {
|
||||
$.each(data, function(gi, group) {
|
||||
var groupElement = drawGroup(group);
|
||||
$.each(group.options, function(oi, option) {
|
||||
var optionElement = drawOption(option, group);
|
||||
if (data.length > 0) {
|
||||
if (selector.data('select-by-group')) {
|
||||
$.each(data, function(gi, group) {
|
||||
var groupElement = drawGroup(group);
|
||||
$.each(group.options, function(oi, option) {
|
||||
var optionElement = drawOption(option, group);
|
||||
optionElement.click(clickOption);
|
||||
optionElement.appendTo(groupElement);
|
||||
});
|
||||
groupElement.find('.group-name').click(function() {
|
||||
var groupContainer = $(this).parent();
|
||||
if (groupContainer.toggleClass('select').hasClass('select')) {
|
||||
groupContainer.find('.dropdown-option').addClass('select');
|
||||
} else {
|
||||
groupContainer.find('.dropdown-option').removeClass('select');
|
||||
}
|
||||
saveData(selector, container);
|
||||
});
|
||||
groupElement.appendTo(container.find('.dropdown-container'));
|
||||
});
|
||||
} else {
|
||||
$.each(data, function(oi, option) {
|
||||
var optionElement = drawOption(option);
|
||||
optionElement.click(clickOption);
|
||||
optionElement.appendTo(groupElement);
|
||||
optionElement.appendTo(container.find('.dropdown-container'));
|
||||
});
|
||||
groupElement.find('.group-name').click(function() {
|
||||
var groupContainer = $(this).parent();
|
||||
if (groupContainer.toggleClass('select').hasClass('select')) {
|
||||
groupContainer.find('.dropdown-option').addClass('select');
|
||||
} else {
|
||||
groupContainer.find('.dropdown-option').removeClass('select');
|
||||
}
|
||||
saveData(selector, container);
|
||||
});
|
||||
groupElement.appendTo(container.find('.dropdown-container'));
|
||||
});
|
||||
}
|
||||
} else {
|
||||
$.each(data, function(oi, option) {
|
||||
var optionElement = drawOption(option);
|
||||
optionElement.click(clickOption);
|
||||
optionElement.appendTo(container.find('.dropdown-container'));
|
||||
});
|
||||
$(`<div class="empty-dropdown">${I18n.t('dropdown_selector.nothing_found')}</div>`).appendTo(container.find('.dropdown-container'));
|
||||
}
|
||||
|
||||
PerfectSb().update_all();
|
||||
|
@ -243,7 +248,7 @@ var dropdownSelector = (function() {
|
|||
&& x.group === option.dataset.group));
|
||||
}
|
||||
|
||||
container.find('.seacrh-field').val('');
|
||||
container.find('.search-field').val('');
|
||||
|
||||
$.each(container.find('.dropdown-container .dropdown-option'), function(oi, option) {
|
||||
var alreadySelected;
|
||||
|
@ -271,7 +276,7 @@ var dropdownSelector = (function() {
|
|||
// Refresh tags in input field
|
||||
function updateTags(selector, container, config = {}) {
|
||||
var selectedOptions = getCurrentData(container);
|
||||
var searchFieldValue = container.find('.seacrh-field');
|
||||
var searchFieldValue = container.find('.search-field');
|
||||
|
||||
// Draw tag and assign event
|
||||
function drawTag(data) {
|
||||
|
@ -283,7 +288,7 @@ var dropdownSelector = (function() {
|
|||
${customLabel ? customLabel(data) : data.label}
|
||||
</div>
|
||||
<i class="fas fa-times"></i>
|
||||
</div>`).insertBefore(container.find('.input-field .seacrh-field'));
|
||||
</div>`).insertBefore(container.find('.input-field .search-field'));
|
||||
|
||||
tag.click((e) => { e.stopPropagation(); });
|
||||
tag.find('.fa-times').click(function(e) {
|
||||
|
@ -348,7 +353,7 @@ var dropdownSelector = (function() {
|
|||
var customParams;
|
||||
var ajaxParams;
|
||||
if (selector.data('ajax-url')) {
|
||||
defaultParams = { query: container.find('.seacrh-field').val() };
|
||||
defaultParams = { query: container.find('.search-field').val() };
|
||||
customParams = selector.data('config').ajaxParams;
|
||||
ajaxParams = customParams ? customParams(defaultParams) : defaultParams;
|
||||
|
||||
|
@ -443,11 +448,20 @@ var dropdownSelector = (function() {
|
|||
return this;
|
||||
},
|
||||
|
||||
// Disable selector
|
||||
disableSelector: function(selector, mode) {
|
||||
// Enable selector
|
||||
enableSelector: function(selector) {
|
||||
if ($(selector).length === 0) return false;
|
||||
|
||||
disableDropdown($(selector), $(selector).next(), mode);
|
||||
disableEnableDropdown($(selector), $(selector).next(), false);
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
// Disable selector
|
||||
disableSelector: function(selector) {
|
||||
if ($(selector).length === 0) return false;
|
||||
|
||||
disableEnableDropdown($(selector), $(selector).next(), true);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -218,7 +218,8 @@
|
|||
|
||||
.activity-card {
|
||||
cursor: default;
|
||||
padding: 5px 15px 5px 40px;
|
||||
margin-right: 15px;
|
||||
padding: 5px 0px 5px 40px;
|
||||
|
||||
&:hover {
|
||||
background-color: $brand-primary-light;
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
width: 18px;
|
||||
}
|
||||
|
||||
.seacrh-field {
|
||||
.search-field {
|
||||
border: 0;
|
||||
flex-basis: 50px;
|
||||
flex-grow: 2000;
|
||||
|
@ -102,6 +102,12 @@
|
|||
width: 100%;
|
||||
z-index: 10;
|
||||
|
||||
.empty-dropdown {
|
||||
opacity: .6;
|
||||
padding: 7px;
|
||||
text-align: center
|
||||
}
|
||||
|
||||
.dropdown-select-all {
|
||||
background: $color-white;
|
||||
border: 0;
|
||||
|
@ -241,7 +247,7 @@
|
|||
.input-field {
|
||||
background: $color-concrete;
|
||||
|
||||
.seacrh-field:disabled {
|
||||
.search-field:disabled {
|
||||
background: inherit;
|
||||
user-select: none;
|
||||
}
|
||||
|
|
|
@ -68,7 +68,7 @@ class Activity < ApplicationRecord
|
|||
filters[:subjects].each do |object, values|
|
||||
values.each do |value|
|
||||
label = object.to_s.constantize.find_by_id(value).name
|
||||
subject_labels.push({value: value, label: label, object: object.downcase, group: ''}.as_json)
|
||||
subject_labels.push({ value: value, label: label, object: object.downcase, group: '' }.as_json)
|
||||
end
|
||||
end
|
||||
result.push(subject_labels.to_query('subject_labels'))
|
||||
|
|
|
@ -36,4 +36,3 @@
|
|||
var gaUrlQueryParams= <%= raw @filters.to_json %>
|
||||
</script>
|
||||
<%= javascript_include_tag 'global_activities/index.js' %>
|
||||
<%= javascript_include_tag 'global_activities/side_pane.js' %>
|
||||
|
|
|
@ -34,4 +34,3 @@
|
|||
</div>
|
||||
|
||||
<%= javascript_include_tag 'global_activities/index.js' %>
|
||||
<%= javascript_include_tag 'global_activities/side_pane.js' %>
|
||||
|
|
|
@ -14,9 +14,6 @@
|
|||
<div class="hot-button btn btn-default" data-period="this_month"><%= t('global_activities.index.this_month') %></div>
|
||||
<div class="hot-button btn btn-default" data-period="last_month"><%= t('global_activities.index.last_month') %></div>
|
||||
</div>
|
||||
<h4 class="title sub">
|
||||
<%= t('global_activities.index.custom_dates_label') %>
|
||||
</h4>
|
||||
<div class="to">
|
||||
<%= render partial: "global_activities/date_picker", locals: { id: 'to-date', use_current: 'false', placeholder: t('global_activities.index.to_label'), label: nil } %>
|
||||
</div>
|
||||
|
@ -32,7 +29,7 @@
|
|||
<h6 class="activity clear"><%= t('global_activities.index.clear') %></h6>
|
||||
<div class="select-container group-activity">
|
||||
<%= select_tag "group_activity", options_for_select(@activity_types.map{|k,v| [k,k]}),{
|
||||
'data-placeholder': 'Select Activity groups'
|
||||
'data-placeholder': t('global_activities.index.select_activity_groups')
|
||||
} %>
|
||||
</div>
|
||||
<div class="select-container activity">
|
||||
|
|
|
@ -2001,6 +2001,9 @@ en:
|
|||
removed: "(removed)"
|
||||
deleted: "(deleted)"
|
||||
|
||||
dropdown_selector:
|
||||
nothing_found: "Nothing found..."
|
||||
|
||||
zip_export:
|
||||
modal_label: 'Export inventory'
|
||||
notification_title: 'Your requested export package is ready!'
|
||||
|
|
|
@ -10,13 +10,11 @@ en:
|
|||
last_week: "Last week"
|
||||
this_month: "This month"
|
||||
last_month: "Last month"
|
||||
custom_dates_label: "Select custom dates"
|
||||
from_label: "Select end date"
|
||||
to_label: "Select start date"
|
||||
clear: "Clear"
|
||||
activity_type: "Activity types"
|
||||
user: "Users"
|
||||
object: "Object"
|
||||
clear_filters: "Clear filters"
|
||||
select_teams: "Select Teams"
|
||||
select_activity_groups: "Select Activity groups"
|
||||
|
|
Loading…
Add table
Reference in a new issue