mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-06 20:05:55 +08:00
Add List items partial and JS
This commit is contained in:
parent
24acf1f84b
commit
6fbb99c8d2
6 changed files with 117 additions and 2 deletions
|
@ -30,6 +30,7 @@
|
||||||
//= require jsnetworkx
|
//= require jsnetworkx
|
||||||
//= require bootstrap-select
|
//= require bootstrap-select
|
||||||
//= require_directory ./sitewide
|
//= require_directory ./sitewide
|
||||||
|
//= require_directory ./repository_columns/columns_initializers
|
||||||
//= require datatables
|
//= require datatables
|
||||||
//= require ajax-bootstrap-select.min
|
//= require ajax-bootstrap-select.min
|
||||||
//= require underscore
|
//= require underscore
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
/* eslint-disable no-unused-vars */
|
||||||
|
var RepositoryListColumnType = (function() {
|
||||||
|
var manageModal = '#manageRepositoryColumn';
|
||||||
|
|
||||||
|
function textToItems(text, delimiter) {
|
||||||
|
var res = [];
|
||||||
|
var definedDelimiters = {
|
||||||
|
return: '\n',
|
||||||
|
comma: ',',
|
||||||
|
semicolon: ';',
|
||||||
|
pipe: '|',
|
||||||
|
space: ' '
|
||||||
|
};
|
||||||
|
|
||||||
|
var delimiters = []
|
||||||
|
if (delimiter === 'auto') {
|
||||||
|
delimiters = ['\n', ',', ';', '|', ' '];
|
||||||
|
} else {
|
||||||
|
delimiters.push(definedDelimiters[delimiter]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$.each(delimiters, (index, currentDelimiter) => {
|
||||||
|
res = text.trim().split(currentDelimiter);
|
||||||
|
if (res.length > 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return res.filter(Boolean);
|
||||||
|
}
|
||||||
|
|
||||||
|
function drawDropdownPreview(items) {
|
||||||
|
var $manageModal = $(manageModal);
|
||||||
|
var $dropdownPreview = $manageModal.find('.dropdown-preview select');
|
||||||
|
$('option', $dropdownPreview).remove();
|
||||||
|
$.each(items, function(i, item) {
|
||||||
|
$dropdownPreview.append($('<option>', {
|
||||||
|
value: item,
|
||||||
|
text: item
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function initDropdownItemsTextArea() {
|
||||||
|
var $manageModal = $(manageModal);
|
||||||
|
var listItemsTextarea = '[data-column-type="RepositoryListValue"] #list-items-textarea';
|
||||||
|
var dropdownDelimiter = 'select#delimiter';
|
||||||
|
|
||||||
|
$manageModal.off('change keyup paste', listItemsTextarea).on('change keyup paste', listItemsTextarea, function() {
|
||||||
|
drawDropdownPreview(textToItems($(listItemsTextarea).val(), $(dropdownDelimiter).val()));
|
||||||
|
});
|
||||||
|
|
||||||
|
$manageModal.off('change', dropdownDelimiter).on('change', dropdownDelimiter, function() {
|
||||||
|
drawDropdownPreview(textToItems($(listItemsTextarea).val(), $(dropdownDelimiter).val()));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
init: () => {
|
||||||
|
initDropdownItemsTextArea();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}());
|
|
@ -1,4 +1,4 @@
|
||||||
/* global I18n HelperModule animateSpinner */
|
/* global I18n HelperModule animateSpinner RepositoryListColumnType */
|
||||||
/* eslint-disable no-restricted-globals */
|
/* eslint-disable no-restricted-globals */
|
||||||
var RepositoryColumns = (function() {
|
var RepositoryColumns = (function() {
|
||||||
var manageModal = '#manageRepositoryColumn';
|
var manageModal = '#manageRepositoryColumn';
|
||||||
|
@ -148,6 +148,7 @@ var RepositoryColumns = (function() {
|
||||||
initCreateSubmitAction();
|
initCreateSubmitAction();
|
||||||
initDeleteSubmitAction();
|
initDeleteSubmitAction();
|
||||||
initManageColumnModal();
|
initManageColumnModal();
|
||||||
|
RepositoryListColumnType.init();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -269,3 +269,26 @@
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dropdown-preview {
|
||||||
|
align-items: center;
|
||||||
|
background-color: $color-concrete;
|
||||||
|
border: 1px solid $color-gainsboro;
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 10px 100px 5px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.field-name {
|
||||||
|
color: $color-silver-chalice;
|
||||||
|
left: 0;
|
||||||
|
padding: 0 5px;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-block {
|
||||||
|
flex-basis: 200px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1 +1,25 @@
|
||||||
<%= 'list-test' %>
|
<div class="form-group">
|
||||||
|
<label class="control-label col-sm-3" for="repository-column-data-type">
|
||||||
|
<%= t('libraries.manange_modal_column.list_type.delimiter_label') %>
|
||||||
|
</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<%= select_tag('delimiter', options_for_select(%w(auto return comma semicolon space pipe), 'auto'), class: 'form-control') %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-sm-3" for="repository-column-data-type">
|
||||||
|
<%= t('libraries.manange_modal_column.list_type.dropdown_items_label') %>
|
||||||
|
</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<%= text_area_tag 'list-items-textarea', nil, rows: 10, class: 'form-control' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-preview">
|
||||||
|
<span class="field-name">Preview</span>
|
||||||
|
<div class="preview-block">
|
||||||
|
<div class="preview-label">Test</div>
|
||||||
|
<select class="form-control">
|
||||||
|
<option value="" disabled selected>Select option...</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
|
@ -1144,6 +1144,9 @@ en:
|
||||||
edit:
|
edit:
|
||||||
title: "Edit %{name} Column"
|
title: "Edit %{name} Column"
|
||||||
button: "Update column"
|
button: "Update column"
|
||||||
|
list_type:
|
||||||
|
delimiter_label: "Delimiter"
|
||||||
|
dropdown_items_label: "Dropdown items"
|
||||||
|
|
||||||
repository_columns:
|
repository_columns:
|
||||||
head_title: '%{repository} | Manage Columns'
|
head_title: '%{repository} | Manage Columns'
|
||||||
|
|
Loading…
Add table
Reference in a new issue