Untitled
unknown
plain_text
2 years ago
5.9 kB
5
Indexable
var canvas = page.getWidget("PalletDrawing");
var lastString = "";
var lastSizeArray = [];
var lastState = -1;
var timer = 0;
var show = true;
var checkCursorTimer = null;
var lastStateMachine = -1;
var lastListonSize = -1;
var lastEspesorDisco = -1;
function sizesToArray(_size_string, _liston_size, _espesor_disco)
{
var _total_size = 0;
var _ret = [];
var _comas = _size_string.split(",");
for (i=0; i<_comas.length; i++)
{
var _reps = _comas[i].split("x");
var _value;
if (_reps.length > 1)
{
var _num = parseInt(_reps[0]);
_value = parseInt(_reps[1]) + _espesor_disco;
for (k=0; k<_num; k++)
{
_ret.push(_value);
_total_size += _value;
}
}
else
{
_value = parseInt(_comas[i]) + _espesor_disco;
_ret.push(_value);
_total_size += _value;
}
}
//add restante...
_value = _liston_size - _total_size;
_ret.push(_value);
return _ret;
}
function scaleArray(_array, _scale)
{
var _ret = [];
for (i=0; i<_array.length; i++)
{
_ret.push(_array[i] * _scale);
}
return _ret;
}
function checkUpdate()
{
var _state = new State();
var _size_string = project.getTag("recipe_formula_corte", _state, 0);
var _liston_size = project.getTag("recipe_largo_barra", _state, 0);
var _espesor_disco = parseFloat(project.getTag("recipe_e_disco", _state, 0));
var _update = false;
if (lastString === "" || lastString.localeCompare(_size_string) !== 0)
{
lastString = (' ' + _size_string).slice(1);
_update = true;
}
if (lastListonSize !== _liston_size)
{
lastListonSize = _liston_size;
_update = true;
}
if (lastEspesorDisco !== _espesor_disco)
{
lastEspesorDisco = _espesor_disco;
_update = true;
}
return _update;
}
function PalletDrawing_onDraw(me, eventInfo)
{
var _ctx = canvas.context2d;
if (_ctx === null)
return;
var _state = new State();
var MAX_SIZE = project.getTag("ini_max_size", _state, 0);
var _size_string = project.getTag("recipe_formula_corte", _state, 0);
var _liston_size = project.getTag("recipe_largo_barra", _state, 0);
var _espesor_disco = parseFloat(project.getTag("recipe_e_disco", _state, 0));
var _cur_trozo = project.getTag("recipe_current_trozo", _state, 0);
var _size_array = [];
if (checkUpdate())
{
_size_array = sizesToArray(_size_string, _liston_size, _espesor_disco);
project.setTag("recipe_data", scaleArray(_size_array, 10), -1, true);
project.setTag("recipe_num_data", _size_array.length);
lastSizeArray = _size_array;
// project.showMessage(lastString2 + " <> " + _size_string);
}
else
{
_size_array = lastSizeArray;
}
_ctx.font = "bold 15px MS Shell Dlg";
var _x = 0;
var _y = 30;
var _w = 0;
var _h = 50;
var _cur_size = 0;
var _total_w = 0;
var _total_size = 0;
for (i=0; i<_size_array.length-1; i++)
{
if ((i % 2) == 0)
_ctx.fillStyle ="green";
else
_ctx.fillStyle ="blue";
_cur_size = _size_array[i];
_w = (_cur_size / MAX_SIZE) * canvas.width;
_ctx.fillRect(_x, 0, _w, _h);
_ctx.fillStyle ="yellow";
_ctx.textAlign = "center";
_ctx.fillText(parseFloat((_cur_size - _espesor_disco).toFixed(2)), _x + _w/2, _y);
if (_cur_trozo === i && show)
{
_ctx.beginPath();
_ctx.lineWidth = "2";
_ctx.strokeStyle = "yellow";
_ctx.rect(_x+2, 2, _w-4, _h-4);
_ctx.stroke();
}
_x += _w;
_total_w += _w;
_total_size += _cur_size;
}
//Sobrante del listone...
if (_size_array.length)
{
_cur_size = _size_array[i];
_w = (_cur_size / MAX_SIZE) * canvas.width;
//_w = ((_liston_size - _total_size) / MAX_SIZE) * canvas.width;
_ctx.fillStyle = "red";
_ctx.fillRect(_x, 0, _w, _h);
_ctx.fillStyle ="yellow";
_ctx.textAlign = "center";
//_ctx.fillText(parseFloat((_liston_size - _total_size).toFixed(2)), _x + _w/2, _y);
_ctx.fillText(parseFloat(_cur_size.toFixed(2)), _x + _w/2, _y);
_total_size += _cur_size;//(_liston_size - _total_size);
}
//El restante...
_x += _w;
_w = ((MAX_SIZE - _total_size) / MAX_SIZE) * canvas.width;
_ctx.fillStyle = "gray";
_ctx.fillRect(_x, 0, _w, _h);
_ctx.fillStyle ="yellow";
_ctx.textAlign = "center";
_ctx.fillText(parseFloat((MAX_SIZE - _total_size).toFixed(2)), _x + _w/2, _y);
//canvas.update();
}
function Automatico_onActivate(me, eventInfo)
{
page.setInterval("OnUpdate()", 1000);
//project.showMessage("hola");
}
function OnCheckCursor()
{
if ((Date.now() - timer) >= 250)
{
timer = Date.now();
show = !show;
canvas.update();
}
}
function OnUpdate()
{
var _state = new State();
var _state_machine = project.getTag("hmi_estado_maquina", _state, 0);
//project.showMessage(_state_machine);
if (lastStateMachine !== _state_machine)
{
//project.showMessage(_state_machine + " = " + lastStateMachine);
if (_state_machine === 1) //1=ENMARCHA
{
timer = Date.now();
checkCursorTimer = page.setInterval("OnCheckCursor()", 200);
}
else
{
page.clearInterval(checkCursorTimer);
}
lastStateMachine = _state_machine;
}
if (checkUpdate())
{
canvas.update();
}
}Editor is loading...
Leave a Comment