(function(){
λ.label = function(){
var mindata = {
id: "???",
name: "Name",
desc: "Description",
tags: []
};
var render;
function label()
{
this.canvas = null;
this.bitmap = null;
this.data = null;
this.busy = false;
this.set_template('standard');
this.renderpreview = new λ.ratelimiter(50, render, this);
}
var labelpt = label.prototype;
labelpt.set_template = function(tmpl){
this.template = λ.templates.get(tmpl);
this.update_canvas();
};
labelpt.set_canvas = function(canvas){
this.canvas = canvas;
this.update_canvas();
};
labelpt.set_data = function(data){
this.data = data;
this.render();
};
render = function(callback, preview){
if (preview === undef) preview = true;
var t = this;
var data = null;
var params = $.extend({}, mindata, t.data);
var time = labitrack.utils.time(function(){
t.busy = true;
data = t.template.draw(params, preview);
if (!preview) {
labitrack.utils.convert_to_monochrome(data);
} else {
t.bitmap = data;
t.update_canvas();
}
t.busy = false;
});
if (callback) {
callback.apply(t, [data, time]);
}
};
labelpt.render = function(callback, preview){
if (preview === false) {
return render.apply(this, [callback, preview]);
}
return this.renderpreview(callback);
};
labelpt.update_canvas = function(){
var bitmap = this.bitmap;
var canvas = this.canvas;
if (bitmap !== null && canvas !== null) {
canvas.width = bitmap.width;
canvas.height = bitmap.height;
var ctx = canvas.getContext('2d');
ctx.putImageData(bitmap, 0, 0);
}
};
labelpt.print = function(){
console.log("Print label on server");
this.render(function(data){
var ctx = labitrack.utils.new_context(data.width, data.height);
ctx.putImageData(data, 0, 0);
$.post('/print.json',
{
image: ctx.canvas.toDataURL('image/png')
}, function(data) { console.log('uploaded');}, 'json');
}, false);
};
return label;
}();
λ.templates = function(){
var templates = {};
return {
'register': function(key, value){
templates[key] = value;
},
'get': function(key){
return templates[key];
}
};
}();
}());