2021-05-17 23:38:10 +05:00
|
|
|
|
var canvas = document.getElementsByTagName("canvas")[0];
|
|
|
|
|
var ctx = canvas.getContext("2d");
|
|
|
|
|
var menu = document.getElementById('menu');
|
|
|
|
|
var chkText = document.getElementById('PText');
|
|
|
|
|
var chkData = document.getElementById('DefData');
|
|
|
|
|
var chkRotate = document.getElementById('Rotate');
|
|
|
|
|
var chkloop = document.getElementById('ChkLoop');
|
|
|
|
|
var but1 = document.getElementById('TestPercent');
|
|
|
|
|
var but2 = document.getElementById('TestProcess');
|
|
|
|
|
var but3 = document.getElementById('TestBlinkStatus');
|
|
|
|
|
var but4 = document.getElementById('TestNumberColumn')
|
|
|
|
|
var but5 = document.getElementById('TestDiagramStove');
|
|
|
|
|
var but6 = document.getElementById('TestPost');
|
|
|
|
|
var text = document.getElementById('TestDiv');
|
|
|
|
|
|
|
|
|
|
//Функция изменения размера полотна
|
|
|
|
|
function Resize() {
|
|
|
|
|
canvas.style.margin = "10px";
|
|
|
|
|
canvas.width = window.innerWidth - 20;
|
|
|
|
|
canvas.height = window.innerHeight - 30 - menu.clientHeight;
|
|
|
|
|
ctx = canvas.getContext("2d");
|
|
|
|
|
}
|
|
|
|
|
window.addEventListener("load", Resize, false);
|
|
|
|
|
window.addEventListener("resize", Resize, false);
|
|
|
|
|
//Функция проверки столбцов процесса
|
|
|
|
|
but1.onclick = function () {
|
|
|
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
|
|
|
var height = 200;
|
|
|
|
|
var width = 40;
|
|
|
|
|
if (chkRotate.checked){
|
|
|
|
|
var tmp = height;
|
|
|
|
|
height = width;
|
|
|
|
|
width = tmp;
|
|
|
|
|
}
|
|
|
|
|
for (var i = 0; ((width * (i + 1)) + (i * 5)) < (canvas.width - 1); i++) {
|
|
|
|
|
for (var j = 0; ((height * (j + 1)) + (j * 5)) < (canvas.height - 1); j++) {
|
|
|
|
|
var t = new PercentColumn(
|
|
|
|
|
(i * (width + 5)) + 0.5,
|
|
|
|
|
(j * (height + 5)) + 0.5,
|
|
|
|
|
width,
|
|
|
|
|
height);
|
|
|
|
|
if (!chkData.checked)
|
|
|
|
|
t.Color(getRColor());
|
|
|
|
|
t.Percent(Math.random() * 101);
|
|
|
|
|
t.Rotate(chkRotate.checked);
|
|
|
|
|
t.Print(ctx);
|
|
|
|
|
if (chkText.checked)
|
|
|
|
|
t.PrintText(ctx);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//Функция проверки столбцов статусов
|
|
|
|
|
but2.onclick = function () {
|
|
|
|
|
var y = 200;
|
|
|
|
|
var x = 40;
|
|
|
|
|
var count = Math.floor(Math.random() * 6 + 2);
|
|
|
|
|
var arrPoint = [];
|
|
|
|
|
var arrColor = [];
|
|
|
|
|
for(var i = 0; i < count; i++){
|
|
|
|
|
arrPoint.push(Math.random() * 5 + 1);
|
|
|
|
|
arrColor.push(getRColor());
|
|
|
|
|
}
|
|
|
|
|
if (chkData.checked){
|
|
|
|
|
y = y * 2;
|
|
|
|
|
}
|
|
|
|
|
if (chkRotate.checked){
|
|
|
|
|
var tmp = y;
|
|
|
|
|
y = x;
|
|
|
|
|
x = tmp;
|
|
|
|
|
}
|
|
|
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
|
|
|
for (var i = 0; ((x * (i + 1)) + (i * 5)) < (canvas.width - 1); i++) {
|
|
|
|
|
for (var j = 0; ((y * (j + 1)) + (j * 5)) < (canvas.height - 1); j++) {
|
|
|
|
|
var t = new ProcessColumn(
|
|
|
|
|
(i * (x + 5)) + 0.5,
|
|
|
|
|
(j * (y + 5)) + 0.5,
|
|
|
|
|
x, y);
|
|
|
|
|
t.Rotate(chkRotate.checked);
|
|
|
|
|
if (chkData.checked)
|
|
|
|
|
t.BuildDefault();
|
|
|
|
|
else
|
|
|
|
|
for (var k = 0; k < count; k++)
|
|
|
|
|
t.AddRStat(k, arrPoint[k], arrColor[k]);
|
2021-05-18 09:14:14 +05:00
|
|
|
|
t.Status(Math.floor(Math.random() * (t.StatCount() + 1) - 1));
|
2021-05-17 23:38:10 +05:00
|
|
|
|
t.Percent(Math.random() * 101);
|
|
|
|
|
t.Print(ctx);
|
|
|
|
|
if (chkText.checked)
|
|
|
|
|
t.PrintText(ctx);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//Функция проверки мигалки
|
|
|
|
|
but3.onclick = function () {
|
|
|
|
|
var y = 40;
|
|
|
|
|
var x = 70;
|
|
|
|
|
var count = Math.floor(Math.random() * 5 + 1);
|
|
|
|
|
var arrColor = [];
|
|
|
|
|
for (var i = 0; i < count; i++)
|
|
|
|
|
arrColor.push(getRColor());
|
|
|
|
|
if (chkRotate.checked) {
|
|
|
|
|
var tmp = y;
|
|
|
|
|
y = x;
|
|
|
|
|
x = tmp;
|
|
|
|
|
}
|
|
|
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
|
|
|
for (var i = 0; ((x * (i + 1)) + (i * 5)) < (canvas.width - 1); i++) {
|
|
|
|
|
for (var j = 0; ((y * (j + 1)) + (j * 5)) < (canvas.height - 1); j++) {
|
|
|
|
|
var t = new BlinkStatus(
|
|
|
|
|
(i * (x + 5)) + 0.5,
|
|
|
|
|
(j * (y + 5)) + 0.5,
|
|
|
|
|
x, y);
|
|
|
|
|
t.Rotate(chkRotate.checked);
|
|
|
|
|
if (chkData.checked)
|
|
|
|
|
t.BuildDefault();
|
|
|
|
|
else
|
|
|
|
|
for (var k = 0; k < count; k++)
|
|
|
|
|
t.AddStatus(k, arrColor[k]);
|
|
|
|
|
t.Status(Math.floor(Math.random() * (t.StatCount() + 1) - 1));
|
|
|
|
|
t.Print(ctx);
|
|
|
|
|
if (chkText.checked)
|
|
|
|
|
t.PrintText(ctx);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//Функция проверки номера
|
|
|
|
|
but4.onclick = function () {
|
|
|
|
|
var y = 40;
|
|
|
|
|
var x = 70;
|
|
|
|
|
var num = 0;
|
|
|
|
|
if (chkRotate.checked) {
|
|
|
|
|
var tmp = y;
|
|
|
|
|
y = x;
|
|
|
|
|
x = tmp;
|
|
|
|
|
}
|
|
|
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
|
|
|
for (var i = 0; ((y * (i + 1)) + (i * 5)) < (canvas.height - 1); i++) {
|
|
|
|
|
for (var j = 0; ((x * (j + 1)) + (j * 5)) < (canvas.width - 1); j++) {
|
|
|
|
|
var t = new NumberColumn(
|
|
|
|
|
(j * (x + 5)) + 0.5,
|
|
|
|
|
(i * (y + 5)) + 0.5,
|
|
|
|
|
x, y, num++);
|
|
|
|
|
t.Rotate(chkRotate.checked);
|
|
|
|
|
t.Prostoy(Math.floor(Math.random() * 2) == 1);
|
|
|
|
|
t.Print(ctx);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//Переменные для диаграммы
|
|
|
|
|
var cycle;
|
|
|
|
|
var diagTest;
|
|
|
|
|
//Функция цикла
|
|
|
|
|
function cycle_print() {
|
|
|
|
|
diagTest.RectParam(0.5, 0.5, canvas.width - 1, canvas.height - 1)
|
|
|
|
|
diagTest.Print(ctx);
|
|
|
|
|
if (chkText.checked)
|
|
|
|
|
diagTest.PrintText(ctx);
|
|
|
|
|
if (diagTest.Cycle())
|
|
|
|
|
cycle = setTimeout(cycle_print, 1000);
|
|
|
|
|
}
|
|
|
|
|
but5.onclick = function () {
|
|
|
|
|
var chkDate = true;
|
|
|
|
|
|
|
|
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
|
|
|
diagTest = new Diagram(0.5, 0.5, canvas.width - 1, canvas.height - 1);
|
|
|
|
|
if (chkData.checked) {
|
|
|
|
|
diagTest.BuildDefault();
|
|
|
|
|
for (var i = 0; i < diagTest.ProcCount(); i++) {
|
|
|
|
|
diagTest.ChangeStatProc(i,
|
|
|
|
|
Math.floor(Math.random() * 11),
|
|
|
|
|
Math.floor(Math.random() * 101));
|
|
|
|
|
diagTest.ChangeStatBlink(i, Math.floor(Math.random() * 5 - 1));
|
|
|
|
|
diagTest.ChangeStatNumb(i, Math.floor(Math.random() * 2) == 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var countStove = Math.floor(Math.random() * 20 + 30);
|
|
|
|
|
var countProc = Math.floor(Math.random() * 9 + 1);
|
|
|
|
|
var countBlink = Math.floor(Math.random() * 4 + 1);
|
|
|
|
|
|
|
|
|
|
var colorProc = [];
|
|
|
|
|
for (var i = 0; i < countProc; i++)
|
|
|
|
|
colorProc.push(getRColor());
|
|
|
|
|
|
|
|
|
|
var pointProc = [];
|
|
|
|
|
for (var i = 0; i < countProc; i++)
|
|
|
|
|
pointProc.push(Math.random() * 10);
|
|
|
|
|
|
|
|
|
|
var colorBlink = [];
|
|
|
|
|
for (var i = 0; i < countBlink; i++)
|
|
|
|
|
colorBlink.push(getRColor());
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < countStove; i++) {
|
|
|
|
|
var tP = new ProcessColumn(0, 0, 0, 0);
|
|
|
|
|
for (var k = 0; k < countProc; k++)
|
|
|
|
|
tP.AddRStat(k, pointProc[k], colorProc[k]);
|
|
|
|
|
tP.Status(Math.floor(Math.random() * countProc));
|
|
|
|
|
tP.Percent(Math.floor(Math.random() * 101));
|
|
|
|
|
|
|
|
|
|
var tB = new BlinkStatus(0, 0, 0, 0);
|
|
|
|
|
for (var k = 0; k < countBlink; k++)
|
|
|
|
|
tB.AddStatus(k, colorBlink[k]);
|
|
|
|
|
tB.Status(Math.floor(Math.random() * (countBlink + 1) -1));
|
|
|
|
|
|
|
|
|
|
var tN = new NumberColumn(0, 0, 0, 0, i + 1);
|
|
|
|
|
tN.Prostoy(Math.floor(Math.random() * 2) == 1);
|
|
|
|
|
|
|
|
|
|
diagTest.AddProc(i, tP, tB, tN);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
diagTest.Rotate(chkRotate.checked);
|
|
|
|
|
|
|
|
|
|
if (chkloop.checked) {
|
|
|
|
|
for (var i = 0; i < diagTest.ProcCount(); i++) {
|
|
|
|
|
var dStart = new Date();
|
|
|
|
|
var dEnd = new Date();
|
|
|
|
|
dStart.setSeconds(dStart.getSeconds() + Math.floor(Math.random() * 61 - 50));
|
|
|
|
|
dEnd.setSeconds(dEnd.getSeconds() + Math.floor(Math.random() * 61 - 10));
|
|
|
|
|
diagTest.StartDate(i, dStart);
|
|
|
|
|
diagTest.EndDate(i, dEnd);
|
|
|
|
|
}
|
|
|
|
|
diagTest.Cycle(true);
|
|
|
|
|
cycle_print();
|
|
|
|
|
} else {
|
|
|
|
|
diagTest.Print(ctx);
|
|
|
|
|
if (chkText.checked)
|
|
|
|
|
diagTest.PrintText(ctx);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var btn6CycleSend;
|
|
|
|
|
but6.onclick = function () {
|
|
|
|
|
var xhr = new XMLHttpRequest();
|
|
|
|
|
//xhr.withCredentials = true;
|
|
|
|
|
xhr.open('POST', 'http://127.0.0.1:65041/currcycles', true);
|
|
|
|
|
xhr.send();
|
|
|
|
|
|
|
|
|
|
xhr.onreadystatechange = function () {
|
|
|
|
|
if (xhr.readyState != 4) return;
|
|
|
|
|
if (xhr.status != 200) {
|
|
|
|
|
alert(xhr.status + ': ' + xhr.statusText);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
PrintDiagram(xhr.responseText);
|
|
|
|
|
if (chkloop.checked) {
|
|
|
|
|
btn6CycleSend = setTimeout(but6.onclick, 60000);
|
|
|
|
|
but6.disabled = true;
|
|
|
|
|
} else {
|
|
|
|
|
but6.disabled = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PrintDiagram(pechstatus) {
|
|
|
|
|
var Pech = JSON.parse(pechstatus);
|
|
|
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
|
|
|
var t = new Diagram(0.5, 0.5, canvas.width - 1, canvas.height - 1);
|
|
|
|
|
t.BuildDefault();
|
|
|
|
|
t.Rotate(chkRotate.checked);
|
|
|
|
|
|
|
|
|
|
for (var key in Pech.data) {
|
|
|
|
|
var idx = Pech.data[key].vdp - 1;
|
|
|
|
|
var s = -1;
|
|
|
|
|
var b = -1;
|
|
|
|
|
switch (Pech.data[key].cycle) {
|
|
|
|
|
case 0: s = 0; b = -1; break;
|
|
|
|
|
case 1: s = 0; b = 1; break;
|
|
|
|
|
case 2: s = 1; b = 0; break;
|
|
|
|
|
case 5: s = 2; b = 0; break;
|
|
|
|
|
case 6: s = 3; b = 0; break;
|
|
|
|
|
case 7: s = 4; b = 0; break;
|
|
|
|
|
case 8: s = 5; b = 3; break;
|
|
|
|
|
case 9: s = 6; b = 3; break;
|
|
|
|
|
case 10: s = 7; b = 3; break;
|
|
|
|
|
case 11: s = 8; b = 3; break;
|
|
|
|
|
case 12: s = 9; b = 3; break;
|
|
|
|
|
case 14: s = 1; b = 1; break;
|
|
|
|
|
case 15: s = 2; b = 1; break;
|
|
|
|
|
case 16: s = 3; b = 1; break;
|
|
|
|
|
default: s = 0; b = -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
t.ChangeStatProc(idx, s, 0);
|
|
|
|
|
t.ChangeStatBlink(idx, b);
|
|
|
|
|
t.StartDate(idx, new Date(Pech.data[key].factStart));
|
|
|
|
|
t.EndDate(idx, new Date(Pech.data[key].thinkEnd));
|
|
|
|
|
}
|
|
|
|
|
t.Print(ctx);
|
|
|
|
|
if (chkText.checked)
|
|
|
|
|
t.PrintText(ctx);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getRColor() {
|
|
|
|
|
var letters = '0123456789ABCDEF';
|
|
|
|
|
var color = '#';
|
|
|
|
|
for (var i = 0; i < 6; i++) {
|
|
|
|
|
color += letters[Math.floor(Math.random() * 16)];
|
|
|
|
|
}
|
|
|
|
|
return color;
|
|
|
|
|
}
|
|
|
|
|
|