72 lines
2.5 KiB
JavaScript
72 lines
2.5 KiB
JavaScript
|
function NumberColumn(x, y, w, h, number) {
|
|||
|
//Основной прямоугольник
|
|||
|
var rAll = new Rectangle(x, y, w, h);
|
|||
|
//Текущий статус по простою
|
|||
|
var prostoy = false;
|
|||
|
/*Проценты поднимаются снизу вверх (false)
|
|||
|
*или слева направо (true)*/
|
|||
|
var rotate = false;
|
|||
|
/*Функции для работы с координатами
|
|||
|
* основного прямоугольника */
|
|||
|
this.X = function (val) {
|
|||
|
if (val === undefined) return rAll().X();
|
|||
|
rAll().X(val);
|
|||
|
};
|
|||
|
this.Y = function (val) {
|
|||
|
if (val === undefined) return rAll().Y();
|
|||
|
rAll().Y(val);
|
|||
|
};
|
|||
|
this.W = function (val) {
|
|||
|
if (val === undefined) return rAll().W();
|
|||
|
rAll().W(val);
|
|||
|
};
|
|||
|
this.H = function (val) {
|
|||
|
if (val === undefined) return rAll().H();
|
|||
|
rAll().H(val);
|
|||
|
};
|
|||
|
//Функция изменения начальной координаты и размеров прямоугольника
|
|||
|
this.RectParam = function (_x, _y, _w, _h) {
|
|||
|
rAll.RectParam(_x, _y, _w, _h);
|
|||
|
};
|
|||
|
//Функция изменения прямоугольника по другому прямоугольнику
|
|||
|
this.Rect = function (val) {
|
|||
|
if (val === undefined) return rAll;
|
|||
|
rAll.Rect(val);
|
|||
|
};
|
|||
|
//Функция установки номера
|
|||
|
this.Number = function (val) {
|
|||
|
if (val === undefined) return number;
|
|||
|
var v = parseInt(val);
|
|||
|
number = (isNaN(v) || v < 0) ? 0 : v;
|
|||
|
};
|
|||
|
this.Number(number);
|
|||
|
//Функция установки статуса по простою
|
|||
|
this.Prostoy = function (val) {
|
|||
|
if (val === undefined) return prostoy;
|
|||
|
prostoy = (typeof val === 'boolean') ? val : false;
|
|||
|
};
|
|||
|
//Изменение направления отрисовки текста
|
|||
|
this.Rotate = function (val) {
|
|||
|
if (val === undefined) return rotate;
|
|||
|
rotate = (typeof val === 'boolean') ? val : false;
|
|||
|
};
|
|||
|
//Печать номера
|
|||
|
this.Print = function (ctx) {
|
|||
|
ctx.fillStyle = (!prostoy) ? '#ff0' : '#ff8000';
|
|||
|
ctx.fillRect(rAll.X(), rAll.Y(), rAll.W(), rAll.H());
|
|||
|
ctx.strokeStyle = '#000';//'#333'
|
|||
|
ctx.strokeRect(rAll.X(), rAll.Y(), rAll.W(), rAll.H());
|
|||
|
ctx.save();
|
|||
|
ctx.translate(rAll.X() + rAll.W() / 2, rAll.Y() + rAll.H() / 2);
|
|||
|
if (rotate) ctx.rotate(3 * Math.PI / 2);
|
|||
|
ctx.fillStyle = '#000';
|
|||
|
ctx.textAlign = 'center';
|
|||
|
ctx.textBaseline = 'middle';
|
|||
|
var px = rAll.H() < rAll.W() ? rAll.H() - 3 : rAll.W() - 3;
|
|||
|
px = px < 0 ? 0 : px;
|
|||
|
ctx.font = px + 'px Arial';
|
|||
|
ctx.fillText(number, 0, 0);
|
|||
|
ctx.restore();
|
|||
|
};
|
|||
|
}
|