diff --git a/app/assets/javascripts/my_modules/repositories.js b/app/assets/javascripts/my_modules/repositories.js
index 32d9e05b6..6a199d66c 100644
--- a/app/assets/javascripts/my_modules/repositories.js
+++ b/app/assets/javascripts/my_modules/repositories.js
@@ -11,6 +11,41 @@ var MyModuleRepositories = (function() {
var FULL_VIEW_TABLE_SCROLLBAR;
var SELECTED_ROWS = {};
+ function stockManagementColumns(otherColumnCount) {
+ return [
+ {
+ visible: true,
+ searchable: false,
+ data: otherColumnCount
+ },
+ {
+ visible: true,
+ searchable: false,
+ data: otherColumnCount + 1
+ }
+ ];
+ }
+
+ function stockManagementColumnDefs() {
+ return [
+ {
+ targets: 'row-stock',
+ className: 'item-stock',
+ sWidth: '1%',
+ render: function(data) {
+ return $.fn.dataTable.render.RepositoryStockValue(data);
+ }
+ }, {
+ targets: 'row-consumption',
+ className: 'item-consumed-stock',
+ sWidth: '1%',
+ render: function(data) {
+ return $.fn.dataTable.render.RepositoryConsumedStockValue(data);
+ }
+ }
+ ];
+ }
+
function reloadRepositoriesList(repositoryId) {
var repositoriesContainer = $('#assigned-items-container');
$.get(repositoriesContainer.data('repositories-list-url'), function(result) {
@@ -38,10 +73,17 @@ var MyModuleRepositories = (function() {
defaultContent: $.fn.dataTable.render['default' + column.dataset.type](column.id)
});
});
+
+ if ($(tableContainer).data('stock-management')) {
+ let column = stockManagementColumns(columns.length)[1];
+ column.data -= 1;
+ columns.push(column);
+ }
+
return columns;
}
- function fullViewColumnDefs() {
+ function fullViewColumnDefs(tableContainer) {
let columnDefs = [{
targets: 0,
visible: true,
@@ -89,11 +131,19 @@ var MyModuleRepositories = (function() {
if (typeof data === 'object' && $.fn.dataTable.render[data.value_type]) {
return $.fn.dataTable.render[data.value_type](data);
}
+ if (data !== undefined && data.stock_present !== undefined) {
+ return $.fn.dataTable.render.RepositoryConsumedStockValue(data);
+ }
return data;
}
}
);
+ if ($(tableContainer).data('stock-management')) {
+ let stockColumnDef = stockManagementColumnDefs()[1];
+ columnDefs.push(stockColumnDef);
+ }
+
return columnDefs;
}
@@ -107,16 +157,7 @@ var MyModuleRepositories = (function() {
];
if ($(tableContainer).data('stock-management')) {
- columns.push({
- visible: true,
- searchable: false,
- data: 1
- });
- columns.push({
- visible: true,
- searchable: false,
- data: 2
- });
+ columns = columns.concat(stockManagementColumns(columns.length));
}
return columns;
@@ -133,21 +174,7 @@ var MyModuleRepositories = (function() {
}];
if ($(tableContainer).data('stock-management')) {
- columnDefs.push({
- targets: 1,
- className: 'item-stock',
- sWidth: '1%',
- render: function(data) {
- return $.fn.dataTable.render.RepositoryStockValue(data);
- }
- }, {
- targets: 2,
- className: 'item-consumed-stock',
- sWidth: '1%',
- render: function(data) {
- return $.fn.dataTable.render.RepositoryConsumedStockValue(data);
- }
- });
+ columnDefs = columnDefs.concat(stockManagementColumnDefs());
}
return columnDefs;
@@ -192,6 +219,7 @@ var MyModuleRepositories = (function() {
}
function reloadSimpleTable() {
+ if (!SIMPLE_TABLE) return;
SIMPLE_TABLE.ajax.reload(null, false);
}
@@ -220,7 +248,7 @@ var MyModuleRepositories = (function() {
type: 'POST'
},
columns: tableColumns(tableContainer, options.skipCheckbox),
- columnDefs: fullViewColumnDefs(),
+ columnDefs: fullViewColumnDefs(tableContainer),
fnInitComplete: function() {
var dataTableWrapper = $(tableContainer).closest('.dataTables_wrapper');
@@ -748,6 +776,10 @@ var MyModuleRepositories = (function() {
},
reloadSimpletable: () => {
reloadSimpleTable();
+ },
+ reloadFullViewTable: () => {
+ if (!FULL_VIEW_TABLE) return;
+ FULL_VIEW_TABLE.ajax.reload(null, false);
}
};
}());
diff --git a/app/assets/javascripts/my_modules/stock.js b/app/assets/javascripts/my_modules/stock.js
index 64f0c7a9e..031e68fdc 100644
--- a/app/assets/javascripts/my_modules/stock.js
+++ b/app/assets/javascripts/my_modules/stock.js
@@ -27,6 +27,7 @@ var MyModuleStockConsumption = (function() {
$(CONSUMPTION_MODAL + ' form').on('ajax:success', function() {
MyModuleRepositories.reloadSimpletable();
+ MyModuleRepositories.reloadFullViewTable();
$manageModal.modal('hide');
$(WARNING_MODAL).modal('hide');
});
diff --git a/app/controllers/my_module_repositories_controller.rb b/app/controllers/my_module_repositories_controller.rb
index c4d6214f3..e9d76d47a 100644
--- a/app/controllers/my_module_repositories_controller.rb
+++ b/app/controllers/my_module_repositories_controller.rb
@@ -18,10 +18,12 @@ class MyModuleRepositoriesController < ApplicationController
@datatable_params = {
view_mode: params[:view_mode],
- my_module: @my_module
+ my_module: @my_module,
+ include_stock_consumption: @repository.has_stock_management?
}
@all_rows_count = datatable_service.all_count
@columns_mappings = datatable_service.mappings
+
if params[:simple_view]
repository_rows = datatable_service.repository_rows
rows_view = 'repository_rows/simple_view_index.json'
@@ -101,7 +103,10 @@ class MyModuleRepositoriesController < ApplicationController
def full_view_table
render json: {
- html: render_to_string(partial: 'my_modules/repositories/full_view_table')
+ html: render_to_string(
+ partial: 'my_modules/repositories/full_view_table',
+ locals: { include_stock_consumption: params[:include_stock_consumption] }
+ )
}
end
diff --git a/app/helpers/repository_datatable_helper.rb b/app/helpers/repository_datatable_helper.rb
index abb3ff87c..5c8d30003 100644
--- a/app/helpers/repository_datatable_helper.rb
+++ b/app/helpers/repository_datatable_helper.rb
@@ -5,32 +5,37 @@ module RepositoryDatatableHelper
def prepare_row_columns(repository_rows, repository, columns_mappings, team, options = {})
repository_rows.map do |record|
- row = {
- 'DT_RowId': record.id,
- 'DT_RowAttr': { 'data-state': row_style(record) },
+ default_cells = {
'1': assigned_row(record),
'2': record.code,
'3': escape_input(record.name),
'4': I18n.l(record.created_at, format: :full),
'5': escape_input(record.created_by.full_name),
'6': (record.archived_on ? I18n.l(record.archived_on, format: :full) : ''),
- '7': escape_input(record.archived_by&.full_name),
- 'recordInfoUrl': Rails.application.routes.url_helpers.repository_repository_row_path(repository, record)
+ '7': escape_input(record.archived_by&.full_name)
}
- row['manageStockUrl'] = if record.has_stock?
- Rails.application.routes.url_helpers
- .edit_repository_stock_repository_repository_row_url(
- repository,
- record
- )
- else
- Rails.application.routes.url_helpers
- .new_repository_stock_repository_repository_row_url(
- repository,
- record
- )
- end
+ row = {
+ 'DT_RowId': record.id,
+ 'DT_RowAttr': { 'data-state': row_style(record) },
+ 'recordInfoUrl': Rails.application.routes.url_helpers.repository_repository_row_path(repository, record)
+ }.merge(default_cells)
+
+ if options[:include_stock_consumption]
+ row['manageStockUrl'] = if record.has_stock?
+ Rails.application.routes.url_helpers
+ .edit_repository_stock_repository_repository_row_url(
+ repository,
+ record
+ )
+ else
+ Rails.application.routes.url_helpers
+ .new_repository_stock_repository_repository_row_url(
+ repository,
+ record
+ )
+ end
+ end
unless options[:view_mode]
row['recordUpdateUrl'] =
@@ -41,16 +46,37 @@ module RepositoryDatatableHelper
row['0'] = record[:row_assigned] if options[:my_module]
# Add custom columns
- record.repository_cells.each do |cell|
+ custom_cells = record.repository_cells
+
+ custom_cells.each do |cell|
row[columns_mappings[cell.repository_column.id]] =
display_cell_value(cell, team)
end
+ if options[:include_stock_consumption] && record.repository.has_stock_management? && options[:my_module]
+ row[(default_cells.length + custom_cells.length + 1).to_s] =
+ if record.repository_stock_cell.present?
+ display_cell_value(record.repository_stock_cell, record.repository.team)
+ end
+ row[(default_cells.length + custom_cells.length + 2).to_s] = {
+ stock_present: record.repository_stock_cell.present?,
+ updateStockConsumptionUrl: Rails.application.routes.url_helpers.consume_modal_my_module_repository_path(
+ options[:my_module],
+ record.repository,
+ row_id: record.id
+ ),
+ value: {
+ consumed_stock_formatted: record.consumed_stock,
+ unit: record.repository_stock_value.repository_stock_unit_item&.data
+ }
+ }
+ end
+
row
end
end
- def prepare_simple_view_row_columns(repository_rows, my_module)
+ def prepare_simple_view_row_columns(repository_rows, my_module, options = {})
repository_rows.map do |record|
row = {
DT_RowId: record.id,
@@ -59,7 +85,7 @@ module RepositoryDatatableHelper
recordInfoUrl: Rails.application.routes.url_helpers.repository_repository_row_path(record.repository, record)
}
- if record.repository.has_stock_management?
+ if options[:include_stock_consumption] && record.repository.has_stock_management?
row['1'] =
if record.repository_stock_cell.present?
display_cell_value(record.repository_stock_cell, record.repository.team)
diff --git a/app/views/my_modules/repositories/_full_view_sidebar.html.erb b/app/views/my_modules/repositories/_full_view_sidebar.html.erb
index 8d2dfe2dd..632f09ea4 100644
--- a/app/views/my_modules/repositories/_full_view_sidebar.html.erb
+++ b/app/views/my_modules/repositories/_full_view_sidebar.html.erb
@@ -10,7 +10,7 @@
<%= t('my_modules.repository.snapshots.full_view.live') %>
diff --git a/app/views/my_modules/repositories/_full_view_table.html.erb b/app/views/my_modules/repositories/_full_view_table.html.erb
index 9b7873577..374633b83 100644
--- a/app/views/my_modules/repositories/_full_view_table.html.erb
+++ b/app/views/my_modules/repositories/_full_view_table.html.erb
@@ -9,7 +9,8 @@
data-load-state-url="<%= repository_load_table_state_path(@repository) %>"
data-export-url="<%= export_repository_my_module_repository_path(@my_module ,@repository) %>"
data-versions-sidebar-url="<%= full_view_sidebar_my_module_repository_snapshots_path(@my_module, @repository) %>"
->
+ data-stock-management="<%= include_stock_consumption && @repository.has_stock_management? %>"
+ data-stock-consumption-editable="<%= include_stock_consumption && can_update_my_module_stock_consumption?(@my_module) %>">
diff --git a/app/views/my_modules/repositories/_repositories_list.html.erb b/app/views/my_modules/repositories/_repositories_list.html.erb
index 7684a5a52..8905b4400 100644
--- a/app/views/my_modules/repositories/_repositories_list.html.erb
+++ b/app/views/my_modules/repositories/_repositories_list.html.erb
@@ -16,7 +16,7 @@
<% end %>
@@ -28,12 +28,12 @@
data-name-column-id="<%= assigned_repository_simple_view_name_column_id(repository) %>"
>
@@ -37,6 +38,9 @@
<%= display_tooltip(column.name) %>
<% end %>
+ <% if include_stock_consumption && @repository.has_stock_management? && can_update_my_module_stock_consumption?(@my_module) %>
+ <%= t("repositories.table.row_consumption") %>
+ <% end %>