mirror of
				https://github.com/scinote-eln/scinote-web.git
				synced 2025-10-31 16:49:40 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			119 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			119 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,
 | |
|           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
 |