mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-12-27 10:14:17 +08:00
120 lines
3.3 KiB
Ruby
120 lines
3.3 KiB
Ruby
class AtWhoController < ApplicationController
|
|
include InputSanitizeHelper
|
|
|
|
before_action :load_vars
|
|
before_action :check_users_permissions
|
|
|
|
def users
|
|
users = @team.search_users(@query).limit(Constants::ATWHO_SEARCH_LIMIT + 1)
|
|
respond_to do |format|
|
|
format.json do
|
|
render json: {
|
|
users: [render_to_string(partial: 'shared/smart_annotation/users.html.erb', locals: {users: users})],
|
|
status: :ok
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
def menu_items
|
|
res = SmartAnnotation.new(current_user, current_team, @query)
|
|
|
|
respond_to do |format|
|
|
format.json do
|
|
render json: {
|
|
prj: res.projects,
|
|
exp: res.experiments,
|
|
tsk: res.my_modules,
|
|
sam: res.samples,
|
|
status: :ok
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
def rep_items
|
|
repository = Repository.find_by_id(params[:repository_id]) || Repository.active.accessible_by_teams(@team).first
|
|
items =
|
|
if repository && can_read_repository?(repository)
|
|
SmartAnnotation.new(current_user, current_team, @query)
|
|
.repository_rows(repository)
|
|
else
|
|
[]
|
|
end
|
|
respond_to do |format|
|
|
format.json do
|
|
render json: {
|
|
res: [render_to_string(partial: 'shared/smart_annotation/repository_items.html.erb', locals: {
|
|
repository_rows: items
|
|
})],
|
|
repository: repository.id,
|
|
team: current_team.id,
|
|
status: :ok
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
def menu
|
|
repositories = Repository.active.accessible_by_teams(@team)
|
|
render json: { html: render_to_string({ partial: "shared/smart_annotation/menu.html.erb",
|
|
locals: { repositories: repositories } }) }
|
|
end
|
|
|
|
def projects
|
|
res = SmartAnnotation.new(current_user, current_team, @query)
|
|
respond_to do |format|
|
|
format.json do
|
|
render json: {
|
|
res: [render_to_string(partial: 'shared/smart_annotation/project_items.html.erb', locals: {
|
|
projects: res.projects
|
|
})],
|
|
team: current_team.id,
|
|
status: :ok
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
def experiments
|
|
res = SmartAnnotation.new(current_user, current_team, @query)
|
|
respond_to do |format|
|
|
format.json do
|
|
render json: {
|
|
res: [render_to_string(partial: 'shared/smart_annotation/experiment_items.html.erb', locals: {
|
|
experiments: res.experiments
|
|
})],
|
|
team: current_team.id,
|
|
status: :ok
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
def my_modules
|
|
res = SmartAnnotation.new(current_user, current_team, @query)
|
|
respond_to do |format|
|
|
format.json do
|
|
render json: {
|
|
res: [render_to_string(partial: 'shared/smart_annotation/my_module_items.html.erb', locals: {
|
|
my_modules: res.my_modules
|
|
})],
|
|
team: current_team.id,
|
|
status: :ok
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def load_vars
|
|
@team = Team.find_by_id(params[:id])
|
|
@query = params[:query]
|
|
render_404 unless @team
|
|
end
|
|
|
|
def check_users_permissions
|
|
render_403 unless can_read_team?(@team)
|
|
end
|
|
end
|