mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 23:16:15 +08:00
refactor global activities in separate page [fixes SCI-2141]
This commit is contained in:
parent
d50bc5fde9
commit
e218cae453
21
app/assets/javascripts/activities/index.js
Normal file
21
app/assets/javascripts/activities/index.js
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
function initActivitiesButton() {
|
||||||
|
$(document).ready(function() {
|
||||||
|
// Activity feed modal in main navigation menu
|
||||||
|
$(document).find('.btn-more-activities')
|
||||||
|
.on('ajax:success', function(e, data) {
|
||||||
|
debugger;
|
||||||
|
$(data.html).insertAfter($('#list-activities li').last());
|
||||||
|
if(data.more_url) {
|
||||||
|
$(this).attr('href', data.more_url);
|
||||||
|
} else {
|
||||||
|
$(this).remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
initActivitiesButton();
|
||||||
|
|
||||||
|
})();
|
|
@ -104,57 +104,10 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function initActivitiesButton() {
|
|
||||||
$(document.body).ready(function() {
|
|
||||||
// Activity feed modal in main navigation menu
|
|
||||||
var activityModal = $('#activity-modal');
|
|
||||||
var activityModalBody = activityModal.find('.modal-body');
|
|
||||||
var initMoreBtn = function() {
|
|
||||||
activityModalBody.find('.btn-more-activities')
|
|
||||||
.on('ajax:success', function(e, data) {
|
|
||||||
$(data.html).insertBefore($(this).parents('li'));
|
|
||||||
if(data.more_url) {
|
|
||||||
$(this).attr('href', data.more_url);
|
|
||||||
} else {
|
|
||||||
$(this).remove();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
notificationAlertClose();
|
|
||||||
|
|
||||||
$('#main-menu .btn-activity')
|
|
||||||
.on('ajax:before', function() {
|
|
||||||
activityModal.modal('show');
|
|
||||||
})
|
|
||||||
.on('ajax:success', function(e, data) {
|
|
||||||
activityModalBody.html(data.html);
|
|
||||||
initMoreBtn();
|
|
||||||
});
|
|
||||||
|
|
||||||
activityModal.on('hidden.bs.modal', function() {
|
|
||||||
activityModalBody.html('');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).ajaxComplete(function() {
|
|
||||||
notificationAlertClose();
|
|
||||||
});
|
|
||||||
|
|
||||||
function notificationAlertClose() {
|
|
||||||
$('#notifications .alert').on('closed.bs.alert', function() {
|
|
||||||
$('#content-wrapper')
|
|
||||||
.addClass('alert-hidden')
|
|
||||||
.removeClass('alert-shown');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// init
|
// init
|
||||||
loadDropdownNotifications();
|
loadDropdownNotifications();
|
||||||
loadUnseenNotificationsNumber();
|
loadUnseenNotificationsNumber();
|
||||||
toggleNotificationBellPosition();
|
toggleNotificationBellPosition();
|
||||||
focusSearchInput();
|
focusSearchInput();
|
||||||
initGlobalSwitchForm();
|
initGlobalSwitchForm();
|
||||||
initActivitiesButton();
|
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -1133,6 +1133,10 @@ ul.double-line > li {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#global-activity-page {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
/** Activity list resembling Bootstrap wells */
|
/** Activity list resembling Bootstrap wells */
|
||||||
ul.content-activities {
|
ul.content-activities {
|
||||||
|
|
||||||
|
|
|
@ -2,15 +2,17 @@ class ActivitiesController < ApplicationController
|
||||||
include ActivityHelper
|
include ActivityHelper
|
||||||
|
|
||||||
def index
|
def index
|
||||||
|
@vars = local_vars
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json do
|
format.json do
|
||||||
render json: {
|
render json: {
|
||||||
more_url: local_vars.fetch(:more_activities_url),
|
more_url: local_vars.fetch(:more_activities_url),
|
||||||
html: render_to_string(
|
html: render_to_string(
|
||||||
partial: 'index.html.erb', locals: local_vars
|
partial: 'list.html.erb', locals: @vars
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
format.html
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<li class="activity-item">
|
<li class="activity-item">
|
||||||
<span class="activity-item-date">
|
<span class="activity-item-date">
|
||||||
<%= l activity.created_at, format: '%H:%M' %>
|
<%= l activity.created_at, format: :full %>
|
||||||
</span>
|
</span>
|
||||||
<span class="activity-item-text">
|
<span class="activity-item-text">
|
||||||
<%= activity_truncate(activity.message) %>
|
<%= activity_truncate(activity.message) %>
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
<ul class="no-style double-line content-activities">
|
|
||||||
<% if activities.empty? %>
|
|
||||||
<li><em><%= t'activities.index.no_activities' %></em></li>
|
|
||||||
<% else %>
|
|
||||||
<%= render 'activities/list.html.erb',
|
|
||||||
activities: activities,
|
|
||||||
previous_activity_created_at: previous_activity_created_at %>
|
|
||||||
<% end %>
|
|
||||||
<% if more_activities_url.present? && page == 1 %>
|
|
||||||
<li class="text-center">
|
|
||||||
<a class="btn btn-default btn-more-activities"
|
|
||||||
href="<%= more_activities_url %>"
|
|
||||||
data-remote="true">
|
|
||||||
<%= t'activities.index.more_activities' %></a>
|
|
||||||
</li>
|
|
||||||
<% end %>
|
|
||||||
</ul>
|
|
|
@ -1,26 +1,3 @@
|
||||||
<% if activities.first_page? %>
|
|
||||||
<% if activities.first.created_at.to_date == Date.today %>
|
|
||||||
<li class="text-center activity-date-item">
|
|
||||||
<span class="label label-primary">
|
|
||||||
<%=t "activities.index.today" %>
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<% else %>
|
|
||||||
<li class="text-center activity-date-item">
|
|
||||||
<span class="label label-primary">
|
|
||||||
<%= activities.first.created_at.strftime('%d.%m.%Y') %>
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<% end %>
|
|
||||||
<% end %>
|
|
||||||
<% activities.each_with_index do |activity, index| %>
|
<% activities.each_with_index do |activity, index| %>
|
||||||
<% prevDate = calculate_previous_date(activities, index, previous_activity_created_at) %>
|
<%= render 'activity.html.erb', activity: activity %>
|
||||||
<% if activity.created_at.to_date < prevDate %>
|
|
||||||
<li class="text-center activity-date-item">
|
|
||||||
<span class="label label-primary">
|
|
||||||
<%= activity.created_at.strftime('%d.%m.%Y') %>
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<% end %>
|
|
||||||
<%= render 'activities/activity.html.erb', activity: activity %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
25
app/views/activities/index.html.erb
Normal file
25
app/views/activities/index.html.erb
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<% provide :head_title, t('nav.label.activities') %>
|
||||||
|
|
||||||
|
<div class="container" id="global-activity-page">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<ul id="list-activities" class="no-style content-activities content-module-activities">
|
||||||
|
<% if @vars[:activities].empty? %>
|
||||||
|
<li><em><%= t'activities.index.no_activities' %></em></li>
|
||||||
|
<% else %>
|
||||||
|
<% @vars[:activities].each do |activity| %>
|
||||||
|
<%= render 'activity.html.erb', activity: activity %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<% if @vars[:more_activities_url].present? && @vars[:page] == 1 %>
|
||||||
|
<div class="text-center">
|
||||||
|
<a class="btn btn-default btn-more-activities"
|
||||||
|
href="<%= @vars[:more_activities_url] %>"
|
||||||
|
data-remote="true">
|
||||||
|
<%= t'activities.index.more_activities' %></a>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<%= javascript_include_tag 'activities/index.js' %>
|
|
@ -73,7 +73,7 @@
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<li>
|
<li>
|
||||||
<a class="btn-activity" title="<%= t('nav.label.activities') %>" href="<%= activities_path(format: :json) %>" role="button" data-remote="true">
|
<a class="btn-activity" title="<%= t('nav.label.activities') %>" href="<%= activities_path %>" role="button">
|
||||||
<span class="glyphicon glyphicon-equalizer"></span>
|
<span class="glyphicon glyphicon-equalizer"></span>
|
||||||
<span class="visible-xs-inline visible-sm-inline"><%= t('nav.label.activities') %></span>
|
<span class="visible-xs-inline visible-sm-inline"><%= t('nav.label.activities') %></span>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -82,6 +82,7 @@ Rails.application.config.assets.precompile +=
|
||||||
%w(repositories/repository_datatable.js)
|
%w(repositories/repository_datatable.js)
|
||||||
Rails.application.config.assets.precompile +=
|
Rails.application.config.assets.precompile +=
|
||||||
%w(repositories/my_module_repository.js)
|
%w(repositories/my_module_repository.js)
|
||||||
|
Rails.application.config.assets.precompile += %w(activities/index.js)
|
||||||
|
|
||||||
# Libraries needed for Handsontable formulas
|
# Libraries needed for Handsontable formulas
|
||||||
Rails.application.config.assets.precompile += %w(lodash.js)
|
Rails.application.config.assets.precompile += %w(lodash.js)
|
||||||
|
|
Loading…
Reference in a new issue