Sha256: a614238d568951517f6eea59b20eb4a96863ada8ba9b747f4f8b173453c89dd0

Contents?: true

Size: 1.99 KB

Versions: 2

Compression:

Stored size: 1.99 KB

Contents

# frozen_string_literal: true

require_relative '../ui/main_screen'
require_relative '../data_base/students_list_db'
require_relative '../models/data_list/data_list_short'
require_relative '../event/event_manager'
require_relative '../event/event_update_students_table'
require_relative '../event/event_update_students_count'
require_relative 'student_input_form_controller'
require_relative 'student_input_form_controller_edit'

class TabStudentsController
  def initialize(view, student_per_page)
    @view = view
    @data_list = DataListStudentShort.new(list: [])
    @student_per_page = student_per_page
    @current_page = 1
  end

  def show_view
    @view.create.show
  end

  def show_modal_add
    controller = StudentInputFormControllerCreate.new(self)
    view = StudentInputForm.new(controller,self)
    controller.set_view(view)
    view.create.show
  end

  def show_modal_edit(selected_row)
    student_num = (@current_page - 1) * @student_per_page + selected_row
    student_id = @data_list.get_id_by_index(student_num)
    controller = StudentInputFormControllerEdit.new(self, student_id)
    view = StudentInputForm.new(controller, self)
    controller.set_view(view)
    view.create.show
  end

  def delete_selected(selected_row)
    begin
      student_num = (@current_page - 1) * @student_per_page + selected_row
      student_id = @data_list.get_id_by_index(student_num)
      StudentsListDB.remove_student(student_id)
    rescue
      on_db_conn_error
    end
  end


  def refresh_data
    StudentsListDB.get_students_slice(@current_page, @student_per_page, @data_list)
    EventManager.notify(EventUpdateStudentsCount.new(StudentsListDB.count))
  end

  def get_page
    @current_page
  end

  def next_page(is_left)
    if is_left
      @current_page = [@current_page - 1, 1].max
    else
      @current_page = [@current_page + 1, (@total_count / STUDENTS_PER_PAGE.to_f).ceil].min
    end
    @controller.refresh_data(@current_page)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rybish_code-2.0.0 lib/source/controllers/tab_students_controller.rb
rybish_code-1.1.6 lib/source/controllers/tab_students_controller.rb