mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 14:45:56 +08:00
Merge pull request #4643 from artoscinote/ma_SCI_7206
Add exposed IDs to recent work [SCI-7206]
This commit is contained in:
commit
eaf9017def
|
@ -5,11 +5,18 @@ var DasboardRecentWorkWidget = (function() {
|
||||||
function renderRecentWorkItem(data, container) {
|
function renderRecentWorkItem(data, container) {
|
||||||
$.each(data, (i, item) => {
|
$.each(data, (i, item) => {
|
||||||
var recentWorkItem = $($('#recent-work-item-template').html());
|
var recentWorkItem = $($('#recent-work-item-template').html());
|
||||||
|
var recentWorkItemType = recentWorkItem.find('.object-type span');
|
||||||
recentWorkItem.attr('href', item.url);
|
recentWorkItem.attr('href', item.url);
|
||||||
recentWorkItem.find('.object-name').html(item.name);
|
recentWorkItem.find('.object-name').html(item.name);
|
||||||
recentWorkItem.find('.object-type').html(I18n.t('dashboard.recent_work.subject_type.' + item.subject_type));
|
recentWorkItemType.html(item.code || item.type);
|
||||||
recentWorkItem.find('.object-changed').html(item.last_change);
|
recentWorkItem.find('.object-changed').html(item.last_change);
|
||||||
container.append(recentWorkItem);
|
container.append(recentWorkItem);
|
||||||
|
|
||||||
|
if (item.code) {
|
||||||
|
recentWorkItemType.attr('data-toggle', 'tooltip');
|
||||||
|
recentWorkItemType.attr('title', `${item.type} ID: ${item.code}`);
|
||||||
|
recentWorkItemType.tooltip();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -93,10 +93,11 @@ module Dashboard
|
||||||
|
|
||||||
ordered_query = Activity.from("(#{query.to_sql}) AS activities").where.not(group_id: nil)
|
ordered_query = Activity.from("(#{query.to_sql}) AS activities").where.not(group_id: nil)
|
||||||
.select(:group_id,
|
.select(:group_id,
|
||||||
|
:subject_id,
|
||||||
:name,
|
:name,
|
||||||
'MAX(last_change) AS last_change',
|
'MAX(last_change) AS last_change',
|
||||||
'MAX(report_project_id) AS report_project_id')
|
'MAX(report_project_id) AS report_project_id')
|
||||||
.group(:group_id, :name)
|
.group(:group_id, :subject_id, :name)
|
||||||
.order('MAX(last_change) DESC').limit(Constants::SEARCH_LIMIT)
|
.order('MAX(last_change) DESC').limit(Constants::SEARCH_LIMIT)
|
||||||
|
|
||||||
query_filter = "(group_id LIKE 'tsk%' OR group_id LIKE 'exp%' OR group_id LIKE 'pro%')" if @mode == 'projects'
|
query_filter = "(group_id LIKE 'tsk%' OR group_id LIKE 'exp%' OR group_id LIKE 'pro%')" if @mode == 'projects'
|
||||||
|
@ -106,6 +107,7 @@ module Dashboard
|
||||||
ordered_query = ordered_query.where(query_filter) unless @mode == 'all'
|
ordered_query = ordered_query.where(query_filter) unless @mode == 'all'
|
||||||
|
|
||||||
recent_objects = ordered_query.as_json.map do |recent_object|
|
recent_objects = ordered_query.as_json.map do |recent_object|
|
||||||
|
object_class = override_subject_type(recent_object).constantize
|
||||||
recent_object.deep_symbolize_keys!
|
recent_object.deep_symbolize_keys!
|
||||||
recent_object.delete_if { |_k, v| v.nil? }
|
recent_object.delete_if { |_k, v| v.nil? }
|
||||||
|
|
||||||
|
@ -115,6 +117,10 @@ module Dashboard
|
||||||
)
|
)
|
||||||
recent_object[:subject_type] = override_subject_type(recent_object)
|
recent_object[:subject_type] = override_subject_type(recent_object)
|
||||||
recent_object[:name] = escape_input(recent_object[:name])
|
recent_object[:name] = escape_input(recent_object[:name])
|
||||||
|
recent_object[:type] = I18n.t("activerecord.models.#{object_class.name.underscore}")
|
||||||
|
if object_class.include?(PrefixedIdModel)
|
||||||
|
recent_object[:code] = object_class::ID_PREFIX + recent_object[:subject_id].to_s
|
||||||
|
end
|
||||||
recent_object[:url] = generate_url(recent_object)
|
recent_object[:url] = generate_url(recent_object)
|
||||||
recent_object
|
recent_object
|
||||||
end
|
end
|
||||||
|
@ -231,7 +237,7 @@ module Dashboard
|
||||||
end
|
end
|
||||||
|
|
||||||
def generate_url(recent_object)
|
def generate_url(recent_object)
|
||||||
object_id = recent_object[:group_id].gsub(/[^0-9]/, '')
|
object_id = recent_object.with_indifferent_access[:group_id].gsub(/[^0-9]/, '')
|
||||||
|
|
||||||
case recent_object[:subject_type]
|
case recent_object[:subject_type]
|
||||||
when 'MyModule'
|
when 'MyModule'
|
||||||
|
@ -250,17 +256,19 @@ module Dashboard
|
||||||
end
|
end
|
||||||
|
|
||||||
def override_subject_type(recent_object)
|
def override_subject_type(recent_object)
|
||||||
if recent_object[:group_id].include?('pro')
|
group_id = recent_object.with_indifferent_access[:group_id]
|
||||||
|
|
||||||
|
if group_id.include?('pro')
|
||||||
'Project'
|
'Project'
|
||||||
elsif recent_object[:group_id].include?('exp')
|
elsif group_id.include?('exp')
|
||||||
'Experiment'
|
'Experiment'
|
||||||
elsif recent_object[:group_id].include?('tsk')
|
elsif group_id.include?('tsk')
|
||||||
'MyModule'
|
'MyModule'
|
||||||
elsif recent_object[:group_id].include?('prt')
|
elsif group_id.include?('prt')
|
||||||
'Protocol'
|
'Protocol'
|
||||||
elsif recent_object[:group_id].include?('inv')
|
elsif group_id.include?('inv')
|
||||||
'RepositoryBase'
|
'RepositoryBase'
|
||||||
elsif recent_object[:group_id].include?('rpt')
|
elsif group_id.include?('rpt')
|
||||||
'Report'
|
'Report'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<template id="recent-work-item-template">
|
<template id="recent-work-item-template">
|
||||||
<a href="" class="recent-work-item">
|
<a href="" class="recent-work-item">
|
||||||
<div class="object-name"></div>
|
<div class="object-name"></div>
|
||||||
<div class="object-type"></div>
|
<div class="object-type"><span data-placement="bottom"></span></div>
|
||||||
<div class="object-changed"></div>
|
<div class="object-changed"></div>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -106,6 +106,10 @@ en:
|
||||||
project: "Project"
|
project: "Project"
|
||||||
my_module: "Task"
|
my_module: "Task"
|
||||||
experiment: "Experiment"
|
experiment: "Experiment"
|
||||||
|
repository: "Inventory"
|
||||||
|
repository_base: "Inventory"
|
||||||
|
protocol: "Protocol"
|
||||||
|
report: "Report"
|
||||||
errors:
|
errors:
|
||||||
models:
|
models:
|
||||||
project:
|
project:
|
||||||
|
|
Loading…
Reference in a new issue