diff --git a/app/assets/javascripts/repository_columns/columns_initializers/checkbox_column_type.js b/app/assets/javascripts/repository_columns/columns_initializers/checklist_column_type.js similarity index 74% rename from app/assets/javascripts/repository_columns/columns_initializers/checkbox_column_type.js rename to app/assets/javascripts/repository_columns/columns_initializers/checklist_column_type.js index 5aad4bfb7..a1f122eb4 100644 --- a/app/assets/javascripts/repository_columns/columns_initializers/checkbox_column_type.js +++ b/app/assets/javascripts/repository_columns/columns_initializers/checklist_column_type.js @@ -1,13 +1,13 @@ /* global GLOBAL_CONSTANTS dropdownSelector RepositoryListColumnType */ -var RepositoryCheckboxColumnType = (function() { +var RepositoryChecklistColumnType = (function() { var manageModal = '#manage-repository-column'; - var delimiterDropdown = '.checkbox-column-type .delimiter'; - var itemsTextarea = '.checkbox-column-type .items-textarea'; - var previewContainer = '.checkbox-column-type .dropdown-preview'; - var dropdownOptions = '.checkbox-column-type .dropdown-options'; + var delimiterDropdown = '.checklist-column-type .delimiter'; + var itemsTextarea = '.checklist-column-type .items-textarea'; + var previewContainer = '.checklist-column-type .dropdown-preview'; + var dropdownOptions = '.checklist-column-type .dropdown-options'; - function initCheckboxDropdown() { + function initChecklistDropdown() { dropdownSelector.init(previewContainer + ' .preview-select', { noEmptyOption: true, optionClass: 'checkbox-icon', @@ -22,7 +22,7 @@ var RepositoryCheckboxColumnType = (function() { $manageModal .on('show.bs.modal', function() { - setTimeout(() => { initCheckboxDropdown(); }, 200); + setTimeout(() => { initChecklistDropdown(); }, 200); }) .on('change keyup paste', itemsTextarea, function() { RepositoryListColumnType.refreshPreviewDropdownList( @@ -31,7 +31,7 @@ var RepositoryCheckboxColumnType = (function() { delimiterDropdown, dropdownOptions ); - initCheckboxDropdown(); + initChecklistDropdown(); }) .on('change', delimiterDropdown, function() { RepositoryListColumnType.refreshPreviewDropdownList( @@ -40,16 +40,16 @@ var RepositoryCheckboxColumnType = (function() { delimiterDropdown, dropdownOptions ); - initCheckboxDropdown(); + initChecklistDropdown(); }) - .on('columnModal::partialLoadedForRepositoryCheckboxValue', function() { + .on('columnModal::partialLoadedForRepositoryChecklistValue', function() { RepositoryListColumnType.refreshPreviewDropdownList( previewContainer, itemsTextarea, delimiterDropdown, dropdownOptions ); - initCheckboxDropdown(); + initChecklistDropdown(); }) .on('keyup change', columnNameInput, function() { $manageModal.find(previewContainer).find('.preview-label').html($manageModal.find(columnNameInput).val()); @@ -68,7 +68,7 @@ var RepositoryCheckboxColumnType = (function() { loadParams: () => { var repositoryColumnParams = {}; var options = JSON.parse($(dropdownOptions).val()); - repositoryColumnParams.repository_checkbox_items_attributes = options; + repositoryColumnParams.repository_checklist_items_attributes = options; repositoryColumnParams.delimiter = $(delimiterDropdown).data('used-delimiter'); return repositoryColumnParams; } diff --git a/app/assets/javascripts/repository_columns/index.js b/app/assets/javascripts/repository_columns/index.js index ddd113388..7f6075f33 100644 --- a/app/assets/javascripts/repository_columns/index.js +++ b/app/assets/javascripts/repository_columns/index.js @@ -8,7 +8,7 @@ var RepositoryColumns = (function() { RepositoryDateValue: 'RepositoryDateColumnType', RepositoryDateTimeValue: 'RepositoryDateTimeColumnType', RepositoryTimeValue: 'RepositoryDateTimeColumnType', - RepositoryCheckboxValue: 'RepositoryCheckboxColumnType' + RepositoryChecklistValue: 'RepositoryChecklistColumnType' }; function initColumnTypeSelector() { @@ -204,7 +204,7 @@ var RepositoryColumns = (function() { initManageColumnModal(); RepositoryListColumnType.init(); RepositoryStatusColumnType.init(); - RepositoryCheckboxColumnType.init(); + RepositoryChecklistColumnType.init(); } } }; diff --git a/app/controllers/repository_columns/checkbox_columns_controller.rb b/app/controllers/repository_columns/checklist_columns_controller.rb similarity index 89% rename from app/controllers/repository_columns/checkbox_columns_controller.rb rename to app/controllers/repository_columns/checklist_columns_controller.rb index 1be203251..9d80437d2 100644 --- a/app/controllers/repository_columns/checkbox_columns_controller.rb +++ b/app/controllers/repository_columns/checklist_columns_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module RepositoryColumns - class CheckboxColumnsController < BaseColumnsController + class ChecklistColumnsController < BaseColumnsController before_action :load_column, only: %i(update destroy) before_action :check_create_permissions, only: :create before_action :check_manage_permissions, only: %i(update destroy) @@ -10,7 +10,7 @@ module RepositoryColumns def create service = RepositoryColumns::CreateColumnService .call(user: current_user, repository: @repository, team: current_team, - column_type: Extends::REPOSITORY_DATA_TYPES[:RepositoryCheckboxValue], + column_type: Extends::REPOSITORY_DATA_TYPES[:RepositoryChecklistValue], params: repository_column_params) if service.succeed? @@ -21,7 +21,7 @@ module RepositoryColumns end def update - service = RepositoryColumns::UpdateCheckboxColumnService + service = RepositoryColumns::UpdateChecklistColumnService .call(user: current_user, team: current_team, column: @repository_column, @@ -48,7 +48,7 @@ module RepositoryColumns private def repository_column_params - params.require(:repository_column).permit(:name, :delimiter, repository_checkbox_items_attributes: %i(data)) + params.require(:repository_column).permit(:name, :delimiter, repository_checklist_items_attributes: %i(data)) end def delimiters diff --git a/app/models/repository_cell.rb b/app/models/repository_cell.rb index c0709bfc8..7eda1cc8b 100644 --- a/app/models/repository_cell.rb +++ b/app/models/repository_cell.rb @@ -40,10 +40,10 @@ class RepositoryCell < ApplicationRecord end), optional: true, foreign_key: :value_id, inverse_of: :repository_cell - belongs_to :repository_checkbox_value, + belongs_to :repository_checklist_value, (lambda do includes(:repository_cell) - .where(repository_cells: { value_type: 'RepositoryCheckboxValue' }) + .where(repository_cells: { value_type: 'RepositoryChecklistValue' }) end), optional: true, foreign_key: :value_id, inverse_of: :repository_cell diff --git a/app/models/repository_checkbox_value.rb b/app/models/repository_checkbox_value.rb deleted file mode 100644 index 521dc12f9..000000000 --- a/app/models/repository_checkbox_value.rb +++ /dev/null @@ -1,22 +0,0 @@ -# frozen_string_literal: true - -class RepositoryCheckboxValue < ApplicationRecord - belongs_to :created_by, foreign_key: 'created_by_id', class_name: 'User', - inverse_of: :created_repository_checkbox_values - belongs_to :last_modified_by, foreign_key: 'last_modified_by_id', class_name: 'User', - inverse_of: :modified_repository_checkbox_values - has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value - accepts_nested_attributes_for :repository_cell - - SORTABLE_COLUMN_NAME = 'repository_checkboxes_items' - SORTABLE_VALUE_INCLUDE = { repository_checkbox_value: :repository_checkbox_items }.freeze - - def formatted - data - end - - def data - repository_cell.repository_column.repository_checkbox_items - .where(id: repository_checkboxes_items).select(:id, :data) - end -end diff --git a/app/models/repository_checkbox_item.rb b/app/models/repository_checklist_item.rb similarity index 76% rename from app/models/repository_checkbox_item.rb rename to app/models/repository_checklist_item.rb index 1e118c40d..10f54bb7a 100644 --- a/app/models/repository_checkbox_item.rb +++ b/app/models/repository_checklist_item.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class RepositoryCheckboxItem < ApplicationRecord +class RepositoryChecklistItem < ApplicationRecord validates :data, presence: true, uniqueness: { scope: :repository_column_id, case_sensitive: false }, length: { minimum: Constants::NAME_MIN_LENGTH, @@ -8,7 +8,7 @@ class RepositoryCheckboxItem < ApplicationRecord belongs_to :repository, inverse_of: :repository_checklist_items belongs_to :repository_column belongs_to :created_by, foreign_key: 'created_by_id', class_name: 'User', - inverse_of: :created_repository_checkbox_types + inverse_of: :created_repository_checklist_types belongs_to :last_modified_by, foreign_key: 'last_modified_by_id', class_name: 'User', - inverse_of: :modified_repository_checkbox_types + inverse_of: :modified_repository_checklist_types end diff --git a/app/models/repository_checklist_value.rb b/app/models/repository_checklist_value.rb new file mode 100644 index 000000000..e3ce522c6 --- /dev/null +++ b/app/models/repository_checklist_value.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class RepositoryChecklistValue < ApplicationRecord + belongs_to :created_by, foreign_key: 'created_by_id', class_name: 'User', + inverse_of: :created_repository_checklist_values + belongs_to :last_modified_by, foreign_key: 'last_modified_by_id', class_name: 'User', + inverse_of: :modified_repository_checklist_values + has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value + accepts_nested_attributes_for :repository_cell + + SORTABLE_COLUMN_NAME = 'repository_checklistitems' + SORTABLE_VALUE_INCLUDE = { repository_checklist_value: :repository_checklist_items }.freeze + + def formatted + data + end + + def data + repository_cell.repository_column.repository_checklist_items + .where(id: repository_checklist_items).select(:id, :data) + end +end diff --git a/app/models/repository_column.rb b/app/models/repository_column.rb index 73beb190b..4d469cd74 100644 --- a/app/models/repository_column.rb +++ b/app/models/repository_column.rb @@ -7,11 +7,11 @@ class RepositoryColumn < ApplicationRecord has_many :repository_rows, through: :repository_cells has_many :repository_list_items, dependent: :destroy, index_errors: true has_many :repository_status_items, dependent: :destroy, index_errors: true - has_many :repository_checkbox_items, dependent: :destroy, index_errors: true + has_many :repository_checklist_items, dependent: :destroy, index_errors: true accepts_nested_attributes_for :repository_status_items, allow_destroy: true accepts_nested_attributes_for :repository_list_items, allow_destroy: true - accepts_nested_attributes_for :repository_checkbox_items, allow_destroy: true + accepts_nested_attributes_for :repository_checklist_items, allow_destroy: true enum data_type: Extends::REPOSITORY_DATA_TYPES @@ -27,7 +27,7 @@ class RepositoryColumn < ApplicationRecord scope :list_type, -> { where(data_type: 'RepositoryListValue') } scope :asset_type, -> { where(data_type: 'RepositoryAssetValue') } scope :status_type, -> { where(data_type: 'RepositoryStatusValue') } - scope :checkbox_type, -> { where(data_type: 'RepositoryCheckboxValue') } + scope :checkbox_type, -> { where(data_type: 'RepositoryChecklistValue') } def self.name_like(query) where('repository_columns.name ILIKE ?', "%#{query}%") diff --git a/app/models/user.rb b/app/models/user.rb index 43550925c..e11d35946 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -244,23 +244,23 @@ class User < ApplicationRecord foreign_key: 'last_modified_by_id', inverse_of: :last_modified_by, dependent: :nullify - has_many :created_repository_checkbox_values, - class_name: 'RepositoryCheckboxValue', + has_many :created_repository_checklist_values, + class_name: 'RepositoryChecklistValue', foreign_key: 'created_by_id', inverse_of: :created_by, dependent: :nullify - has_many :modified_repository_checkbox_values, - class_name: 'RepositoryCheckboxValue', + has_many :modified_repository_checklist_values, + class_name: 'RepositoryChecklistValue', foreign_key: 'last_modified_by_id', inverse_of: :last_modified_by, dependent: :nullify - has_many :created_repository_checkbox_types, - class_name: 'RepositoryCheckboxItem', + has_many :created_repository_checklist_types, + class_name: 'RepositoryChecklistItem', foreign_key: 'created_by_id', inverse_of: :created_by, dependent: :nullify - has_many :modified_repository_checkbox_types, - class_name: 'RepositoryCheckboxItem', + has_many :modified_repository_checklist_types, + class_name: 'RepositoryChecklistItem', foreign_key: 'last_modified_by_id', inverse_of: :last_modified_by, dependent: :nullify diff --git a/app/services/repository_columns/create_column_service.rb b/app/services/repository_columns/create_column_service.rb index 1cfa6c03a..cea9f3cb1 100644 --- a/app/services/repository_columns/create_column_service.rb +++ b/app/services/repository_columns/create_column_service.rb @@ -33,7 +33,7 @@ module RepositoryColumns m.merge!(repository_id: @repository.id, created_by_id: @user.id, last_modified_by_id: @user.id) end - @params[:repository_checkbox_items_attributes]&.map do |m| + @params[:repository_checklist_items_attributes]&.map do |m| m.merge!(repository_id: @repository.id, created_by_id: @user.id, last_modified_by_id: @user.id) end diff --git a/app/services/repository_columns/update_checkbox_column_service.rb b/app/services/repository_columns/update_checklist_column_service.rb similarity index 78% rename from app/services/repository_columns/update_checkbox_column_service.rb rename to app/services/repository_columns/update_checklist_column_service.rb index d0e2bfbf5..3c1c332a1 100644 --- a/app/services/repository_columns/update_checkbox_column_service.rb +++ b/app/services/repository_columns/update_checklist_column_service.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module RepositoryColumns - class UpdateCheckboxColumnService < RepositoryColumns::ColumnService + class UpdateChecklistColumnService < RepositoryColumns::ColumnService def initialize(user:, team:, column:, params:) super(user: user, repository: column.repository, team: team, column_name: nil) @column = column @@ -13,7 +13,7 @@ module RepositoryColumns @column.lock! - updating_items_names = @params[:repository_checkbox_items_attributes].to_a.map { |e| e[:data] } + updating_items_names = @params[:repository_checklist_items_attributes].to_a.map { |e| e[:data] } existing_items_names = @column.repository_checkbox_items.pluck(:data) to_be_deleted = existing_items_names - updating_items_names to_be_created = updating_items_names - existing_items_names @@ -21,7 +21,7 @@ module RepositoryColumns if @column.repository_list_items.size - to_be_deleted.size + to_be_created.size >= Constants::REPOSITORY_LIST_ITEMS_PER_COLUMN - @errors[:repository_column] = { repository_checkbox_items: 'too many items' } + @errors[:repository_column] = { repository_checklist_items: 'too many items' } end return self unless valid? @@ -34,7 +34,7 @@ module RepositoryColumns end to_be_created.each do |item| - RepositoryCheckboxItem.create!( + RepositoryChecklistItem.create!( repository: @repository, repository_column: @column, data: item, @@ -43,7 +43,7 @@ module RepositoryColumns ) end rescue ActiveRecord::RecordInvalid => e - @errors[:repository_column] = { repository_checkbox_item: e.message } + @errors[:repository_column] = { repository_checklist_item: e.message } raise ActiveRecord::Rollback end diff --git a/app/views/repository_columns/_manage_column_modal_content.html.erb b/app/views/repository_columns/_manage_column_modal_content.html.erb index d57193e99..054ec5c77 100644 --- a/app/views/repository_columns/_manage_column_modal_content.html.erb +++ b/app/views/repository_columns/_manage_column_modal_content.html.erb @@ -75,17 +75,17 @@ <%= t('libraries.manange_modal_column.select.repository_date_time_value') %> -
- <% columns = ['text', 'asset', 'list', 'status', 'date', 'time', 'datetime', 'checkbox'] %> + <% columns = ['text', 'asset', 'list', 'status', 'date', 'time', 'datetime', 'checklist'] %> <% columns.each do |column| %>