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
|
||||
loadDropdownNotifications();
|
||||
loadUnseenNotificationsNumber();
|
||||
toggleNotificationBellPosition();
|
||||
focusSearchInput();
|
||||
initGlobalSwitchForm();
|
||||
initActivitiesButton();
|
||||
})();
|
||||
|
|
|
@ -1133,6 +1133,10 @@ ul.double-line > li {
|
|||
}
|
||||
}
|
||||
|
||||
#global-activity-page {
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
/** Activity list resembling Bootstrap wells */
|
||||
ul.content-activities {
|
||||
|
||||
|
|
|
@ -2,15 +2,17 @@ class ActivitiesController < ApplicationController
|
|||
include ActivityHelper
|
||||
|
||||
def index
|
||||
@vars = local_vars
|
||||
respond_to do |format|
|
||||
format.json do
|
||||
render json: {
|
||||
more_url: local_vars.fetch(:more_activities_url),
|
||||
html: render_to_string(
|
||||
partial: 'index.html.erb', locals: local_vars
|
||||
partial: 'list.html.erb', locals: @vars
|
||||
)
|
||||
}
|
||||
end
|
||||
format.html
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<li class="activity-item">
|
||||
<span class="activity-item-date">
|
||||
<%= l activity.created_at, format: '%H:%M' %>
|
||||
<%= l activity.created_at, format: :full %>
|
||||
</span>
|
||||
<span class="activity-item-text">
|
||||
<%= 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| %>
|
||||
<% prevDate = calculate_previous_date(activities, index, previous_activity_created_at) %>
|
||||
<% 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 %>
|
||||
<%= render 'activity.html.erb', activity: activity %>
|
||||
<% 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>
|
||||
<% end %>
|
||||
<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="visible-xs-inline visible-sm-inline"><%= t('nav.label.activities') %></span>
|
||||
</a>
|
||||
|
|
|
@ -82,6 +82,7 @@ Rails.application.config.assets.precompile +=
|
|||
%w(repositories/repository_datatable.js)
|
||||
Rails.application.config.assets.precompile +=
|
||||
%w(repositories/my_module_repository.js)
|
||||
Rails.application.config.assets.precompile += %w(activities/index.js)
|
||||
|
||||
# Libraries needed for Handsontable formulas
|
||||
Rails.application.config.assets.precompile += %w(lodash.js)
|
||||
|
|
Loading…
Reference in a new issue