Add label template dropdown to print dialog [SCI-7051] (#4369)

This commit is contained in:
ajugo 2022-08-26 10:53:55 +02:00 committed by GitHub
parent 6706e886e3
commit 185bf0b197
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 58 additions and 4 deletions

View file

@ -3,6 +3,11 @@
(function() {
'use strict';
var LABEL_TEMPLATE_SELECTOR = '#label_template_id';
var LABEL_PRINTER_SELECTOR = '#label_printer_id';
var ZEBRA_LABEL = 'zebra';
var FLUICS_LABEL = 'fluics';
$(document).on('click', '.record-info-link', function(e) {
var that = $(this);
$.ajax({
@ -72,11 +77,46 @@
$(this).remove();
});
dropdownSelector.init('#modal-print-repository-row-label #label_printer_id', {
dropdownSelector.init('#modal-print-repository-row-label ' + LABEL_TEMPLATE_SELECTOR, {
noEmptyOption: true,
singleSelect: true,
closeOnSelect: true,
selectAppearance: 'simple'
selectAppearance: 'simple',
localFilter: function(options) {
var printerType = JSON.parse($('option:selected', LABEL_PRINTER_SELECTOR).attr('data-params')).type;
return options.filter(function(option, value) {
var labelType = JSON.parse($(value).attr('data-params')).type;
var showLabel = false;
if (printerType === FLUICS_LABEL) {
showLabel = [FLUICS_LABEL, ZEBRA_LABEL].some(el => labelType.toLowerCase().includes(el));
} else if (printerType === ZEBRA_LABEL) {
showLabel = labelType.toLowerCase().includes(ZEBRA_LABEL);
}
return showLabel;
});
}
});
dropdownSelector.init('#modal-print-repository-row-label ' + LABEL_PRINTER_SELECTOR, {
noEmptyOption: true,
singleSelect: true,
closeOnSelect: true,
selectAppearance: 'simple',
onChange: function() {
var printerType = JSON.parse($('option:selected', LABEL_PRINTER_SELECTOR).attr('data-params')).type;
var optionsLabel = $(LABEL_TEMPLATE_SELECTOR).find('option');
var index;
var value;
var labelType;
for (index = 0; index < optionsLabel.length; index += 1) {
value = optionsLabel[index];
labelType = JSON.parse($(value).attr('data-params')).type;
if (labelType.toLowerCase().includes(printerType) && JSON.parse($(value).attr('data-params')).default) {
dropdownSelector.selectValues(LABEL_TEMPLATE_SELECTOR, $(value).attr('value'));
break;
}
}
}
});
});
});

View file

@ -10,6 +10,11 @@
min-height: 4em;
}
.labels-container {
margin-bottom: 1em;
min-height: 4em;
}
.print-copies-input {
margin-left: .5em;
width: 50px;

View file

@ -82,6 +82,7 @@ class RepositoryRowsController < ApplicationController
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: {

View file

@ -11,7 +11,7 @@ class LabelPrinter < ApplicationRecord
}
).freeze
enum type_of: { fluics: 0 }
enum type_of: { fluics: 0, zebra: 1 }
enum language_type: { zpl: 0 }
enum status: { ready: 0, busy: 1, out_of_labels: 2, unreachable: 3, error: 4 }

View file

@ -22,7 +22,14 @@
<% end %>
<div class=printers-container>
<label><%= t('repository_row.modal_print_label.printer') %></label>
<%= select_tag :label_printer_id, options_for_select(@printers.map { |p| [p.display_name, p.id] }) %>
<%= select_tag :label_printer_id, options_for_select(@printers.map { |p| [p.display_name, p.id,
{'data-params' => {type: p.type_of}.to_json}] }) %>
</div>
<div class=labels-container>
<label><%= t('repository_row.modal_print_label.label') %></label>
<%= select_tag :label_template_id, options_for_select(@label_templates.map { |p| [p.name, p.id,
{'data-params' => {type: p.type, default: p.default}.to_json}] }) %>
</div>
<p class="sci-input-container">
<label><%= t('repository_row.modal_print_label.number_of_copies') %></label>

View file

@ -2000,6 +2000,7 @@ en:
head_title_multiple: "Print label - %{repository_rows} rows"
id_label: "ID: %{repository_row_id}"
printer: "Printer"
label: "Label template"
number_of_copies: "Number of copies"
print_label: "Print label"
no_printers: