SpeciesFileGroup/taxonworks

View on GitHub
app/controllers/labels_controller.rb

Summary

Maintainability
A
45 mins
Test Coverage
class LabelsController < ApplicationController
  include DataControllerConfiguration::ProjectDataControllerConfiguration

  before_action :set_label, only: [:show, :edit, :update, :destroy]

  # GET /labels
  # GET /labels.json
  def index
    respond_to do |format|
      format.html do
        @recent_objects = Label.recent_from_project_id(sessions_current_project_id).order(updated_at: :desc).limit(10)
        render '/shared/data/all/index'
      end
      format.json {
        @labels = Label.where(filter_params)
        .with_project_id(sessions_current_project_id)
        .page(params[:page])
        .per(params[:per])
      }
    end
  end

  # GET /labels/1
  # GET /labels/1.json
  def show
  end

  # GET /labels/new
  def new
    @label = Label.new
  end

  # GET /labels/1/edit
  def edit
  end

  def list
    @labels = Label.where(project_id: sessions_current_project_id).page(params[:page])
  end

  # POST /labels
  # POST /labels.json
  def create
    @label = Label.new(label_params)

    respond_to do |format|
      if @label.save
        format.html { redirect_to @label, notice: 'Label was successfully created.' }
        format.json { render :show, status: :created, location: @label.metamorphosize }
      else
        format.html { render :new }
        format.json { render json: @label.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /labels/1
  # PATCH/PUT /labels/1.json
  def update
    respond_to do |format|
      if @label.update(label_params)
        format.html { redirect_to @label, notice: 'Label was successfully updated.' }
        format.json { render :show, status: :ok, location: @label.metamorphosize }
      else
        format.html { render :edit }
        format.json { render json: @label.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /labels/1
  # DELETE /labels/1.json
  def destroy
    @label.destroy
    respond_to do |format|
      format.html { redirect_to labels_url, notice: 'Label was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private

  def set_label
    @label = Label.where(project_id: sessions_current_project_id).find(params[:id])
  end

  def filter_params
    params.permit(:label_object_id, :label_object_type)
  end

  def label_params
    params.require(:label).permit(
      :text, :total, :style, :is_copy_edited, :is_printed, :type,
      :label_object_id, :label_object_type,
      :annotated_global_entity
    )
  end
end