mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-30 08:54:31 +08:00
Add label printer modal to task [SCI-7270]
This commit is contained in:
parent
31554d0fd9
commit
eebdee5129
8 changed files with 61 additions and 59 deletions
|
@ -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();
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -10,6 +10,7 @@ function initPrintModalComponent() {
|
|||
|
||||
window.PrintModalComponent = new Vue({
|
||||
el: '.print-label-modal-container',
|
||||
name: 'PrintModalComponent',
|
||||
components: {
|
||||
'print-modal-container': PrintModalContainer
|
||||
},
|
||||
|
|
|
@ -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
|
||||
|
|
21
app/views/label_printers/_label_printer_modal.html.erb
Normal file
21
app/views/label_printers/_label_printer_modal.html.erb
Normal file
|
@ -0,0 +1,21 @@
|
|||
<div class="print-label-modal-container"
|
||||
data-print-url="<%= print_repository_row_path %>"
|
||||
data-zebra-progress-url="<%= print_zpl_repository_row_path%>"
|
||||
data-printers-url="<%= label_printers_path(format: :json) %>"
|
||||
data-label-templates-url="<%= label_templates_path(format: :json) %>"
|
||||
data-rows-url="<%= rows_to_print_repository_row_path %>"
|
||||
data-print-validation-url="<%= validate_label_template_columns_repository_row_path %>"
|
||||
data-label-preview-url="<%= zpl_preview_label_templates_path %>"
|
||||
data-fluics-info-url="<%= Constants::SCINOTE_FLUICS_URL %>"
|
||||
data-zebra-enabled="<%= Rails.configuration.x.zebra_print_enabled %>"
|
||||
>
|
||||
<print-modal-container
|
||||
:show-modal = "showModal"
|
||||
:row_ids = "row_ids"
|
||||
:urls = "urls"
|
||||
:zebra-enabled = "zebraEnabled"
|
||||
@close="closeModal"
|
||||
></print-modal-container>
|
||||
</div>
|
||||
|
||||
<%= javascript_pack_tag 'vue/repository_print_modal' %>
|
|
@ -55,3 +55,5 @@
|
|||
%>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= render partial: 'label_printers/label_printer_modal' %>
|
||||
|
|
|
@ -84,27 +84,7 @@
|
|||
<div class="toolbar-filter-buttons" style="display:none">
|
||||
</div>
|
||||
|
||||
<div class="print-label-modal-container"
|
||||
data-print-url="<%= print_repository_repository_rows_path(repository_id: @repository) %>"
|
||||
data-zebra-progress-url="<%= print_zpl_repository_repository_rows_path(repository_id: @repository)%>"
|
||||
data-printers-url="<%= label_printers_path(format: :json) %>"
|
||||
data-label-templates-url="<%= label_templates_path(format: :json) %>"
|
||||
data-rows-url="<%= rows_to_print_repository_repository_rows_path(repository_id: @repository) %>"
|
||||
data-print-validation-url="<%= validate_label_template_columns_repository_repository_rows_path(repository_id: @repository) %>"
|
||||
data-label-preview-url="<%= zpl_preview_label_templates_path %>"
|
||||
data-fluics-info-url="<%= Constants::SCINOTE_FLUICS_URL %>"
|
||||
data-zebra-enabled="<%= Rails.configuration.x.zebra_print_enabled %>"
|
||||
>
|
||||
<print-modal-container
|
||||
:show-modal = "showModal"
|
||||
:row_ids = "row_ids"
|
||||
:urls = "urls"
|
||||
:zebra-enabled = "zebraEnabled"
|
||||
@close="closeModal"
|
||||
></print-modal-container>
|
||||
</div>
|
||||
|
||||
<%= javascript_pack_tag 'vue/repository_print_modal' %>
|
||||
<%= render partial: 'label_printers/label_printer_modal' %>
|
||||
|
||||
<%= render partial: "repositories/repository_table",
|
||||
locals: {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue