mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-10 23:25:31 +08:00
Merge pull request #1261 from mlorb/ml-sci-2634
fix editing of inventory items of hidden columns [SCI-2634]
This commit is contained in:
commit
92eab25a07
2 changed files with 20 additions and 12 deletions
|
@ -115,6 +115,7 @@
|
||||||
RepositoryItemEditForm.prototype.parseToFormObject = function(tableID, selectedRecord) {
|
RepositoryItemEditForm.prototype.parseToFormObject = function(tableID, selectedRecord) {
|
||||||
var formData = this.formData;
|
var formData = this.formData;
|
||||||
var formDataObj = new FormData();
|
var formDataObj = new FormData();
|
||||||
|
var removeFileColumns = [];
|
||||||
formDataObj.append('request_url', $(tableID).data('current-uri'));
|
formDataObj.append('request_url', $(tableID).data('current-uri'));
|
||||||
formDataObj.append('repository_row_id', $(selectedRecord).attr('id'));
|
formDataObj.append('repository_row_id', $(selectedRecord).attr('id'));
|
||||||
|
|
||||||
|
@ -125,18 +126,25 @@
|
||||||
} else {
|
} else {
|
||||||
var colId = element.replace('colId-', '');
|
var colId = element.replace('colId-', '');
|
||||||
var $el = $('#' + element);
|
var $el = $('#' + element);
|
||||||
|
// don't save anything if element is not visible
|
||||||
|
if($el.length == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if($el.attr('type') === 'file') {
|
if($el.attr('type') === 'file') {
|
||||||
// don't save anything if element is deleted
|
// handle deleting of element
|
||||||
if($el.attr('remove') === "true") {
|
if($el.attr('remove') === "true") {
|
||||||
return true;
|
removeFileColumns.push(colId);
|
||||||
|
formDataObj.append('repository_cells[' + colId + ']', null);
|
||||||
|
} else {
|
||||||
|
formDataObj.append('repository_cells[' + colId + ']',
|
||||||
|
getFileValue($el));
|
||||||
}
|
}
|
||||||
formDataObj.append('repository_cells[' + colId + ']',
|
} else if(value.length >= 0) {
|
||||||
getFileValue($el));
|
|
||||||
} else if(value.length > 0) {
|
|
||||||
formDataObj.append('repository_cells[' + colId + ']', value);
|
formDataObj.append('repository_cells[' + colId + ']', value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
formDataObj.append('remove_file_columns', JSON.stringify(removeFileColumns));
|
||||||
return formDataObj;
|
return formDataObj;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -134,7 +134,7 @@ class RepositoryRowsController < ApplicationController
|
||||||
existing.delete
|
existing.delete
|
||||||
end
|
end
|
||||||
elsif existing.value_type == 'RepositoryAssetValue'
|
elsif existing.value_type == 'RepositoryAssetValue'
|
||||||
next if value.blank?
|
existing.value.destroy && next if remove_file_columns_params.include?(key)
|
||||||
if existing.value.asset.update(file: value)
|
if existing.value.asset.update(file: value)
|
||||||
existing.value.asset.created_by = current_user
|
existing.value.asset.created_by = current_user
|
||||||
existing.value.asset.last_modified_by = current_user
|
existing.value.asset.last_modified_by = current_user
|
||||||
|
@ -145,6 +145,7 @@ class RepositoryRowsController < ApplicationController
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
existing.value.destroy && next if value == ''
|
||||||
existing.value.data = value
|
existing.value.data = value
|
||||||
if existing.value.save
|
if existing.value.save
|
||||||
record_annotation_notification(@record, existing)
|
record_annotation_notification(@record, existing)
|
||||||
|
@ -156,17 +157,12 @@ class RepositoryRowsController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
next if value == ''
|
||||||
# Looks like it is a new cell, so we need to create new value, cell
|
# Looks like it is a new cell, so we need to create new value, cell
|
||||||
# will be created automatically
|
# will be created automatically
|
||||||
next if create_cell_value(@record, key, value, errors).nil?
|
next if create_cell_value(@record, key, value, errors).nil?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
# Clean up empty cells, not present in updated record
|
|
||||||
@record.repository_cells.each do |cell|
|
|
||||||
next if cell.value_type == 'RepositoryListValue'
|
|
||||||
cell.value.destroy unless cell_params
|
|
||||||
.key?(cell.repository_column_id.to_s)
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
@record.repository_cells.each { |c| c.value.destroy }
|
@record.repository_cells.each { |c| c.value.destroy }
|
||||||
end
|
end
|
||||||
|
@ -369,6 +365,10 @@ class RepositoryRowsController < ApplicationController
|
||||||
params.permit(repository_cells: {}).to_h[:repository_cells]
|
params.permit(repository_cells: {}).to_h[:repository_cells]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def remove_file_columns_params
|
||||||
|
JSON.parse(params.fetch(:remove_file_columns) { '[]' })
|
||||||
|
end
|
||||||
|
|
||||||
def selected_params
|
def selected_params
|
||||||
params.permit(selected_rows: []).to_h[:selected_rows]
|
params.permit(selected_rows: []).to_h[:selected_rows]
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue