mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 23:16:15 +08:00
Add label template dropdown to print dialog [SCI-7051] (#4369)
This commit is contained in:
parent
6706e886e3
commit
185bf0b197
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -10,6 +10,11 @@
|
|||
min-height: 4em;
|
||||
}
|
||||
|
||||
.labels-container {
|
||||
margin-bottom: 1em;
|
||||
min-height: 4em;
|
||||
}
|
||||
|
||||
.print-copies-input {
|
||||
margin-left: .5em;
|
||||
width: 50px;
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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 }
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue