mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-09 21:36:44 +08:00
Merge pull request #2251 from aignatov-bio/ai-sci-4068-custom-select-on-manage-columns-forms
Update drop-down for columns type selection [SCI-4068]
This commit is contained in:
commit
2a38928b7a
5 changed files with 65 additions and 19 deletions
|
@ -1,4 +1,5 @@
|
||||||
/* global I18n HelperModule animateSpinner RepositoryListColumnType RepositoryStatusColumnType */
|
/* global I18n HelperModule animateSpinner RepositoryListColumnType */
|
||||||
|
/* global RepositoryStatusColumnType dropdownSelector */
|
||||||
/* eslint-disable no-restricted-globals */
|
/* eslint-disable no-restricted-globals */
|
||||||
var RepositoryColumns = (function() {
|
var RepositoryColumns = (function() {
|
||||||
var manageModal = '#manage-repository-column';
|
var manageModal = '#manage-repository-column';
|
||||||
|
@ -178,6 +179,13 @@ var RepositoryColumns = (function() {
|
||||||
.find('#repository-column-name')
|
.find('#repository-column-name')
|
||||||
.focus();
|
.focus();
|
||||||
columnType = $('#repository-column-data-type').val();
|
columnType = $('#repository-column-data-type').val();
|
||||||
|
dropdownSelector.init('#repository-column-data-type', {
|
||||||
|
noEmptyOption: true,
|
||||||
|
singleSelect: true,
|
||||||
|
closeOnSelect: true,
|
||||||
|
optionClass: 'custom-option',
|
||||||
|
selectAppearance: 'simple'
|
||||||
|
});
|
||||||
$manageModal
|
$manageModal
|
||||||
.trigger('columnModal::partialLoadedFor' + columnType);
|
.trigger('columnModal::partialLoadedFor' + columnType);
|
||||||
|
|
||||||
|
|
|
@ -223,11 +223,17 @@ var dropdownSelector = (function() {
|
||||||
|
|
||||||
if (pressedKey === 38) {
|
if (pressedKey === 38) {
|
||||||
if (selectedOption.prev('.dropdown-option').length) {
|
if (selectedOption.prev('.dropdown-option').length) {
|
||||||
selectedOption.removeClass('highlight').prev('.dropdown-option').addClass('highlight');
|
selectedOption.removeClass('highlight').prev().addClass('highlight');
|
||||||
|
}
|
||||||
|
if (selectedOption.prev('.delimiter').length) {
|
||||||
|
selectedOption.removeClass('highlight').prev().prev().addClass('highlight');
|
||||||
}
|
}
|
||||||
} else if (pressedKey === 40) {
|
} else if (pressedKey === 40) {
|
||||||
if (selectedOption.next('.dropdown-option').length) {
|
if (selectedOption.next('.dropdown-option').length) {
|
||||||
selectedOption.removeClass('highlight').next('.dropdown-option').addClass('highlight');
|
selectedOption.removeClass('highlight').next().addClass('highlight');
|
||||||
|
}
|
||||||
|
if (selectedOption.next('.delimiter').length) {
|
||||||
|
selectedOption.removeClass('highlight').next().next().addClass('highlight');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -436,6 +442,11 @@ var dropdownSelector = (function() {
|
||||||
`);
|
`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Draw delimiter object
|
||||||
|
function drawDelimiter() {
|
||||||
|
return $('<div class="delimiter"></div>');
|
||||||
|
}
|
||||||
|
|
||||||
// Draw group object
|
// Draw group object
|
||||||
function drawGroup(group) {
|
function drawGroup(group) {
|
||||||
return $(`
|
return $(`
|
||||||
|
@ -452,13 +463,14 @@ var dropdownSelector = (function() {
|
||||||
if (selector.data('config').singleSelect) {
|
if (selector.data('config').singleSelect) {
|
||||||
$container.find('.dropdown-option').removeClass('select');
|
$container.find('.dropdown-option').removeClass('select');
|
||||||
updateCurrentData($container, []);
|
updateCurrentData($container, []);
|
||||||
|
selector.val($(this).data('value')).change();
|
||||||
}
|
}
|
||||||
$(this).toggleClass('select');
|
$(this).toggleClass('select');
|
||||||
saveData(selector, $container);
|
saveData(selector, $container);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove placeholder from option container
|
// Remove placeholder from option container
|
||||||
container.find('.dropdown-group, .dropdown-option, .empty-dropdown').remove();
|
container.find('.dropdown-group, .dropdown-option, .empty-dropdown, .delimiter').remove();
|
||||||
if (!data) return;
|
if (!data) return;
|
||||||
|
|
||||||
if (data.length > 0) {
|
if (data.length > 0) {
|
||||||
|
@ -495,7 +507,12 @@ var dropdownSelector = (function() {
|
||||||
} else {
|
} else {
|
||||||
// For simple options we only draw them
|
// For simple options we only draw them
|
||||||
$.each(data, function(oi, option) {
|
$.each(data, function(oi, option) {
|
||||||
var optionElement = drawOption(selector, option);
|
var optionElement;
|
||||||
|
if (option.delimiter) {
|
||||||
|
drawDelimiter().appendTo(container.find('.dropdown-container'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
optionElement = drawOption(selector, option);
|
||||||
optionElement.click(clickOption);
|
optionElement.click(clickOption);
|
||||||
optionElement.appendTo(container.find('.dropdown-container'));
|
optionElement.appendTo(container.find('.dropdown-container'));
|
||||||
});
|
});
|
||||||
|
@ -701,7 +718,11 @@ var dropdownSelector = (function() {
|
||||||
} else {
|
} else {
|
||||||
options = filterOptions(selector, container, selector.find('option'));
|
options = filterOptions(selector, container, selector.find('option'));
|
||||||
$.each(options, function(oi, option) {
|
$.each(options, function(oi, option) {
|
||||||
result.push({ label: option.innerHTML, value: option.value });
|
result.push({
|
||||||
|
label: option.innerHTML,
|
||||||
|
value: option.value,
|
||||||
|
delimiter: option.dataset.delimiter
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -16,5 +16,11 @@
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -2px;
|
top: -2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#repository-column-data-type + .dropdown-selector-container {
|
||||||
|
.custom-option {
|
||||||
|
padding: 0 25px;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -122,6 +122,12 @@
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.delimiter {
|
||||||
|
background: $color-alto;
|
||||||
|
height: 1px;
|
||||||
|
margin: 5px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
.dropdown-select-all {
|
.dropdown-select-all {
|
||||||
background: $color-white;
|
background: $color-white;
|
||||||
border: 0;
|
border: 0;
|
||||||
|
|
|
@ -30,25 +30,13 @@
|
||||||
</label>
|
</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<select class="form-control" name="repository_column[data_type]" id="repository-column-data-type"
|
<select class="form-control" name="repository_column[data_type]" id="repository-column-data-type"
|
||||||
<%= 'disabled' unless @repository_column.new_record? %>>
|
<%= 'data-disable-on-load="true" disable' unless @repository_column.new_record? %>>
|
||||||
<option data-create-url="<%= repository_repository_columns_text_columns_path(@repository) %>"
|
<option data-create-url="<%= repository_repository_columns_text_columns_path(@repository) %>"
|
||||||
data-edit-url="<%= repository_repository_columns_text_column_path(@repository, @repository_column) unless @repository_column.new_record? %>"
|
data-edit-url="<%= repository_repository_columns_text_column_path(@repository, @repository_column) unless @repository_column.new_record? %>"
|
||||||
value="RepositoryTextValue"
|
value="RepositoryTextValue"
|
||||||
<%= 'selected' if @repository_column.repository_text_value? %> >
|
<%= 'selected' if @repository_column.repository_text_value? %> >
|
||||||
<%= t('libraries.manange_modal_column.select.repository_text_value') %>
|
<%= t('libraries.manange_modal_column.select.repository_text_value') %>
|
||||||
</option>
|
</option>
|
||||||
<option data-create-url="<%= repository_repository_columns_status_columns_path(@repository) %>"
|
|
||||||
data-edit-url="<%= repository_repository_columns_status_column_path(@repository, @repository_column) unless @repository_column.new_record? %>"
|
|
||||||
value="RepositoryStatusValue"
|
|
||||||
<%= 'selected' if @repository_column.repository_status_value? %> >
|
|
||||||
<%= t('libraries.manange_modal_column.select.repository_status_value') %>
|
|
||||||
</option>
|
|
||||||
<option data-create-url="<%= repository_repository_columns_list_columns_path(@repository) %>"
|
|
||||||
data-edit-url="<%= repository_repository_columns_list_column_path(@repository, @repository_column) unless @repository_column.new_record? %>"
|
|
||||||
value="RepositoryListValue"
|
|
||||||
<%= 'selected' if @repository_column.repository_list_value? %> >
|
|
||||||
<%= t('libraries.manange_modal_column.select.repository_list_value') %>
|
|
||||||
</option>
|
|
||||||
<option data-create-url="<%= repository_repository_columns_asset_columns_path(@repository) %>"
|
<option data-create-url="<%= repository_repository_columns_asset_columns_path(@repository) %>"
|
||||||
data-edit-url="<%= repository_repository_columns_asset_column_path(@repository, @repository_column) unless @repository_column.new_record? %>"
|
data-edit-url="<%= repository_repository_columns_asset_column_path(@repository, @repository_column) unless @repository_column.new_record? %>"
|
||||||
value="RepositoryAssetValue"
|
value="RepositoryAssetValue"
|
||||||
|
@ -56,6 +44,23 @@
|
||||||
<%= t('libraries.manange_modal_column.select.repository_asset_value') %>
|
<%= t('libraries.manange_modal_column.select.repository_asset_value') %>
|
||||||
</option>
|
</option>
|
||||||
|
|
||||||
|
<option data-delimiter=true></option>
|
||||||
|
|
||||||
|
<option data-create-url="<%= repository_repository_columns_list_columns_path(@repository) %>"
|
||||||
|
data-edit-url="<%= repository_repository_columns_list_column_path(@repository, @repository_column) unless @repository_column.new_record? %>"
|
||||||
|
value="RepositoryListValue"
|
||||||
|
<%= 'selected' if @repository_column.repository_list_value? %> >
|
||||||
|
<%= t('libraries.manange_modal_column.select.repository_list_value') %>
|
||||||
|
</option>
|
||||||
|
<option data-create-url="<%= repository_repository_columns_status_columns_path(@repository) %>"
|
||||||
|
data-edit-url="<%= repository_repository_columns_status_column_path(@repository, @repository_column) unless @repository_column.new_record? %>"
|
||||||
|
value="RepositoryStatusValue"
|
||||||
|
<%= 'selected' if @repository_column.repository_status_value? %> >
|
||||||
|
<%= t('libraries.manange_modal_column.select.repository_status_value') %>
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option data-delimiter=true></option>
|
||||||
|
|
||||||
<option data-create-url="<%= repository_repository_columns_date_time_columns_path(@repository) %>"
|
<option data-create-url="<%= repository_repository_columns_date_time_columns_path(@repository) %>"
|
||||||
data-edit-url="<%= repository_repository_columns_asset_column_path(@repository, @repository_column) unless @repository_column.new_record? %>"
|
data-edit-url="<%= repository_repository_columns_asset_column_path(@repository, @repository_column) unless @repository_column.new_record? %>"
|
||||||
value="RepositoryDateValue"
|
value="RepositoryDateValue"
|
||||||
|
|
Loading…
Add table
Reference in a new issue