mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-21 07:26:15 +08:00
Merge branch 'develop' into ai-sci-4328-fix-general-css-issues-for-repositories
This commit is contained in:
commit
1ff0351a74
|
@ -7,7 +7,7 @@ var ListColumnHelper = (function() {
|
|||
if (value && value.value) {
|
||||
selectedOption = `<option value="${value.value}">${value.label}</option>`;
|
||||
}
|
||||
return $(`<select
|
||||
return $(`<select
|
||||
id="${select}"
|
||||
data-placeholder = "${I18n.t('repositories.table.list.select_item')}"
|
||||
data-ajax-url = "${url}"
|
||||
|
@ -32,6 +32,7 @@ var ListColumnHelper = (function() {
|
|||
dropdownSelector.init('#' + select, {
|
||||
singleSelect: true,
|
||||
selectAppearance: 'simple',
|
||||
closeOnSelect: true,
|
||||
onChange: function() {
|
||||
var values = dropdownSelector.getValues('#' + select);
|
||||
$hiddenField.val(values);
|
||||
|
|
|
@ -8,7 +8,7 @@ var StatusColumnHelper = (function() {
|
|||
selectedOption = `<option value="${value.value}">${value.label}</option>`;
|
||||
}
|
||||
|
||||
return $(`<select
|
||||
return $(`<select
|
||||
id="${select}"
|
||||
data-placeholder = "${I18n.t('repositories.table.status.set_status')}"
|
||||
data-ajax-url = "${url}"
|
||||
|
@ -33,6 +33,7 @@ var StatusColumnHelper = (function() {
|
|||
dropdownSelector.init('#' + select, {
|
||||
singleSelect: true,
|
||||
selectAppearance: 'simple',
|
||||
closeOnSelect: true,
|
||||
onChange: function() {
|
||||
var values = dropdownSelector.getValues('#' + select);
|
||||
$hiddenField.val(values);
|
||||
|
|
|
@ -143,7 +143,7 @@ $.fn.dataTable.render.editRepositoryNumberValue = function(formId, columnId, cel
|
|||
type="number"
|
||||
name="repository_cells[${columnId}]"
|
||||
placeholder="${I18n.t('repositories.table.number.enter_number')}"
|
||||
value="${$cell.find('.number-value').data('full-value')}"
|
||||
value="${$cell.find('.number-value').data('value')}"
|
||||
data-type="RepositoryNumberValue">
|
||||
</div>`);
|
||||
};
|
||||
|
|
|
@ -75,8 +75,6 @@ $.fn.dataTable.render.newRepositoryNumberValue = function(formId, columnId, $cel
|
|||
placeholder="${I18n.t('repositories.table.number.enter_number')}"
|
||||
data-type="RepositoryNumberValue">
|
||||
</div>`);
|
||||
|
||||
SmartAnnotation.init($cell.find('input'));
|
||||
};
|
||||
|
||||
$.fn.dataTable.render.newRepositoryDateTimeValue = function(formId, columnId, $cell) {
|
||||
|
|
|
@ -63,8 +63,8 @@ $.fn.dataTable.render.defaultRepositoryDateTimeValue = function() {
|
|||
};
|
||||
|
||||
$.fn.dataTable.render.RepositoryDateTimeValue = function(data) {
|
||||
return `<span data-time="${data.value.time_formatted}"
|
||||
data-datetime="${data.value.datetime}"
|
||||
return `<span data-time="${data.value.time_formatted}"
|
||||
data-datetime="${data.value.datetime}"
|
||||
data-date="${data.value.date_formatted}">${data.value.formatted}</span>`;
|
||||
};
|
||||
|
||||
|
@ -73,7 +73,7 @@ $.fn.dataTable.render.defaultRepositoryTimeValue = function() {
|
|||
};
|
||||
|
||||
$.fn.dataTable.render.RepositoryTimeValue = function(data) {
|
||||
return `<span data-time="${data.value.formatted}"
|
||||
return `<span data-time="${data.value.formatted}"
|
||||
data-datetime="${data.value.datetime}">${data.value.formatted}</span>`;
|
||||
};
|
||||
|
||||
|
@ -146,7 +146,7 @@ $.fn.dataTable.render.defaultRepositoryNumberValue = function() {
|
|||
};
|
||||
|
||||
$.fn.dataTable.render.RepositoryNumberValue = function(data) {
|
||||
return `<span class="number-value" data-full-value="${data.full_value}">
|
||||
return `<span class="number-value" data-value="${data.value}">
|
||||
${data.value}
|
||||
</span>`;
|
||||
};
|
||||
|
|
|
@ -48,13 +48,13 @@ var RepositoryDatatable = (function(global) {
|
|||
if (currentMode === 'viewMode') {
|
||||
$(TABLE_WRAPPER_ID).removeClass('editing');
|
||||
$('#saveCancel').hide();
|
||||
$('#editDeleteCopy').show();
|
||||
$('#addRepositoryRecord').prop('disabled', false);
|
||||
$('.dataTables_length select').prop('disabled', false);
|
||||
$('#repository-acitons-dropdown').prop('disabled', false);
|
||||
$('#repository-columns-dropdown').find('.dropdown-toggle').prop('disabled', false);
|
||||
$('th').removeClass('disable-click');
|
||||
$('.repository-row-selector').prop('disabled', false);
|
||||
$('.dataTables_filter input').prop('disabled', false);
|
||||
if (rowsSelected.length === 0) {
|
||||
$('#exportRepositoriesButton').addClass('disabled');
|
||||
$('#copyRepositoryRecords').prop('disabled', true);
|
||||
|
@ -62,6 +62,7 @@ var RepositoryDatatable = (function(global) {
|
|||
$('#deleteRepositoryRecordsButton').prop('disabled', true);
|
||||
$('#assignRepositoryRecords').prop('disabled', true);
|
||||
$('#unassignRepositoryRecords').prop('disabled', true);
|
||||
$('#editDeleteCopy').hide();
|
||||
} else {
|
||||
if (rowsSelected.length === 1) {
|
||||
$('#editRepositoryRecord').prop('disabled', false);
|
||||
|
@ -73,6 +74,7 @@ var RepositoryDatatable = (function(global) {
|
|||
$('#copyRepositoryRecords').prop('disabled', false);
|
||||
$('#assignRepositoryRecords').prop('disabled', false);
|
||||
$('#unassignRepositoryRecords').prop('disabled', false);
|
||||
$('#editDeleteCopy').show();
|
||||
}
|
||||
} else if (currentMode === 'editMode') {
|
||||
$(TABLE_WRAPPER_ID).addClass('editing');
|
||||
|
@ -88,6 +90,7 @@ var RepositoryDatatable = (function(global) {
|
|||
$('#repository-columns-dropdown').find('.dropdown-toggle').prop('disabled', true);
|
||||
$('th').addClass('disable-click');
|
||||
$('.repository-row-selector').prop('disabled', true);
|
||||
$('.dataTables_filter input').prop('disabled', true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -94,16 +94,15 @@ var RepositoryDatatableRowEditor = (function() {
|
|||
let $table = $(TABLE.table().node());
|
||||
|
||||
$table.on('ajax:success', '.repository-row-edit-form', function(ev, data) {
|
||||
TABLE.ajax.reload();
|
||||
HelperModule.flashAlertMsg(data.flash, 'success');
|
||||
TABLE.ajax.reload(() => {
|
||||
animateSpinner(null, false);
|
||||
HelperModule.flashAlertMsg(data.flash, 'success');
|
||||
});
|
||||
});
|
||||
|
||||
$table.on('ajax:error', '.repository-row-edit-form', function(ev, data) {
|
||||
HelperModule.flashAlertMsg(data.responseJSON.flash, 'danger');
|
||||
});
|
||||
|
||||
$table.on('ajax:complete', '.repository-row-edit-form', function() {
|
||||
animateSpinner(null, false);
|
||||
HelperModule.flashAlertMsg(data.responseJSON.flash, 'danger');
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ var RepositoryChecklistColumnType = (function() {
|
|||
delimiterDropdown,
|
||||
dropdownOptions
|
||||
);
|
||||
$('.changing-existing-list-items-warning').removeClass('hidden');
|
||||
initChecklistDropdown();
|
||||
})
|
||||
.on('change', delimiterDropdown, function() {
|
||||
|
|
|
@ -110,6 +110,7 @@ var RepositoryListColumnType = (function() {
|
|||
delimiterDropdown,
|
||||
dropdownOptions
|
||||
);
|
||||
$('.changing-existing-list-items-warning').removeClass('hidden');
|
||||
})
|
||||
.on('change', delimiterDropdown, function() {
|
||||
refreshPreviewDropdownList(
|
||||
|
|
|
@ -380,6 +380,9 @@ var SmartAnnotation = (function() {
|
|||
|
||||
function init() {
|
||||
$(field)
|
||||
.on("reposition.atwho", function(event, flag, query) {
|
||||
query.$el.find('.atwho-view').css('left', (flag.left + $(window).scrollLeft()) + 'px');
|
||||
})
|
||||
.atwho({
|
||||
at: '@',
|
||||
callbacks: {
|
||||
|
|
|
@ -78,8 +78,16 @@
|
|||
padding: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
color: $brand-primary;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Text and Number field
|
||||
|
||||
.text-field.sci-input-container {
|
||||
|
|
|
@ -25,7 +25,7 @@ module RepositoryColumns
|
|||
.call(user: current_user,
|
||||
team: current_team,
|
||||
column: @repository_column,
|
||||
params: repository_column_params)
|
||||
params: repository_column_update_params)
|
||||
|
||||
if service.succeed?
|
||||
render json: service.column, status: :ok, editing: true
|
||||
|
@ -67,6 +67,12 @@ module RepositoryColumns
|
|||
.permit(:name, metadata: [:delimiter], repository_checklist_items_attributes: %i(data))
|
||||
end
|
||||
|
||||
def repository_column_update_params
|
||||
params
|
||||
.require(:repository_column)
|
||||
.permit(:name, repository_checklist_items_attributes: %i(data))
|
||||
end
|
||||
|
||||
def delimiters
|
||||
Constants::REPOSITORY_LIST_ITEMS_DELIMITERS
|
||||
.split(',')
|
||||
|
|
|
@ -25,7 +25,7 @@ module RepositoryColumns
|
|||
.call(user: current_user,
|
||||
team: current_team,
|
||||
column: @repository_column,
|
||||
params: repository_column_params)
|
||||
params: repository_column_update_params)
|
||||
|
||||
if service.succeed?
|
||||
render json: service.column, status: :ok, editing: true
|
||||
|
@ -67,6 +67,12 @@ module RepositoryColumns
|
|||
.permit(:name, metadata: [:delimiter], repository_list_items_attributes: %i(data))
|
||||
end
|
||||
|
||||
def repository_column_update_params
|
||||
params
|
||||
.require(:repository_column)
|
||||
.permit(:name, repository_list_items_attributes: %i(data))
|
||||
end
|
||||
|
||||
def delimiters
|
||||
Constants::REPOSITORY_LIST_ITEMS_DELIMITERS
|
||||
.split(',')
|
||||
|
|
|
@ -44,11 +44,9 @@ class RepositoryChecklistValue < ApplicationRecord
|
|||
|
||||
def self.new_with_payload(payload, attributes)
|
||||
value = new(attributes)
|
||||
value.repository_cell
|
||||
.repository_column
|
||||
.repository_checklist_items.where(id: JSON.parse(payload)).find_each do |item|
|
||||
value.repository_checklist_items_values.new(repository_checklist_item: item)
|
||||
end
|
||||
value.repository_checklist_items = value.repository_cell
|
||||
.repository_column
|
||||
.repository_checklist_items.where(id: JSON.parse(payload))
|
||||
value
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,15 +2,9 @@
|
|||
|
||||
module RepositoryDatatable
|
||||
class RepositoryNumberValueSerializer < RepositoryBaseValueSerializer
|
||||
attributes :full_value
|
||||
|
||||
def value
|
||||
decimal_number = scope[:column].metadata.fetch('decimals') { Constants::REPOSITORY_NUMBER_TYPE_DEFAULT_DECIMALS }
|
||||
BigDecimal(object.data).round(decimal_number.to_i)
|
||||
end
|
||||
|
||||
def full_value
|
||||
object.data
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
<div class="container-fluid">
|
||||
<div class="navbar-header">
|
||||
<span class="navbar-brand" title="<% t('nav.label.scinote') %>">
|
||||
<%= image_tag('/images/scinote_icon.jpg', id: 'logo') %>
|
||||
<%= image_tag('/images/scinote_icon.svg', id: 'logo') %>
|
||||
</span>
|
||||
</div>
|
||||
<% if user_signed_in? %>
|
||||
|
@ -36,15 +36,9 @@
|
|||
<% end %>
|
||||
</div>
|
||||
</nav>
|
||||
<% if flash[:error]%>
|
||||
<div class="alert alert-danger alert-dismissable alert-floating">
|
||||
<div class="container">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<span class="fas fa-exclamation-circle"></span>
|
||||
<span><%= sanitize_input(flash[:error]) %></span>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= render partial: 'shared/flash_alerts', locals: { flash: flash, notice: notice, alert: alert } %>
|
||||
|
||||
<div class="container sign-in-halt-container">
|
||||
<%= yield %>
|
||||
</div>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<%= t('libraries.manange_modal_column.list_type.delimiter_label') %>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<%= select_tag('delimiter', options_for_select(delimiters, selected_delimiter), class: 'form-control delimiter') %>
|
||||
<%= select_tag('delimiter', options_for_select(delimiters, selected_delimiter), class: 'form-control delimiter', disabled: !column.new_record?) %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
@ -19,6 +19,11 @@
|
|||
</label>
|
||||
<div class="col-sm-9">
|
||||
<%= text_area_tag 'items-textarea', column.repository_checklist_items.pluck(:data).join(selected_delimiter_char), rows: 10, class: 'form-control items-textarea' %>
|
||||
<% unless column.new_record? %>
|
||||
<div class="bg-danger hidden changing-existing-list-items-warning">
|
||||
<%= t('libraries.manange_modal_column.change_multi_select_items_warning') %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropdown-preview">
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<%= t('libraries.manange_modal_column.list_type.delimiter_label') %>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<%= select_tag('delimiter', options_for_select(delimiters, selected_delimiter), class: 'form-control delimiter') %>
|
||||
<%= select_tag('delimiter', options_for_select(delimiters, selected_delimiter), class: 'form-control delimiter', disabled: !column.new_record?) %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
@ -19,6 +19,11 @@
|
|||
</label>
|
||||
<div class="col-sm-9">
|
||||
<%= text_area_tag 'items-textarea', column.repository_list_items.pluck(:data).join(selected_delimiter_char), rows: 10, class: 'form-control items-textarea' %>
|
||||
<% unless column.new_record? %>
|
||||
<div class="bg-danger hidden changing-existing-list-items-warning">
|
||||
<%= t('libraries.manange_modal_column.change_multi_select_items_warning') %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropdown-preview">
|
||||
|
|
|
@ -1158,6 +1158,7 @@ en:
|
|||
name: "Name"
|
||||
colum_type: "Column type"
|
||||
dropdown_item_descirption: "Dropdown items should be separated by comma."
|
||||
change_multi_select_items_warning: "Be careful: changing existing list items will result in deselecting previously selected items."
|
||||
select:
|
||||
repository_text_value: "Text"
|
||||
repository_number_value: "Number"
|
||||
|
|
Loading…
Reference in a new issue