brother_ql_web/views/labeldesigner.jinja2

159 lines
6.4 KiB
Plaintext
Raw Normal View History

2016-11-25 22:21:42 +02:00
{% extends "base.jinja2" %}
{% block page_title %}{{ title }}{% endblock %}
{% block jumbotron %}
<h1>{{page_headline}}</h1>
<p>Design your label and print it...</p>
<!--<p><a class="btn btn-primary btn-lg" href="#" role="button">History of printed labels</a></p>-->
{% endblock %}
2016-11-25 22:21:42 +02:00
{% block content %}
<div class="row">
<div class="col-md-4">
<fieldset class="form-group">
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapse1">
<span class="glyphicon glyphicon-file" aria-hidden="true"></span> Label Size</a>
</h4>
</div>
<div id="collapse1" class="panel-collapse collapse">
<div class="chooser panel-body">
<label for="labelSize" style="display: none">Label Size:</label>
<select class="form-control" id="labelSize" onChange="preview()">
{% for label_size in label_sizes %}<option value="{{label_size[0]}}">{{label_size[1]}}</option>{% endfor %}
</select>
</div> <!-- class="chooser panel-body" -->
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapse2">
<span class="glyphicon glyphicon-text-size" aria-hidden="true"></span>
<!-- <span class="glyphicon glyphicon-text" aria-hidden="true"></span> -->
Font Settings
</a>
</h4>
</div>
<div id="collapse2" class="panel-collapse collapse in">
<div class="chooser panel-body">
<label for="fontFamily">Font Family:</label>
<select class="form-control" id="fontFamily" onChange="preview()">
{% for font in fonts %}<option>{{font}}</option> {% endfor %}
</select>
<label for="fontSize" >Font Size:</label>
<input id="fontSize" class="form-control" type="number" min="1" value="70" max="150" onChange="preview()" required>
2017-01-03 21:43:23 +02:00
<label for="fontAlign" class="control-label input-group">Font Alignment:</label>
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-default">
<input type="radio" name="fontAlign" onchange="preview()" value="left" aria-label="Left Align"><span class="glyphicon glyphicon-align-left" aria-hidden="true"></span>
</label>
<label class="btn btn-default active">
<input type="radio" name="fontAlign" onchange="preview()" value="center" aria-label="Center Align" checked=""><span class="glyphicon glyphicon-align-center" aria-hidden="true"></span>
</label>
<label class="btn btn-default">
<input type="radio" name="fontAlign" onchange="preview()" value="right" aria-label="Right Align"><span class="glyphicon glyphicon-align-right" aria-hidden="true"></span>
</label>
</div>
</div> <!-- class="chooser panel-body" -->
2017-01-03 21:43:23 +02:00
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapse3">
Detailed Settings</a>
</h4>
</div>
<div id="collapse3" class="panel-collapse collapse">
<div class="chooser panel-body">
Some more settings will show here, once implemented.
</div> <!-- class="chooser panel-body" -->
</div>
</div>
</div>
2016-11-25 22:21:42 +02:00
</fieldset>
</div>
<div class="col-md-4">
<fieldset class="form-group">
<label for="labelText">Label Text:</label>
<textarea rows="7" id="labelText" class="form-control" onChange="preview()" onInput="preview()"></textarea>
</fieldset>
</div>
2016-11-25 22:21:42 +02:00
<div class="col-md-4">
<fieldset class="form-group">
<label for="previewImg">Label Preview:</label>
<img id="previewImg" style="border: 1px solid #444; width: 90%; margin: 5%;"/>
<button id="printButton" type="button" class="btn btn-primary btn-block btn-lg" onClick="print()">
<span class="glyphicon glyphicon-print" aria-hidden="true"></span> Print
</button>
2016-11-25 22:21:42 +02:00
</fieldset>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Status</h3>
</div>
<div id="statusPanel" class="panel-body">
- undefined -
</div>
</div>
2016-11-25 22:21:42 +02:00
</div>
</div>
{% endblock %}
{% block javascript %}
var text = $('#labelText');
function formData() {
//var text = $('#labelText').val().replace(/\n/g, "%0A");
var text = $('#labelText').val();
if (text == '') text = ' ';
return {
text: text,
font_family: $('#fontFamily option:selected').text(),
font_size: $('#fontSize').val(),
label_size: $('#labelSize option:selected').val(),
align: $('input[name=fontAlign]:checked').val()
}
2016-11-25 22:21:42 +02:00
}
function preview() {
$.ajax({
type: 'POST',
url: '/api/preview/text?return_format=base64',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
data: formData(),
2016-11-25 22:21:42 +02:00
success: function( data ) {
$('#previewImg').attr('src', 'data:image/png;base64,' + data);
2016-11-25 22:21:42 +02:00
}
});
}
function setStatus(data) {
if (data['success'])
$('#statusPanel').html('<div id="statusBox" class="alert alert-success" role="alert"><i class="glyphicon glyphicon-check"></i><span>Printing was successful.</span></div>');
else
$('#statusPanel').html('<div id="statusBox" class="alert alert-warning" role="alert"><i class="glyphicon glyphicon-alert"></i><span>Printing was unsuccessful:<br />'+data['message']+'</span></div>');
$('#printButton').prop('disabled', false);
}
2016-11-25 22:21:42 +02:00
function print() {
$('#printButton').prop('disabled', true);
$('#statusPanel').html('');
$.ajax({
type: 'POST',
dataType: 'json',
data: formData(),
url: '/api/print/text',
success: setStatus,
error: setStatus
});
}
2016-11-25 22:21:42 +02:00
preview()
2016-11-25 22:21:42 +02:00
{% endblock %}