Implement repository snapshots displaying on assigned items full view modal [SCI-6442] (#3862)

This commit is contained in:
Alex Kriuchykhin 2022-02-16 09:40:48 +01:00 committed by GitHub
parent af011a3bb8
commit 9c4fca1b86
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 57 additions and 28 deletions

View file

@ -16,7 +16,7 @@ var MyModuleRepositories = (function() {
{
visible: true,
searchable: false,
data: otherColumnCount
data: 'stock'
},
{
visible: true,
@ -40,7 +40,7 @@ var MyModuleRepositories = (function() {
className: 'item-consumed-stock',
sWidth: '1%',
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);
}
if (data !== undefined && data.stock_present !== undefined) {
return $.fn.dataTable.render.RepositoryConsumedStockValue(data);
return $.fn.dataTable.render.RepositoryStockConsumptionValue(data);
}
return data;
}

View file

@ -140,6 +140,6 @@ $.fn.dataTable.render.editRepositoryStockValue = function(formId, columnId, cell
return cell.node();
};
$.fn.dataTable.render.editRepositoryConsumedStockValue = function(formId, columnId, cell) {
$.fn.dataTable.render.editRepositoryStockConsumptionValue = function(formId, columnId, cell) {
return cell.node();
};

View file

@ -205,16 +205,19 @@ $.fn.dataTable.render.RepositoryStockValue = function(data, row) {
</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.consumption_managable) {
return `<a href="${data.updateStockConsumptionUrl}" class="manage-repository-consumed-stock-value-link stock-value-view-render">
${data.value.consumed_stock} ${data.value.unit || ''}
</a>`;
return `<a href="${data.updateStockConsumptionUrl}"
class="manage-repository-consumed-stock-value-link stock-value-view-render">
${data.value.consumed_stock_formatted}
</a>`;
}
return `<span class="stock-value-view-render">
${data.value.consumed_stock} ${data.value.unit || ''}
</span>`;
return `<span class="stock-value-view-render">${data.value.consumed_stock_formatted}</span>`;
}
if (data.stock_present && data.consumption_managable) {
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>';
};
$.fn.dataTable.render.defaultRepositoryStockValue = function() {
return $.fn.dataTable.render.RepositoryStockValue();
$.fn.dataTable.render.defaultRepositoryStockConsumptionValue = function() {
return $.fn.dataTable.render.RepositoryStockConsumptionValue();
};

View file

@ -93,20 +93,17 @@ module RepositoryDatatableHelper
consumption_managable =
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['1'][:stock_managable] = stock_managable
row['consumedStock'] = {
stock_present: stock_present,
consumption_managable: consumption_managable
}
row['stock'] = stock_present ? display_cell_value(record.repository_stock_cell, record.repository.team) : {}
row['stock'][:stock_managable] = stock_managable
if record.repository.is_a?(RepositorySnapshot)
if record.repository_stock_consumption_value.present?
row['consumedStock'][:value] = {
consumed_stock: record.repository_stock_consumption_value.amount,
unit: record.repository_stock_consumption_value.repository_stock_unit_item&.data
}
end
row['consumedStock'] =
if record.repository_stock_consumption_value.present?
display_cell_value(record.repository_stock_consumption_cell, record.repository.team)
else
{}
end
else
row['consumedStock'] = {}
if consumption_managable
row['consumedStock'][:updateStockConsumptionUrl] =
Rails.application.routes.url_helpers.consume_modal_my_module_repository_path(
@ -116,17 +113,20 @@ module RepositoryDatatableHelper
if record.consumed_stock.present?
row['consumedStock'][:value] = {
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
row['consumedStock']['stock_present'] = stock_present
row['consumedStock']['consumption_managable'] = consumption_managable
end
row
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|
row = {
'DT_RowId': record.id,
@ -143,6 +143,17 @@ module RepositoryDatatableHelper
row[columns_mappings[cell.repository_column.id]] = display_cell_value(cell, team)
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
end
end

View file

@ -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

View file

@ -2,7 +2,10 @@
json.draw @draw
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
json.recordsFiltered @repository_rows.first ? @repository_rows.first.filtered_count : 0
json.recordsTotal @all_rows_count