mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-21 07:26:15 +08:00
add validation to dropdown items
This commit is contained in:
parent
23653d1d95
commit
ce52eb851b
|
@ -189,8 +189,16 @@
|
||||||
}).on('ajax:error', function(e, xhr) {
|
}).on('ajax:error', function(e, xhr) {
|
||||||
animateSpinner(null, false);
|
animateSpinner(null, false);
|
||||||
if (modalID) {
|
if (modalID) {
|
||||||
var field = { "name": xhr.responseJSON.message }
|
if(xhr.responseJSON.message.hasOwnProperty('repository_list_items')) {
|
||||||
$(form).renderFormErrors('repository_column', field, true, e);
|
var message = xhr.responseJSON.message['repository_list_items'];
|
||||||
|
$('.dnd-error').remove();
|
||||||
|
$('.bootstrap-tagsinput').after(
|
||||||
|
"<i class='dnd-error'>" + message + "</i>"
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
var field = { "name": xhr.responseJSON.message }
|
||||||
|
$(form).renderFormErrors('repository_column', field, true, e);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
HelperModule.flashAlertMsg(xhr.responseJSON.message, 'danger');
|
HelperModule.flashAlertMsg(xhr.responseJSON.message, 'danger');
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,28 +28,35 @@ class RepositoryColumnsController < ApplicationController
|
||||||
@repository_column.created_by = current_user
|
@repository_column.created_by = current_user
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
if @repository_column.save
|
format.json do
|
||||||
generate_repository_list_items(params[:list_items])
|
if @repository_column.save
|
||||||
format.json do
|
if generate_repository_list_items(params[:list_items])
|
||||||
render json: {
|
render json: {
|
||||||
id: @repository_column.id,
|
id: @repository_column.id,
|
||||||
name: escape_input(@repository_column.name),
|
name: escape_input(@repository_column.name),
|
||||||
message: t('libraries.repository_columns.create.success_flash',
|
message: t('libraries.repository_columns.create.success_flash',
|
||||||
name: @repository_column.name),
|
name: @repository_column.name),
|
||||||
edit_url:
|
edit_url:
|
||||||
edit_repository_repository_column_path(@repository,
|
edit_repository_repository_column_path(@repository,
|
||||||
@repository_column),
|
@repository_column),
|
||||||
update_url:
|
update_url:
|
||||||
repository_repository_column_path(@repository,
|
repository_repository_column_path(@repository,
|
||||||
@repository_column),
|
@repository_column),
|
||||||
destroy_html_url:
|
destroy_html_url:
|
||||||
repository_columns_destroy_html_path(@repository,
|
repository_columns_destroy_html_path(@repository,
|
||||||
@repository_column)
|
@repository_column)
|
||||||
},
|
},
|
||||||
status: :ok
|
status: :ok
|
||||||
end
|
else
|
||||||
else
|
render json: {
|
||||||
format.json do
|
message: {
|
||||||
|
repository_list_items:
|
||||||
|
t('libraries.repository_columns.repository_list_items_limit',
|
||||||
|
limit: Constants::REPOSITORY_LIST_ITEMS_PER_COLUMN)
|
||||||
|
}
|
||||||
|
}, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
else
|
||||||
render json: { message: @repository_column.errors.full_messages },
|
render json: { message: @repository_column.errors.full_messages },
|
||||||
status: :unprocessable_entity
|
status: :unprocessable_entity
|
||||||
end
|
end
|
||||||
|
@ -74,13 +81,22 @@ class RepositoryColumnsController < ApplicationController
|
||||||
format.json do
|
format.json do
|
||||||
@repository_column.update_attributes(repository_column_params)
|
@repository_column.update_attributes(repository_column_params)
|
||||||
if @repository_column.save
|
if @repository_column.save
|
||||||
update_repository_list_items(params[:list_items])
|
if update_repository_list_items(params[:list_items])
|
||||||
render json: {
|
render json: {
|
||||||
id: @repository_column.id,
|
id: @repository_column.id,
|
||||||
name: escape_input(@repository_column.name),
|
name: escape_input(@repository_column.name),
|
||||||
message: t('libraries.repository_columns.update.success_flash',
|
message: t('libraries.repository_columns.update.success_flash',
|
||||||
name: @repository_column.name)
|
name: @repository_column.name)
|
||||||
}, status: :ok
|
}, status: :ok
|
||||||
|
else
|
||||||
|
render json: {
|
||||||
|
message: {
|
||||||
|
repository_list_items:
|
||||||
|
t('libraries.repository_columns.repository_list_items_limit',
|
||||||
|
limit: Constants::REPOSITORY_LIST_ITEMS_PER_COLUMN)
|
||||||
|
}
|
||||||
|
}, status: :unprocessable_entity
|
||||||
|
end
|
||||||
else
|
else
|
||||||
render json: { message: @repository_column.errors.full_messages },
|
render json: { message: @repository_column.errors.full_messages },
|
||||||
status: :unprocessable_entity
|
status: :unprocessable_entity
|
||||||
|
@ -163,8 +179,12 @@ class RepositoryColumnsController < ApplicationController
|
||||||
def generate_repository_list_items(item_names)
|
def generate_repository_list_items(item_names)
|
||||||
return unless @repository_column.data_type == 'RepositoryListValue'
|
return unless @repository_column.data_type == 'RepositoryListValue'
|
||||||
column_items = @repository_column.repository_list_items.size
|
column_items = @repository_column.repository_list_items.size
|
||||||
|
success = true
|
||||||
item_names.split(',').uniq.each do |name|
|
item_names.split(',').uniq.each do |name|
|
||||||
next if column_items >= Constants::REPOSITORY_LIST_ITEMS_PER_COLUMN
|
if column_items >= Constants::REPOSITORY_LIST_ITEMS_PER_COLUMN
|
||||||
|
success = false
|
||||||
|
next
|
||||||
|
end
|
||||||
RepositoryListItem.create(
|
RepositoryListItem.create(
|
||||||
repository: @repository,
|
repository: @repository,
|
||||||
repository_column: @repository_column,
|
repository_column: @repository_column,
|
||||||
|
@ -174,6 +194,7 @@ class RepositoryColumnsController < ApplicationController
|
||||||
)
|
)
|
||||||
column_items += 1
|
column_items += 1
|
||||||
end
|
end
|
||||||
|
success
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_repository_list_items(item_names)
|
def update_repository_list_items(item_names)
|
||||||
|
@ -193,9 +214,13 @@ class RepositoryColumnsController < ApplicationController
|
||||||
list_item_id
|
list_item_id
|
||||||
).destroy_all
|
).destroy_all
|
||||||
end
|
end
|
||||||
|
success = true
|
||||||
items_list.each do |name|
|
items_list.each do |name|
|
||||||
next if @repository_column.repository_list_items.find_by_data(name)
|
next if @repository_column.repository_list_items.find_by_data(name)
|
||||||
next if column_items >= Constants::REPOSITORY_LIST_ITEMS_PER_COLUMN
|
if column_items >= Constants::REPOSITORY_LIST_ITEMS_PER_COLUMN
|
||||||
|
success = false
|
||||||
|
next
|
||||||
|
end
|
||||||
RepositoryListItem.create(
|
RepositoryListItem.create(
|
||||||
repository: @repository,
|
repository: @repository,
|
||||||
repository_column: @repository_column,
|
repository_column: @repository_column,
|
||||||
|
@ -205,5 +230,6 @@ class RepositoryColumnsController < ApplicationController
|
||||||
)
|
)
|
||||||
column_items += 1
|
column_items += 1
|
||||||
end
|
end
|
||||||
|
success
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1007,6 +1007,7 @@ en:
|
||||||
|
|
||||||
repository_columns:
|
repository_columns:
|
||||||
head_title: '%{repository} | Manage Columns'
|
head_title: '%{repository} | Manage Columns'
|
||||||
|
repository_list_items_limit: "Dropdown items limit reached max. %{limit}"
|
||||||
update:
|
update:
|
||||||
success_flash: "Column %{name} was successfully updated."
|
success_flash: "Column %{name} was successfully updated."
|
||||||
create:
|
create:
|
||||||
|
|
Loading…
Reference in a new issue