mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-05 20:54:27 +08:00
Implement repository snapshots displaying on assigned items full view modal [SCI-6442] (#3862)
This commit is contained in:
parent
af011a3bb8
commit
9c4fca1b86
6 changed files with 57 additions and 28 deletions
|
@ -16,7 +16,7 @@ var MyModuleRepositories = (function() {
|
||||||
{
|
{
|
||||||
visible: true,
|
visible: true,
|
||||||
searchable: false,
|
searchable: false,
|
||||||
data: otherColumnCount
|
data: 'stock'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
visible: true,
|
visible: true,
|
||||||
|
@ -40,7 +40,7 @@ var MyModuleRepositories = (function() {
|
||||||
className: 'item-consumed-stock',
|
className: 'item-consumed-stock',
|
||||||
sWidth: '1%',
|
sWidth: '1%',
|
||||||
render: function(data) {
|
render: function(data) {
|
||||||
return $.fn.dataTable.render.RepositoryConsumedStockValue(data);
|
return $.fn.dataTable.render.RepositoryStockConsumptionValue(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -130,7 +130,7 @@ var MyModuleRepositories = (function() {
|
||||||
return $.fn.dataTable.render[data.value_type](data);
|
return $.fn.dataTable.render[data.value_type](data);
|
||||||
}
|
}
|
||||||
if (data !== undefined && data.stock_present !== undefined) {
|
if (data !== undefined && data.stock_present !== undefined) {
|
||||||
return $.fn.dataTable.render.RepositoryConsumedStockValue(data);
|
return $.fn.dataTable.render.RepositoryStockConsumptionValue(data);
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
|
@ -140,6 +140,6 @@ $.fn.dataTable.render.editRepositoryStockValue = function(formId, columnId, cell
|
||||||
return cell.node();
|
return cell.node();
|
||||||
};
|
};
|
||||||
|
|
||||||
$.fn.dataTable.render.editRepositoryConsumedStockValue = function(formId, columnId, cell) {
|
$.fn.dataTable.render.editRepositoryStockConsumptionValue = function(formId, columnId, cell) {
|
||||||
return cell.node();
|
return cell.node();
|
||||||
};
|
};
|
||||||
|
|
|
@ -205,16 +205,19 @@ $.fn.dataTable.render.RepositoryStockValue = function(data, row) {
|
||||||
</span>`;
|
</span>`;
|
||||||
};
|
};
|
||||||
|
|
||||||
$.fn.dataTable.render.RepositoryConsumedStockValue = function(data = {}) {
|
$.fn.dataTable.render.defaultRepositoryStockValue = function() {
|
||||||
|
return $.fn.dataTable.render.RepositoryStockValue();
|
||||||
|
};
|
||||||
|
|
||||||
|
$.fn.dataTable.render.RepositoryStockConsumptionValue = function(data = {}) {
|
||||||
if (data.value && data.value.consumed_stock !== null) {
|
if (data.value && data.value.consumed_stock !== null) {
|
||||||
if (data.consumption_managable) {
|
if (data.consumption_managable) {
|
||||||
return `<a href="${data.updateStockConsumptionUrl}" class="manage-repository-consumed-stock-value-link stock-value-view-render">
|
return `<a href="${data.updateStockConsumptionUrl}"
|
||||||
${data.value.consumed_stock} ${data.value.unit || ''}
|
class="manage-repository-consumed-stock-value-link stock-value-view-render">
|
||||||
</a>`;
|
${data.value.consumed_stock_formatted}
|
||||||
|
</a>`;
|
||||||
}
|
}
|
||||||
return `<span class="stock-value-view-render">
|
return `<span class="stock-value-view-render">${data.value.consumed_stock_formatted}</span>`;
|
||||||
${data.value.consumed_stock} ${data.value.unit || ''}
|
|
||||||
</span>`;
|
|
||||||
}
|
}
|
||||||
if (data.stock_present && data.consumption_managable) {
|
if (data.stock_present && data.consumption_managable) {
|
||||||
return `<a href="${data.updateStockConsumptionUrl}" class="manage-repository-consumed-stock-value-link">
|
return `<a href="${data.updateStockConsumptionUrl}" class="manage-repository-consumed-stock-value-link">
|
||||||
|
@ -225,6 +228,6 @@ $.fn.dataTable.render.RepositoryConsumedStockValue = function(data = {}) {
|
||||||
return '<span class="empty-consumed-stock-render"> - </span>';
|
return '<span class="empty-consumed-stock-render"> - </span>';
|
||||||
};
|
};
|
||||||
|
|
||||||
$.fn.dataTable.render.defaultRepositoryStockValue = function() {
|
$.fn.dataTable.render.defaultRepositoryStockConsumptionValue = function() {
|
||||||
return $.fn.dataTable.render.RepositoryStockValue();
|
return $.fn.dataTable.render.RepositoryStockConsumptionValue();
|
||||||
};
|
};
|
||||||
|
|
|
@ -93,20 +93,17 @@ module RepositoryDatatableHelper
|
||||||
consumption_managable =
|
consumption_managable =
|
||||||
stock_present && record.repository.is_a?(Repository) && can_update_my_module_stock_consumption?(my_module)
|
stock_present && record.repository.is_a?(Repository) && can_update_my_module_stock_consumption?(my_module)
|
||||||
|
|
||||||
row['1'] = stock_present ? display_cell_value(record.repository_stock_cell, record.repository.team) : {}
|
row['stock'] = stock_present ? display_cell_value(record.repository_stock_cell, record.repository.team) : {}
|
||||||
row['1'][:stock_managable] = stock_managable
|
row['stock'][:stock_managable] = stock_managable
|
||||||
row['consumedStock'] = {
|
|
||||||
stock_present: stock_present,
|
|
||||||
consumption_managable: consumption_managable
|
|
||||||
}
|
|
||||||
if record.repository.is_a?(RepositorySnapshot)
|
if record.repository.is_a?(RepositorySnapshot)
|
||||||
if record.repository_stock_consumption_value.present?
|
row['consumedStock'] =
|
||||||
row['consumedStock'][:value] = {
|
if record.repository_stock_consumption_value.present?
|
||||||
consumed_stock: record.repository_stock_consumption_value.amount,
|
display_cell_value(record.repository_stock_consumption_cell, record.repository.team)
|
||||||
unit: record.repository_stock_consumption_value.repository_stock_unit_item&.data
|
else
|
||||||
}
|
{}
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
row['consumedStock'] = {}
|
||||||
if consumption_managable
|
if consumption_managable
|
||||||
row['consumedStock'][:updateStockConsumptionUrl] =
|
row['consumedStock'][:updateStockConsumptionUrl] =
|
||||||
Rails.application.routes.url_helpers.consume_modal_my_module_repository_path(
|
Rails.application.routes.url_helpers.consume_modal_my_module_repository_path(
|
||||||
|
@ -116,17 +113,20 @@ module RepositoryDatatableHelper
|
||||||
if record.consumed_stock.present?
|
if record.consumed_stock.present?
|
||||||
row['consumedStock'][:value] = {
|
row['consumedStock'][:value] = {
|
||||||
consumed_stock: record.consumed_stock,
|
consumed_stock: record.consumed_stock,
|
||||||
unit: record.repository_stock_value&.repository_stock_unit_item&.data
|
consumed_stock_formatted:
|
||||||
|
"#{record.consumed_stock} #{record.repository_stock_value&.repository_stock_unit_item&.data}"
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
row['consumedStock']['stock_present'] = stock_present
|
||||||
|
row['consumedStock']['consumption_managable'] = consumption_managable
|
||||||
end
|
end
|
||||||
|
|
||||||
row
|
row
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def prepare_snapshot_row_columns(repository_rows, columns_mappings, team)
|
def prepare_snapshot_row_columns(repository_rows, columns_mappings, team, options = {})
|
||||||
repository_rows.map do |record|
|
repository_rows.map do |record|
|
||||||
row = {
|
row = {
|
||||||
'DT_RowId': record.id,
|
'DT_RowId': record.id,
|
||||||
|
@ -143,6 +143,17 @@ module RepositoryDatatableHelper
|
||||||
row[columns_mappings[cell.repository_column.id]] = display_cell_value(cell, team)
|
row[columns_mappings[cell.repository_column.id]] = display_cell_value(cell, team)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if options[:include_stock_consumption] && record.repository.has_stock_management?
|
||||||
|
stock_present = record.repository_stock_cell.present?
|
||||||
|
row['stock'] = stock_present ? display_cell_value(record.repository_stock_cell, record.repository.team) : {}
|
||||||
|
row['consumedStock'] =
|
||||||
|
if stock_present
|
||||||
|
display_cell_value(record.repository_stock_consumption_cell, record.repository.team)
|
||||||
|
else
|
||||||
|
{}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
row
|
row
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module RepositoryDatatable
|
||||||
|
class RepositoryStockConsumptionValueSerializer < RepositoryBaseValueSerializer
|
||||||
|
def value
|
||||||
|
{
|
||||||
|
consumed_stock_formatted: object.formatted,
|
||||||
|
consumed_stock: object.data
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -2,7 +2,10 @@
|
||||||
|
|
||||||
json.draw @draw
|
json.draw @draw
|
||||||
json.data do
|
json.data do
|
||||||
json.array! prepare_snapshot_row_columns(@repository_rows, @columns_mappings, @repository_snapshot.team)
|
json.array! prepare_snapshot_row_columns(@repository_rows,
|
||||||
|
@columns_mappings,
|
||||||
|
@repository_snapshot.team,
|
||||||
|
{ include_stock_consumption: @repository_snapshot.has_stock_management? })
|
||||||
end
|
end
|
||||||
json.recordsFiltered @repository_rows.first ? @repository_rows.first.filtered_count : 0
|
json.recordsFiltered @repository_rows.first ? @repository_rows.first.filtered_count : 0
|
||||||
json.recordsTotal @all_rows_count
|
json.recordsTotal @all_rows_count
|
||||||
|
|
Loading…
Add table
Reference in a new issue