<commit_before>class MapsController < ApplicationController
  
  before_filter :require_user, only: [:new, :create, :edit, :update, :savelayout]
    
  respond_to :html, :js, :json
  
  autocomplete :map, :name, :full => true, :extra_data => [:user_id]
  
  # GET /maps
  # or GET /users/:user_id/maps
  def index
    
    @current = current_user
    
    if params[:user_id]
      @user = User.find(params[:user_id])
      @maps = Map.order("name ASC").visibleToUser(@current, @user)
    elsif 
      @maps = Map.order("name ASC").visibleToUser(@current, nil)
    end
    
	  respond_with(@maps,@user)
  end
  
  # GET maps/new
  def new
  	@map = Map.new
    @user = current_user
    
    respond_with(@map)
  end
  
  # GET maps/:id
  def show
  	
	  @current = current_user
	  @map = Map.find(params[:id]).authorize_to_show(@current)
	
	  if not @map
	    redirect_to root_url and return
	  end
		
	  @mapjson = @map.self_as_json(@current).html_safe
	
	  respond_to do |format|
      format.html { respond_with(@map, @user) }
      format.json { respond_with(@mapjson) }
    end
  end
  
  # POST maps
  def create
    
    @user = current_user
	  @map = Map.new()
    @map.name = params[:map][:name]
    @map.desc = params[:map][:desc]
    @map.permission = params[:map][:permission]
    @map.user = @user
    @map.arranged = false    
    @map.save    
	  
    if params[:map][:topicsToMap]
		  @all = params[:map][:topicsToMap]
  		@all = @all.split(',')
		  @all.each do |topic|
			  topic = topic.split('/')
			  @mapping = Mapping.new()
        @mapping.category = "Topic"
        @mapping.user = @user
        @mapping.map  = @map
        @mapping.topic = Topic.find(topic[0])
        @mapping.xloc = topic[1]
        @mapping.yloc = topic[2]
        @mapping.save
		  end
		  @map.arranged = true
      @map.save
      respond_to do |format|
        format.js { respond_with(@map) }
      end
    else
      respond_to do |format|
        format.html { respond_with(@user, location: map_path(@map)) }
      end
	  end	
  end
  
  # GET maps/:id/edit
  def edit
	  @current = current_user
	  @map = Map.find(params[:id]).authorize_to_edit(@current)
	
	  if not @map
	    redirect_to root_url and return
	  end
	
	  @outtopics = @map.topics.order("name ASC").delete_if{|topic| not topic.authorize_to_view(@current)}
  
	  respond_with(@user, @map, @outtopics)
  end
  
  # PUT maps/:id
  def update
	  @map = Map.find(params[:id])
    
	  @map.attributes = params[:map]
	  @map.save<commit_msg>changed maps controller so it accepts synapses as a csv list<commit_after>class MapsController < ApplicationController
  
  before_filter :require_user, only: [:new, :create, :edit, :update, :savelayout]
    
  respond_to :html, :js, :json
  
  autocomplete :map, :name, :full => true, :extra_data => [:user_id]
  
  # GET /maps
  # or GET /users/:user_id/maps
  def index
    
    @current = current_user
    
    if params[:user_id]
      @user = User.find(params[:user_id])
      @maps = Map.order("name ASC").visibleToUser(@current, @user)
    elsif 
      @maps = Map.order("name ASC").visibleToUser(@current, nil)
    end
    
	  respond_with(@maps,@user)
  end
  
  # GET maps/new
  def new
  	@map = Map.new
    @user = current_user
    
    respond_with(@map)
  end
  
  # GET maps/:id
  def show
  	
	  @current = current_user
	  @map = Map.find(params[:id]).authorize_to_show(@current)
	
	  if not @map
	    redirect_to root_url and return
	  end
		
	  @mapjson = @map.self_as_json(@current).html_safe
	
	  respond_to do |format|
      format.html { respond_with(@map, @user) }
      format.json { respond_with(@mapjson) }
    end
  end
  
  # POST maps
  def create
    
    @user = current_user
    @map = Map.new()
    @map.name = params[:map][:name]
    @map.desc = params[:map][:desc]
    @map.permission = params[:map][:permission]
    @map.user = @user
    @map.arranged = false    
    @map.save    
	  
    if params[:map][:topicsToMap]
      @all = params[:map][:topicsToMap]
      @all = @all.split(',')
      @all.each do |topic|
        topic = topic.split('/')
        @mapping = Mapping.new()
        @mapping.category = "Topic"
        @mapping.user = @user
        @mapping.map  = @map
        @mapping.topic = Topic.find(topic[0])
        @mapping.xloc = topic[1]
        @mapping.yloc = topic[2]
        @mapping.save
      end

      if params[:map][:synapsesToMap]
        @synAll = params[:map][:synapsesToMap]
        @synAll = @synAll.split(',')
        @synAll.each do |synapse|
          @mapping = Mapping.new()
          @mapping.category = "Synapse"
          @mapping.user = @user
          @mapping.map = @map
          @mapping.synapse = Synapse.find(synapse[0])
          @mapping.save
        end
      end

      @map.arranged = true
      @map.save
      respond_to do |format|
        format.js { respond_with(@map) }
      end
    else
      respond_to do |format|
        format.html { respond_with(@user, location: map_path(@map)) }
      end
    end	
  end
  
  # GET maps/:id/edit
  def edit
	  @current = current_user
	  @map = Map.find(params[:id]).authorize_to_edit(@current)
	
	  if not @map
	    redirect_to root_url and return
	  end
	
	  @outtopics = @map.topics.order("name ASC").delete_if{|topic| not topic.authorize_to_view(@current)}
  
	  respond_with(@user, @map, @outtopics)
  end
  
  # PUT maps/:id
  def update
	  @map = Map.find(params[:id])
    
	  @map.attributes = params[:map]
	  @map.save
{'fraction_non_alphanumeric': 0.1358814923189466, 'fraction_numerical': 0.001280175566934894, 'mean_word_length': 2.4117280099812852, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4991630', 'n_tokens_mistral': 2005, 'n_tokens_neox': 1920, 'n_words': 401}