From eebdee5129cd3613dd1a802c4ac0d761fa0ff505 Mon Sep 17 00:00:00 2001 From: Andrej Date: Thu, 29 Sep 2022 14:43:06 +0200 Subject: [PATCH] Add label printer modal to task [SCI-7270] --- .../sitewide/repository_row_info_modal.js | 12 ++++-- app/controllers/repository_rows_controller.rb | 43 +++++++------------ .../packs/vue/repository_print_modal.js | 1 + .../vue/repository_print_modal/container.vue | 4 +- .../_label_printer_modal.html.erb | 21 +++++++++ .../repositories/_repositories_list.html.erb | 2 + app/views/repositories/show.html.erb | 22 +--------- config/routes.rb | 15 ++++--- 8 files changed, 61 insertions(+), 59 deletions(-) create mode 100644 app/views/label_printers/_label_printer_modal.html.erb diff --git a/app/assets/javascripts/sitewide/repository_row_info_modal.js b/app/assets/javascripts/sitewide/repository_row_info_modal.js index 6decd929d..68afc4d1f 100644 --- a/app/assets/javascripts/sitewide/repository_row_info_modal.js +++ b/app/assets/javascripts/sitewide/repository_row_info_modal.js @@ -16,13 +16,13 @@ }).on('hidden.bs.modal', function() { $(this).remove(); }); - } */ + } function getReposotryRowsIds() { return $('[id="repository_row_ids_"]').map(function() { return this.value; }).get(); - } + } */ $(document).on('click', '.record-info-link', function(e) { var that = $(this); @@ -79,8 +79,14 @@ }); $(document).on('click', '.print-label-button', function() { + var selectedRows = $(this).data('rows'); PrintModalComponent.showModal = true; - PrintModalComponent.row_ids = RepositoryDatatable.selectedRows(); + if (selectedRows.length) { + $('#modal-info-repository-row').modal('hide'); + PrintModalComponent.row_ids = selectedRows; + } else { + PrintModalComponent.row_ids = RepositoryDatatable.selectedRows(); + } }); /* diff --git a/app/controllers/repository_rows_controller.rb b/app/controllers/repository_rows_controller.rb index f3680e298..4379c23cd 100644 --- a/app/controllers/repository_rows_controller.rb +++ b/app/controllers/repository_rows_controller.rb @@ -5,8 +5,9 @@ class RepositoryRowsController < ApplicationController include MyModulesHelper MAX_PRINTABLE_ITEM_NAME_LENGTH = 64 - before_action :load_repository, except: %i(show print_modal print rows_to_print print_zpl) - before_action :load_repository_or_snapshot, only: %i(print_modal print rows_to_print print_zpl) + before_action :load_repository, except: %i(show print rows_to_print print_zpl validate_label_template_columns) + before_action :load_repository_row_print, only: %i(print rows_to_print print_zpl validate_label_template_columns) + before_action :load_repository_or_snapshot, only: %i(print rows_to_print print_zpl validate_label_template_columns) before_action :load_repository_row, only: %i(update assigned_task_list active_reminder_repository_cells) before_action :check_read_permissions, except: %i(show create update delete_records copy_records reminder_repository_cells @@ -82,18 +83,17 @@ class RepositoryRowsController < ApplicationController def validate_label_template_columns label_template = LabelTemplate.where(team_id: current_team.id).find(params[:label_template_id]) - repository_rows = @repository.repository_rows.where(id: params[:rows]) - label_code = LabelTemplates::RepositoryRowService.new(label_template, repository_rows.first).render + label_code = LabelTemplates::RepositoryRowService.new(label_template, @repository_row.first).render render json: { label_code: label_code } rescue StandardError => e - label_code = LabelTemplates::RepositoryRowService.new(label_template, repository_rows.first, true).render + label_code = LabelTemplates::RepositoryRowService.new(label_template, @repository_row.first, true).render render json: { error: e, label_code: label_code }, status: :unprocessable_entity end def print_zpl label_template = LabelTemplate.find_by(id: params[:label_template_id]) - labels = RepositoryRow.where(id: params[:repository_row_ids]).flat_map do |repository_row| + labels = @repository_row.flat_map do |repository_row| LabelTemplates::RepositoryRowService.new(label_template, repository_row, true).render @@ -110,25 +110,8 @@ class RepositoryRowsController < ApplicationController ) end - def print_modal - @repository_rows = @repository.repository_rows.where(id: params[:rows]) - @printers = LabelPrinter.all - @label_templates = LabelTemplate.where(team_id: current_team).order(:name) - respond_to do |format| - format.json do - render json: { - html: render_to_string( - partial: 'repositories/print_label_modal.html.erb' - ) - } - end - end - end - def rows_to_print - @repository_rows = @repository.repository_rows.where(id: params[:rows]) - - render json: @repository_rows, each_serializer: RepositoryRowSerializer, user: current_user + render json: @repository_row, each_serializer: RepositoryRowSerializer, user: current_user end def print @@ -141,7 +124,7 @@ class RepositoryRowsController < ApplicationController label_printer = LabelPrinter.find(params[:label_printer_id]) label_template = LabelTemplate.find_by(id: params[:label_template_id]) - job_ids = RepositoryRow.where(id: params[:repository_row_ids]).flat_map do |repository_row| + job_ids = @repository_row.flat_map do |repository_row| LabelPrinters::PrintJob.perform_later( label_printer, LabelTemplates::RepositoryRowService.new(label_template, @@ -318,9 +301,15 @@ class RepositoryRowsController < ApplicationController render_404 unless @repository end + def load_repository_row_print + @repository_row = RepositoryRow.where(id: params[:rows]) + + render_404 unless @repository_row + end + def load_repository_or_snapshot - @repository = Repository.accessible_by_teams(current_team).find_by(id: params[:repository_id]) - @repository ||= RepositorySnapshot.find_by(id: params[:repository_id]) + @repository = Repository.accessible_by_teams(current_team).find_by(id: @repository_row.first.repository_id) + @repository ||= RepositorySnapshot.find_by(id: @repository_row.first.repository_id) render_404 unless @repository end diff --git a/app/javascript/packs/vue/repository_print_modal.js b/app/javascript/packs/vue/repository_print_modal.js index e9aa02a28..62f638208 100644 --- a/app/javascript/packs/vue/repository_print_modal.js +++ b/app/javascript/packs/vue/repository_print_modal.js @@ -10,6 +10,7 @@ function initPrintModalComponent() { window.PrintModalComponent = new Vue({ el: '.print-label-modal-container', + name: 'PrintModalComponent', components: { 'print-modal-container': PrintModalContainer }, diff --git a/app/javascript/vue/repository_print_modal/container.vue b/app/javascript/vue/repository_print_modal/container.vue index bdc2a057e..c37f32a17 100644 --- a/app/javascript/vue/repository_print_modal/container.vue +++ b/app/javascript/vue/repository_print_modal/container.vue @@ -190,12 +190,12 @@ printer_name: this.selectedPrinter.attributes.name, number_of_copies: this.copies, label_template_id: this.selectedTemplate.id, - repository_row_ids: this.row_ids + rows: this.row_ids } ); } else { $.post(this.urls.print, { - repository_row_ids: this.row_ids, + rows: this.row_ids, label_printer_id: this.selectedPrinter.id, label_template_id: this.selectedTemplate.id, copies: this.copies diff --git a/app/views/label_printers/_label_printer_modal.html.erb b/app/views/label_printers/_label_printer_modal.html.erb new file mode 100644 index 000000000..7ef58851f --- /dev/null +++ b/app/views/label_printers/_label_printer_modal.html.erb @@ -0,0 +1,21 @@ + + +<%= javascript_pack_tag 'vue/repository_print_modal' %> diff --git a/app/views/my_modules/repositories/_repositories_list.html.erb b/app/views/my_modules/repositories/_repositories_list.html.erb index 621677a87..483e28d4d 100644 --- a/app/views/my_modules/repositories/_repositories_list.html.erb +++ b/app/views/my_modules/repositories/_repositories_list.html.erb @@ -55,3 +55,5 @@ %> <% end %> + +<%= render partial: 'label_printers/label_printer_modal' %> diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index 004788bd5..19d024f67 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -84,27 +84,7 @@ - - - <%= javascript_pack_tag 'vue/repository_print_modal' %> + <%= render partial: 'label_printers/label_printer_modal' %> <%= render partial: "repositories/repository_table", locals: { diff --git a/config/routes.rb b/config/routes.rb index 890f2584c..84d460a1e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -600,6 +600,15 @@ Rails.application.routes.draw do resources :comments, only: %i(index create update destroy) + resources :repository_rows, only: %i() do + member do + get :rows_to_print + post :print + get :print_zpl + post :validate_label_template_columns + end + end + resources :repositories do post 'repository_index', to: 'repository_rows#index', @@ -651,12 +660,6 @@ Rails.application.routes.draw do end resources :repository_table_filters, only: %i(index show create update destroy) resources :repository_rows, only: %i(create show update) do - collection do - get :rows_to_print - post :print - get :print_zpl - post :validate_label_template_columns - end member do get :assigned_task_list get :active_reminder_repository_cells